Introduction:

Makes chatbot menu options configurable so it can easy to maintain without a dev engineer. So we can add/edit existing menu options. It has the following advantages:

Problem statement:

As a solution owner, I would want to deploy menu options faster without having to depend on a release on both portal and WhatsApp with the following details -

  1. Able to change the text

  2. Able to change the menu options (Add/edit/remove)

  3. Able to create new flows/structure such as introducing new menu options which are not there

  4. Able to change answers to queries

  5. Able to add/edit/remove hyperlinks

  6. Able to analyze the data after changes

Key Design Problems:

  1. How to upload a local file to blob storage.

  2. Versioning and rollback for files.

  3. Secure (Only authorized users can access)

Design solutions:

Solution 1:

Using Jenkins job where we can upload a file while build and deploy of the job.

Download and upload files from blob through Jenkins with the following process

Pros:

(plus) Easy to maintain, add, and modify any time Menu options and query answers just by uploading the JSON object.

(plus) We can keep/maintaining all versions of files.

(plus) It will help to revert back to the old version of files if something went wrong with the new version of files.

(plus) It's secure since the only authorized user can upload and download.

Solution 2:

Create a separate application for accessing and modifying the file.
User onboard via API(backend)
Share credentials with user

For creating the files in a blob it requires azure services keys.

Pros:

(plus) Easy to create and update config JSON using API’s

Create
{{host}}/chatbot/config/create
Update
{{host}}/chatbot/config/update

(plus) For every new update, it will create a new file with a version number.

(plus) Easy to roll back to the older version.

(plus) Since it is a login based app so only an authorized person only can do.

Chatbot download/update configurations and build process:

Enable load and execute config from AZURE container for a chatbot.