Skip to content

Files

This branch is 745 commits ahead of, 3404 commits behind microsoft/BotBuilder-Samples:main.

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Sep 27, 2018
Sep 27, 2018
Sep 27, 2018
Sep 27, 2018
Sep 27, 2018
Sep 27, 2018
Sep 27, 2018
Sep 27, 2018
Sep 27, 2018
Sep 27, 2018
Sep 27, 2018
Sep 27, 2018
Oct 4, 2018
Sep 27, 2018
Sep 27, 2018

Contoso cafe bot is a complete and fairly sophisticated sample that demonstrates various parts of the BotBuilder V4 SDK and BotBuilder CLI tools in action.

This sample relies on prior knowledge/ familiarity with the following tools and services

Concepts covered in this sample

Contoso cafe bot is a fairly sophisticated bot sample that uses the following concepts in the BotBuilder V4 SDK and BotBuilder CLI tools -

Scenarios demonstrated

  • Welcoming users
  • Using cards to interact with users
  • Using suggested actions to solicit user input
  • Single and multi-turn conversations with users
  • Interruptable, multi-turn conversations
  • Support for help and cancel
  • FAQ
  • Chit-chat conversations
  • Routing user input to appropriate dialog
  • Handling no-match
  • Prompting users for information
  • Implementing a custom prompt
  • Multi-turn conversations using dialogs
  • Implementing custom dialog solution
  • Managing user and conversation state

Services and tools demonstrated

  • Using LUIS for Natural Language Processing
  • Using QnA Maker for FAQ, chit-chat, getting help and other single-turn conversations
  • Using BotBuilder CLI tools to create, configure and manage all required services.

Scenarios covered via other samples

To try this sample

  • Clone the samples repository
git clone https://github.com/Microsoft/botbuilder-samples.git

Visual Studio

  • Navigate to the samples folder (botbuilder-samples/samples/csharp_dotnetcore/51.cafe-bot) and open CafeBot.csproj in Visual Studio.
  • Press F5.

Visual Studio Code

  • Open botbuilder-samples/samples/csharp_dotnetcore/51.cafe-bot sample folder.
  • Bring up a terminal, navigate to botbuilder-samples/samples/csharp_dotnetcore/51.cafe-bot folder.
  • Type 'dotnet run'.

Testing the bot using Bot Framework Emulator

Microsoft 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 from here

Connect to bot using Bot Framework Emulator V4

  • Launch Bot Framework Emulator
  • File -> Open Bot Configuration and navigate to botbuilder-samples/samples/csharp_dotnetcore/51.cafe-bot
  • Select CafeBot.bot

Prerequisites

Install CLI tools

  • Install Node.js
  • In a terminal
  • Install required tools
    npm i -g msbot chatdown ludown luis-cli qnamaker 

Configure required services

  1. Follow instructions here to create an Azure account. If you already have an account, sign in. Click on all services -> search for 'subscriptions' -> copy the subscription ID you would like to use from the Home > Subscriptions page.
  2. Follow instructions here to create a LUIS.ai account. If you already have an account, sign in. Click on your name on top right corner of the screen -> settings and grab your authoring key.
  3. To create and configure required LUIS and QnA Maker services,
    • In a Powershell prompt,
cd BotBuilder-Samples\samples\csharp_dotnetcore\51.cafe-bot
- To login, run:
Connect-AzureRmAccount
- To select your Azure subscription, run:
Select-AzureRmSubscription -Subscription "<YOUR SUBSCRIPTION>"
az account set --subscription "<YOUR SUBSCRIPTION>"
- Run MSbot Clone and pass in your LUIS authoring key and Azure subscription ID. This command will create required services for your bot and update the .bot file.
msbot clone --name <YOUR-BOT-NAME> --folder DeploymentScripts/msbotClone --location <Bot service location, ie "westus"> --luisAuthoringKey <YOUR LUIS AUTHORING KEY>

Optionally, you can use the LUIS, QnA Maker portals to manually import the models found under CognitiveModels folder of this sample.

Relevant commands for CLI tools

Building and creating services

  • Parse .lu files into LUIS models
    > ludown parse toluis --in Dialogs/Dispatcher/Resources/cafeDispatchModel.lu -o cognitiveModels -n cafeDispatchModel --out cafeDispatchModel.luis
    > ludown parse toluis --in Dialogs/BookTable/Resources/turn-N.lu -o cognitiveModels -n cafeBotBookTableTurnNModel --out cafeBotBookTableTurnN.luis
    > ludown parse toluis --in Dialogs/WhoAreYou/Resources/getUserProfile.lu -o cognitiveModels -n getUserProfile --out getUserProfile.luis
  • Parse .lu files into QnA Maker KB and QnA Maker alterations file
    > ludown parse toqna --in Dialogs/Dispatcher/Resources/cafeFAQ_ChitChat.lu -o cognitiveModels -n

cafeFaqChitChat --out cafeFaqChitChat.qna -a ```

  • Import LUIS applications (Note: You don't need this if you have already run MSBOT clone)

    > luis import application --in CognitiveModels/cafeDispatchModel.luis --authoringKey <Your LUIS authoring key> --region <LUIS-Authoring-Region> --msbot | msbot connect luis --stdin
    > luis import application --in CognitiveModels/cafeBotBookTableTurnN.luis --authoringKey <Your LUIS authoring key> --region <LUIS-Authoring-Region> --msbot | msbot connect luis --stdin
    > luis import application --in CgnitiveModels/getUserProfile.luis --authoringKey <Your LUIS authoring key> --region <LUIS-Authoring-Region> --msbot | msbot connect luis --stdin

    Note: LUIS authoring region can be one of westus or westeurope or australiaeast

  • Import QnA Maker KBs (Note: You don't need this if you have already run MSBOT clone)

    > qnamaker create kb --in CognitiveModels/cafeFaqChitChat.qna --subscriptionKey <YOUR QnA Maker Subscription Key> --msbot | msbot connect qna --stdin

    Note: See here for instructions on setting up a Cognitive Service API account and fetching your QnA Maker subscription Key.

Train and publish LUIS models

  • Training a LUIS model
    > msbot get cafeDispatchModel | luis train version --wait --stdin
    > msbot get cafeBotBookTableTurnNModel | luis train version --wait --stdin
    > msbot get getUserProfile | luis train version --wait --stdin
  • Publishing a LUIS model
    > msbot get cafeDispatchModel | luis publish version --stdin
    > msbot get cafeBotBookTableTurnNModel | luis publish version --stdin
    > msbot get getUserProfile | luis publish version --stdin

Train and publish QnA Maker applications

  • Train and publish KB
    > msbot get cafeFaqChitChat | qnamaker publish kb --stdin
  • Replace QnA Maker alterations
    > msbot get cafeFaqChitChat | qnamaker replace alterations --in CognitiveModels/cafeFaqChitChat.qna_Alterations.json --stdin

Updating and publishing LUIS models

  • Rename current LUIS version
    > msbot get cafeDispatchModel | luis rename version --newVersionId 0.1_old --stdin
  • Import a LUIS application version
    > msbot get cafeDispatchModel | luis import version --stdin --in CognitiveModels/cafeDispatchModel.luis
  • Deleting old LUIS application version
    > msbot get cafeDispatchModel | luis delete version --stdin --versionId 0.1_old

Updating and publishing QnA Maker KB

  • Replace KB contents
    > msbot get cafeFaqChitChat | qnamaker replace kb --in CognitiveModels/cafeFaqChitChat.qna --stdin