Does a ChatBot built using QnA Maker API require Virtual Machine - botframework

While calculating the pricing for deploying a chatbot developed using QnA Maker, i am supposed to select the App Service Plan.
https://azure.microsoft.com/en-in/pricing/calculator/
In the App Service section I am supposed to enter the following details
Region, Tier, number of instances and hours.
What does the instances mean here and on what basis should i select the Tier.
Does deploying a basic QnA bot using QnA Maker API require an instance. (does the instance imply a VM instance).
Currently, the limit is a 20-MB knowledge base used by QnA Maker.
Thank you.

Back to definitions
There are 2 different things here:
Your bot
QnAMaker
In fact you are not "deploying a bot developed using QnAMaker", you are "deploying a bot developed with Microsoft Bot Framework and using QnAMaker".
Your bot is a web API, with a simple endpoint ("xxx/api/messages") accepting POST requests and which will be used by the bot connector. Then on some cases it's calling QnAMaker but this call is a bit hidden if you use QnAMakerDialog in C# for example.
Hosting / Costs
To host a Web API in Azure (called an App Service), you will need an App Service Plan. There are different levels of Azure App Service Plan, depending on your needs:
You just need to select the one corresponding to your needs, no other actions are necessary (what is behind (VMs...) is not your purpose).
For example if you just want to demonstrate the use of a bot with QnAMaker, a Free App Service Plan is enough.
For the QnAMaker part, it's only calls of your QnAMaker project in background. Your project is exposed through the web on an URL. The use of QnAMaker is free, at the time of writing this reply (it's still a preview)
Last (but not least), there can be an additional cost depending on the channels you will be using to expose your bot. See Azure calculator for bot service for that: https://azure.microsoft.com/en-us/pricing/details/bot-service/

Related

How to deploy a Question Answering BERT Model as a chat bot on MS Teams

I have a Text2SQL model (EditSQL: https://github.com/ryanzhumich/editsql) which I have configured to take a sentence as input and return a SQL query as output.
Now, I want to deploy this program as a chat bot application in Microsoft Teams.
I understand there's Microsoft bot framework that enables publishing a bot and the 3 options are described here.
https://learn.microsoft.com/en-us/learn/modules/choose-bot-building-tool/
However, I am not finding any of them suitable for my use case since I need to deploy a Question-Answering Bot where the Questions from users need to be sent to an external server like AWS and the response from AWS (could be an excel file) needs to be sent back to the user. Multiple questions can be the part of a conversation, so the chat client should be able to mark start and end of a conversation.
My problem:
What are the basic steps of exposing a ml model via a server so that it can be queried in production.
What are the tools that will allow me to make a client on Teams and a server for this model on AWS?
Please let me know if I should add more information on this.
Thanks
As you've seen, there are a bunch of tools/approaches to creating bots in the Microsoft world, for Teams or otherwise. Underneath, these all use the Bot Framework, but you can develop directly (i.e. write code), or use a higher-level tool like Bot Framework Composer - the choice is yours depending on your own internal skills. If you want to work with code directly, here are a bunch of bot samples, in multiple languages: https://github.com/microsoft/BotBuilder-Samples/tree/main/samples . For isntance, here is an example of integrating the Microsoft QnAMaker service into your bot: https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/python/49.qnamaker-all-features
Basically, if you go the development approach, your bot is just a web service. Once it receives the message, it can call out to any other service behind the scenes. That means it can receive a message, call out to an AWS service, receive the response, and send a reply to the user.
For multiple questions as part of a 'set' of chats, Bot Framework provides an idea called "dialogs" that should work for you.

Integrating Microsoft Web Chat without using Azure Bot Service

I am currently looking at using Microsoft Web Chat to interact with my existing Node Js application built on MS Bot Framework Core but uses DialogFlow as NLU.
Current implementation: Web Page -> Custom UI Widget -> Connects to Node.js app built on MS Botframework Core -> Queries DialogFlow NLU to identify Intent -> Node.js app constructs the Dialog -> Gives response to user.
Looking at the Web Chat component, I cannot find references using any other NLU except Azure Bot Service. Is it mandatory to use Azure Bot Service/LUIS NLU to integrate with Web Chat?
I have also looked at offline-directline npm module but the last dev on the module is more than 3 years ago.
Firstly, responding with a quick message about using offline-directline, you should feel reasonably comfortable with it. It is a few years old, but seems to stand the test of time with continued use and little in the way of issues that I have heard.
Another option would be to use a 'browser bot'. In this scenario, the bot is contained within the hosting page's html/scripts. So, there is no reliance on using Direct Line. I don't know your whole setup, so this may or may not align with your overall needs and architecture.
As for using Web Chat with something other than the Azure Bot Service, this would be an uphill battle. In theory, this is probably achievable to some degree. The issue is that Web Chat is heavily integrated with the BotFramework-DirectLineJS library. You might be able to cherry pick specific components from Web Chat, replace the Direct Line library with a make of your own, and modify the remaining code to work with your 'service'. But, I'm not certain the effort is worth it. That is something you would have to decide for yourself.
If you do go this direction, you will likely need to configure your 'service' to send messages that conform to the BotFramework schemas when communicating with Web Chat. Even without the dependency on Direct Line for connecting to the service, much of Web Chat is still oriented towards what an incoming message looks like (i.e. a BotFramework Activity) and handling it according to the properties it contains.
To start, here are a few areas you should review in order to correctly configure you service to handle inbound and outbound messages going to and coming from Web Chat:
BotFramework Activity schema
BotFramework Card schema
BotFramework Transcript schema
Web Chat's Activity, Card, Attachments, etc. Types - at present, these are loosely defined. I would expect that to change at some point in the future which may prove to be a changing break in your specific scenario.
This is not exhaustive and would require greater research as there are likely other considerations than the few I've listed above. But, again, this may not be necessary if you decide to utilize offline-directline.

What's the difference between Azure Bot Service and QnA Maker Knowledge Base?

I don't understand the difference here, but there must be one. With the Azure QnA Maker, I can create a list of questions and interact with the Knowledge Base via an API and get answers back. What additional features does the Bot Service offer?
QnA service can only retrieve answers from the Knowledgebase, nothing else. You can think it as a fancier Database, you can query it using human language.
Bot Service is the application layer, you can build other business logic in this layer to make your Bot looks smarter. e.g. User asks "What's the weather tomorrow", when your bot service receives this message, you can call the weather API to get the weather, instead of forwarding the question to the QnA service. The bot service also provides interfaces to integrate with different chat channels like Teams, Slack, etc.
Of course, you can do much more in the bot service based on your own business needs. If your bot is solely used for QnA, this layer indeed will seem to be a thin layer wrapper.
The Azure Bot service is just a bot managing SaaS which offers multiple things like ability to automatically push you bot onto multiple channels(teams, slack, facebook etc.) without needing to code the adaptors. It also offers other services like hosting your bot onto the Azure cloud servers and other services like LUIS (Microsoft's NLU), QnA maker, speech service etc.
The web channels adaptor is mostly free which the bot hosting and other services are paid

How to do a performance Testing with MS Botframework

We have created a bot which uses Luis to address user queries. Would like to understand how can we perform a performance testing to my bot which can be like a VSTS testing. Yes tried with VSTS also but of no use, since my bot api is always sending a request and response couldn't capture the exact one. Please help.
I'm not sure if you are using Azure bot service directly or the other way. Considering if you are using the Azure Bot Service following are the steps to configure performance test.
You can do performance test using Azure Bot Service from continuous integration tab
Select the team services account, subscription and location.
You can track the build and errors using Azure App insights
Let me know if you are looking for anything else.
Regards
-Jyo

Difference between Microsoft Bot Framework and Azure Bot Service?

I want to create a bot, but I am confused what is exactly Bot Framework and Azure Bot service? Can anyone explain in detail?
The best way to understand the difference is going through the docs. The Azure Bot Service documentation is available here.
In a nutshell, Azure Bot Service provides a set of templates to get started with the creation of Bots and accelerate the development since it provides an integrated environment. Of course, the templates that it creates are based on the BotFramework. With Azure Bot Service, you can even code your bot directly from the Azure Portal Editor, from the comfort of your browser.
If you don't want to start with Azure right way, and want to develop your Bot locally first, etc, you might want to use the BotFramework builder bits; but as I said; once you se Azure Bot Service, you are able to download the generated bot and continue the development from your machine if you want.
Admittedly you asked your question a year and a half ago, but in early 2018 it seems as though Microsoft uses the two terms interchangeably for one product.
Take, for example the documentation link from the bot framework home page, the title of this page is Bot Service Documentation:
https://learn.microsoft.com/en-us/bot-framework/
Also, in the Azure pricing calculator only Azure Bot Service is listed (under both "Analytics" and "AI + Machine Learning"). "Azure Bot Service" is what appears on the invoice.
Finally, when you go to create a new resource and search for "bot" the only related items that you will see are for Azure Bot Service, there is no mention of Azure Bot Framework there either.
Bot Framework - is comprised of an open-source SDK and tools for end-to-end bot development.
Azure Bot Services - a cloud platform that hosts bots, helps you manage, connect, and deploy your bot across devices and popular channels
Bot Framework Service - a component of Azure Bot Service, that responsible to sending the info between the app and the channel
Microsoft Bot Service SDK

Resources