I’ve taken a look at using node.js and Python to create a chat bot in the past but never really progressed the idea, mainly because my website doesn’t currently need a chat bot. However after completing my recent project around text sentiment using Azure cognitive services I thought I would take another look at a chat bot, especially as Microsoft offer a training module on the subject.
This project requires an Azure subscription. If, like me, money is a little tight then consider the free trail subscription. I’ve been using the free subscription for my projects and although its nearly over it has allowed me to play / learn more about Azure.
The type of chat bot I’m creating today is a FAQ (Frequently Asked Questions) chat bot and it is build using Microsoft’s QnA Maker. This type of chat bot is generally but on websites and used to answer customer questions that would have been (or may still be) held in FAQ. I see it like an interactive search function.
The QnA Maker can be found at: https://www.qnamaker.ai/ , open it up and login using your Azure account.

At the top of the QnA Maker page is an option to “Create a knowledge base” , which is aptly named as it is where our knowledge base (KB) is created. Step 1 is to create the QnA service in Azure.

The Azure settings may seem a little daunting, especially when subscription pricing is mentioned. For it’s creation the following is needed:
- A unique name
- A subscription (Free Trial if your going the free route)
- A pricing tier (F0 if using the free trial)
- A location close to you
- A resource group (I’m using the same group as my text sentiment Twitter bot)
- A search location; try to keep it the same as the location you chose above
- A unique app name; a green tick will confirm if the app name is unique

With all those details in, click deploy and give Azure a few minutes to complete the deployment. Then reopen the QnA “Create a knowledge base” page and chose the appropriate drop down settings to connect your QnA service to your knowledge base.

Step 3 is giving the QnA knowledge base a name, make it something relevant and remember it can be changed later on if needed.
Step 4 is populating the knowledge base with a URL or file (.pdf, .docx, .xlsx). The format for the URL / file should be:
Question with a question mark (?) at the end.
Answer.
e.g.
Which is the best website for geeky tech stuff?
The best website is geektechstuff.com as it provides lots of geeky tech stuff
For the chit-chat option I would recommend reading https://docs.microsoft.com/en-us/azure/cognitive-services/qnamaker/how-to/chit-chat-knowledge-base as it gives a break down of the three types (Professional, Comic, Friend) and helps to understand the type of response you will get from each type. Choose a type (or none) and click “Create your KB“.

QnA will then allow you to test the knowledge base via a simple chat window and at the top of the page is the option to publish. Click publish and await for the success message.

Note: Make sure to record the postman / curl information as you will need it later.
With the QnA knowledge base created, open a new browser window and open the Azure Portal (https://portal.azure.com/). Click “Create a resource” on the left of the portal screen and search for “bot“.

For this Q&A / FAQ bot we will be using a “Web App Bot“. As before Azure will now ask for a unique name, a subscription model and the resource group (same as the QnA resource group) details. Azure will also ask for a SDK (I’m using version 3) and a SDK language (I’m using C#). With the rest of the setting left to default, hit create and give Azure a minute or two to create the resource.

Once the bot is created open the “Application Settings” from the bot menu and navigate down the window until you can see the options for:
- QnAAuthKey
- QnAEndpointHostName
- QnAKnowledgebaseId

These values were on the successful deployment page earlier under the “postman” option.
QnAAuthKey = Authorization EndPoint Key
QnAKnowledgebaseId = the alpha-numeric bit in the POST address, e.g. POST /knowledgebases/THIS_BIT_HERE/generateAnswer
QnAEndpointHostName = Host
With those entered make sure to press “Save” and then the Q&A / FAQ bot is ready for testing. To test, click “Overview” on the left side and then choose “Test:” and start typing.

One thought on “Creating An Azure Q&A / FAQ Chat Bot”
Comments are closed.