Most of the README is straight from the core bot sample. Skip down to section "My Notes" for additional descriptions.
Built from: Bot Framework v4 core bot sample - see dev.botframework.com.
- Use LUIS to implement core AI capabilities
- Implement a multi-turn conversation using Waterfall dialogs
- Handle user interruptions for such things as
Help
orCancel
- Prompt for and validate requests for information from the user
This sample requires prerequisites in order to run.
This bot uses LUIS, an AI based cognitive service, to implement language understanding.
-
.NET Core SDK version 2.1
# determine dotnet version dotnet --version
The LUIS model for this example can be found under CognitiveModels/Game.json
and the LUIS language model setup, training, and application configuration steps can be found here.
Once you created the LUIS model, update appsettings.json
with your LuisAppId
, LuisAPIKey
and LuisAPIHostName
.
"LuisAppId": "Your LUIS App Id",
"LuisAPIKey": "Your LUIS Subscription key here",
"LuisAPIHostName": "Your LUIS App region here (i.e: westus.api.cognitive.microsoft.com)"
-
In a terminal, navigate to
MitchBarry.Bot.GuessANumber
# change into project folder cd MitchBarry.Bot.GuessANumber
-
Run the bot from a terminal or from Visual Studio, choose option A or B.
A) From a terminal
# run the bot dotnet run
B) Or from Visual Studio
- Launch Visual Studio
- File -> Open -> Project/Solution
- Navigate to
MitchBarry.Bot.GuessANumber
folder - Select
MitchBarry.Bot.GuessANumber.csproj
file - Press
F5
to run the project
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.5.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.
- Bot Framework Documentation
- Bot Basics
- Dialogs
- Gathering Input Using Prompts
- Activity processing
- Azure Bot Service Introduction
- Azure Bot Service Documentation
- .NET Core CLI tools
- Azure CLI
- Azure Portal
- Language Understanding using LUIS
- Channels and Bot Connector Service
-
Since I built this straight from the Core Bot, it defaults to include LUIS features related to Flight Bookings, etc. I started by adding my game to the same LUIS configuration - but on the LUIS website itself - https://luis.ai (at time of writing, I used https://preview.luis.ai/).
- Since I added new entities and a new intent, I needed to update my C# class which represented my LUIS application. To do this, I used the BotFramework CLI.
- Updating with BF CLI looks like this (taken from help docs for generating new C# class here):
npm i -g @microsoft/botframework-cli bf luis:generate:cs -i Game.json -o Game.cs --className MitchBarry.Bot.GuessANumber.CognitiveModels.Game --force
- I noticed this actually broke the default extension methods provided in the Core Bot. Not a huge loss since I wasn't using the flight booking features it mostly helped with, but in the MainDialog.cs, it was used extensively. Had to make some adjustments there accordingly.
-
I at one point wanted to go backwards in my Waterfall step. The thought was, what if someone provided a Maximum number that was lower than the Minimum number? What if the user guessed the number wrong and I wanted to prompt to re-guess the number?
- I did some Stack Overflow digging and found that some older workarounds no longer worked in the v4 of Bot Framework.
- Do not go backwards with Waterfall steps! Instead, Replace the existing Dialog with a new instance of the Waterfall dialog itself, and pass along the current state. At each step, check if the state already has the value it needs at that point. If so, continue to next step in dialog automatically. This works pretty well.