Bot Framework v4 QnA Maker bot sample. This sample shows how to integrate Multiturn and Active learning in a QnA Maker bot with Java. Click here to know more about using follow-up prompts to create multiturn conversation. To know more about how to enable and use active learning, click here.
This bot has been created using Bot Framework, it shows how to create a bot that uses the QnA Maker Cognitive AI service.
The QnA Maker Service enables you to build, train and publish a simple question and answer bot based on FAQ URLs, structured documents or editorial content in minutes. In this sample, we demonstrate how to use the QnA Maker service to answer questions based on a FAQ text file used as input.
This sample is a Spring Boot app and uses the Azure CLI and azure-webapp Maven plugin to deploy to Azure.
The QnA Maker Service enables you to build, train and publish a simple question and answer bot based on FAQ URLs, structured documents or editorial content in minutes. In this sample, we demonstrate
- how to use the Active Learning to generate suggestions for knowledge base.
- how to use the Multiturn experience for the knowledge base.
- Follow instructions here to create a QnA Maker service.
- Follow instructions here to create multiturn experience.
- Follow instructions here to import and publish your newly created QnA Maker service.
- Update application.properties with your kbid (KnowledgeBase Id), endpointKey and endpointHost. You may also change the default answer by updating
DefaultAnswer
(optional) field. QnA knowledge base setup and application configuration steps can be found here. - (Optional) Follow instructions here to set up the QnA Maker CLI to deploy the model.
QnA knowledge base setup and application configuration steps can be found here.
- Create a Knowledge Base in QnAMaker Portal.
- Import "smartLightFAQ.tsv" file, in QnAMaker Portal.
- Save and Train the model.
- Create Bot from Publish page.
- Test bot with Web Chat.
- Capture values of settings like "QnAAuthKey" from "Configuration" page of created bot, in Azure Portal.
- Updated application.properties with values as needed.
- Use value of "QnAAuthKey" for setting "QnAEndpointKey".
- Capture KnowledgeBase Id, HostName and EndpointKey current published app
- Once your QnA Maker service is up and you have published the sample KB, try the following queries to trigger the Train API on the bot.
- Sample query: "light"
- You can observe that, Multiple answers are returned with high score.
- Once your QnA Maker service is up and you have published the sample KB, try the following queries to trigger the Train API on the bot.
- Sample query: "won't turn on"
- You can notice a prompt, included as part of answer to query.
- From the root of this project folder:
- Build the sample using
mvn package
- Run it by using
java -jar .\target\bot-qnamaker-all-features-sample.jar
- Build the sample using
- Goto
QnABot.java
- Modify
onTurn
function as:@Override public CompletableFuture<Void> onTurn(TurnContext turnContext) { // Teams group chat if (turnContext.getActivity().getChannelId().equals(Channels.MSTEAMS)) { turnContext.getActivity().setText(turnContext.getActivity().removeRecipientMention()); } return super.onTurn(turnContext) // Save any state changes that might have occurred during the turn. .thenCompose(turnResult -> conversationState.saveChanges(turnContext, false)) .thenCompose(saveResult -> userState.saveChanges(turnContext, false)); }
Bot Framework Emulator is a desktop application that allows bot developers to test and debug their bots on localhost or running remotely through a tunnel.
- Install the Bot Framework Emulator version 4.3.0 or greater from here
- Launch Bot Framework Emulator
- File -> Open Bot
- Enter a Bot URL of
http://localhost:3978/api/messages
To learn more about deploying a bot to Azure, see Deploy your bot to Azure for a complete list of deployment instructions.