ActionTypes class 249
activities 11
pinging 76
types 68
Activity class 46, 59–62, 67–68
ActivityExtensions class 60–62
ActivityType members 46
ActivityType.Message 46
ActivityTypes class 249
layout with containers 271–273
AddRemainingFields method 175–176
AddTieAsync method 56
AnalyzeImageAsync method 331
API Key 282
api/messages 36
Apple 6
Application ID 282
artificial intelligence (AI) 4–5, 183, 321
ASP.NET MVC Web API project 18
augmented/virtual reality (AR/VR) applications 7
Authenticate module 315
AutoFac 229
Azure
Azure Application Insights 280–283
Azure Table Storage 253
Bing
Bing channel
BotAuthentication attribute 23
Bot Builder 19
Language.GenerateTerms method 172
Bot Builder dialogs. See dialogs
Bot Connector 9, 19, 24, 25, 35
relationship changes and 72–73
state management service 47–59
Bot Emulator
ConversationUpdate Activity 73–75
Typing Activity 80
Natural Language Processing 183–202
Bot Framework Emulator
communicating with chatbot 29–30
folder and file layout 21
initial testing with emulator 26–30
Bot Framwork State Service 47–59
bots. See chatbots
Bot State Service 102, 115, 253
BrowseDialog implementation 258–263
BuildForm method 127, 153, 163, 168
Build method 178
BuildWineDialog method 131–132
C# 11
camelCase 127
CancellationTokenSource 318, 319
cancelToken parameter 318
BrowseDialog implementation 258–263
layout 261
Case 222
Chain.ContinueWith method 223–224
posting and waiting methods 223–224
Chain.ContinueWith method 223–224
ChannelId 46
Channel Inspector 289
channels 9
types of 279
chatbots
adding voice services to 345–360
caching with multiple 48
conversation and 4–5, 8, 12–13, 39–64, 73–75
creating
folder and file layout 21
initial testing with emulator 26–30
custom information storage 11
defined 3
ending conversations with 318–320
in Bot Framework 9
navigating between dialogs 204–207
pinging 76
Rock, Paper, Scissors game bot 39–45, 51–56, 60–62
sending independent messages 80–86
using voice 6
chatbotState variable 54
ChoiceStyleOptions enum 147–148
C# language 127
client-side coding
CognitiveService class 322
Cognitive Services. See Microsoft Cognitive Services
command-line applications 4
commands
configuration of FormFlow 160–161
communication 5
voice 6
Compare method 42
configuration
Visual Studio 281
ConfigureFormBuilder method 156–160
ConnectorClient class 25
console applications 4
Console channel
keeping conversation open 315–316
listening for new activities 310–314
starting a conversation 308–309
ContactRelationUpdate Activity 72–73
containers
ContinueWith method 223–224, 224
Activity state 46
criticality and 8
defined 45
designing 43
handling interruptions 226–229
identity 47
management
MessagesController class 44–45
responding to 59
starting new 86
starting, on custom channel 308–309
bot state service capabilities and organization 49–51
saving and retrieving state 47–59
stray user input and 43
text output formatting 230–232
user and chatbot identities 46–47
conversational user interface (CUI) 3, 4, 13, 39, 183
Conversation property 47
ConversationReference.json file 83–84
ConversationUpdate Activity 73–75
Conversation.UpdateContainer method 229
CreateReply method 25, 59, 232, 249
criticality 8
CUI. See conversational user interface
keeping conversation open
listening for new activities
overview
starting a conversation
customer support 339
DefaultCase 222
default.htm file 21
DeleteScoresAsync method 55
DeleteStateForUserAsync method 50
dependencies parameter 164–165
deployment
Describe attribute 133–134, 138
DetectAndTranslateAsync method 336
DetectLanguageAsync method 334
dialogs
FormFlow. See FormFlow
IDialogContext parameter 103–105
initialization and workflow 103
navigating to other dialogs 204–207
navigating via forward 207–209
keeping conversation open 315–316
listening for new activities 310–314
starting a conversation 308–309
Watermark property 307–308, 313
distributed applications 14
DoChainLoopAsync method 220–221
DoChainSwitchAsync method 220–222
Do method 224
DoneAsync method 229
duplicate messages 314
email accounts
emulator
communicating with chatbot 29–30
EndConversationAsync method 319
EndOfConversationCodes class 177–178
entities
ExtractEntities method 197
AddRemainingFields method 175–176
dynamic field definition 171–172
HasField method 175
FileService class 256
fluent interface
FormCanceledException 131
FormConfiguration class 156–160
Optional 135
Pattern 135
BuildForm method 127
choosing between IDialog<T> and 150
Build method 178
Configuration property 154–161
help options 123
input error correction 121
menu options 120
serializable 127
templates and patterns 137–150
basic templates 139
working with fields
AddRemainingFields method 175–176
dynamic field definition 171–172
HasField method 175
Frequently Asked Questions (FAQs) 339–344
From property 46
generateMessage parameter 166–167
GetAudioCardsForPreview method 265–266
GetConversationReference 84–85
GetGenres method 241
GetMessage method 59
GetPreview method 241
GET requests 98
GetScoresAsync method 53–54, 56, 79–80
GetToken method 241
GetTracks method 241
GetUserImageAsync 98
GetUserInputAsync method 318, 319
GitHub 12
Google 6
graphical user interfaces (GUI) 4–5, 12
graphical user interfaces (GUIs) 237
HandleCanceledForm method 132–133
HandleSystemMessageAsync method 116
HandleSystemMessages 24
Happy Path 237
HasField method 175
Help command 160
HttpOperationException 50
HTTP POST endpoint 22
IBotContext 104
IBotData 105
IBotDataStore<BotData> 253
IContactRelationUpdateActivity interface 72–73
IDialogContext 103–105, 177, 195
Done method 211
IDialogStack 104
choosing between FormFlow and 150
Id property 47
images
IMessageActivity 207
initialization
installation
Instrumentation Key 282
intents
interruptions
Inversion of Control (IoC) 229
IsGroup property 47
IsRequired property 274
IStateClient 54
Json.NET 97
Json.NET package 49
keep-alive messages 313
Language.GenerateTerms method 172
Language Understanding Intelligence Service (LUIS) 14, 183–202, 321
continuous model improvement 200–201
publishing model 192
training and deploying 189–192
Last-In First Out (LIFO) 203
LINQ statements 225
Linux operating systems 303
LUIS. See Language Understanding Intelligence Service
LuisIntent attribute 195
LuisResult method 197
MainAsync method 306
Material Design 6
Message class 307
Message method 127–128, 162–167
dependencies parameter 164–165
generateMessage parameter 166–167
prompt parameter 165
MessageReceivedAsync method 107–108, 115, 212, 271, 329–330
messages
duplicate 314
keep-alive 313
POST 75
MessagesController class 44–45, 57–59, 115–116, 129–132
MessagesController.cs file 21, 22
MessagesController.Post method 71–72
MicrosoftAppId 241
Microsoft App ID 36
Microsoft App password 36
MicrosoftAppPassword 241
Microsoft.Bot.Connector 19
Microsoft Bot Framework. See Bot Framework
Microsoft Cognitive Services 4–5, 6, 14, 321–344
Microsoft Direct Line SDK 303, 308
multi-cultural communication 332–339
Music Bot
FileService class 256
PlaylistDialog 244–245, 263–265
RootMenuItem 248
naming conventions 127
natural language processing (NLP) 4, 14
Natural Language Processing (NLP) 183–202, 321
navigation
.NET Framework 310
NLP. See Natural Language Processing
OnCompletion method 127–128, 176–178
Optional attribute 135
out-of-band communication 226–229
PascalCase 127
Pattern attribute 135
pattern language
Ping Activity 76
platform independence
PlaylistDialog
PlayList enum 43
PlayScore class 53
polling 310
port numbers 45
PostAsync method 177
POST messages 75
Post method 22, 23, 24, 44, 51, 57, 61, 71–72, 76, 130, 179, 204, 213, 218, 335, 347
PostToChain method 221
PostToUser method 222
Program class 304
programming languages 11
PromptAsync method 347
Prompt attribute 135–136, 138, 139, 165
PromptAttribute 159
Number method 110
PromptDialog method 207
PromptOptions 353
promptOptions parameter 108
prompt parameter 165
QnA maker 339
Rating property 164
ReceiptCards 267
ReceiveAsync method 312
Recipient property 46
ReconnectToConversationAsync method 316
RefreshTokenAsync method 318
RefreshTokensAsync method 316
ReplyToId parameter 61
Representational State Transfer (REST) interface 22
REST. See Representational State Transfer (REST)
REST API 11
REST endpoints 297
REST interface 303
ResumeAfterProfileAsync method 212
RetrieveMessagesAsync method 312, 319
Rock, Paper, Scissors game bot 39–45
BuildMessageActivity method 60–62
BuildTypingActivity method 78
MessageController.Post method 71–72
MessagesController class 44–45, 57–59
PlayList enum 43
RootDialog 205–207, 209, 218, 246
RootDialog.cs file 21
RootMenuItem 248
routing 10
SearchArguments class 275
SearchingIntent method 196–197
Select method 222
SendAsync method 116, 130, 204
Send System Activity menu 72
SendToConversationAsync method 257
SendToExistingConversation method 85–86
Serializable attribute 102
ServiceUrl 46
SetDefine 172
SetFieldDescription 172
SetType 172
SignInCards 267
Siri 6
speech capabilities
adding to PromptDialog 350–353
speech recognition 357
Speech Synthesis Markup Language (SSML) 347
SSML. See Speech Synthesis Markup Language
StartAsync method 103, 105, 115, 210
StartConversationAsync method 309, 318
StartNewConversation method 86
StateClient 54
state management
Suggested Utterances tab 200–201
SuppressRepeatedActivities method 314–315
Task Parallel Library (TPL) 312
Teams channel
using 286
TemplateBaseAttribute class 146–148
templates
text messaging 5
text output
Then method 224
Timestamp 46
TranslateResponseAsync method 338–339
TResult type parameter 103
Universal Windows Programs (UWP) 6
UnWrap method 222
UploadAsync method 254–255, 256
user data
user input
interpretation of 199
VideoCards 267
Visual Studio
configuration 281
voice communication 6
adding to PromptDialog 350–353
Watermark property 307–308, 313
handling server requests 297–299
web pages
Windows Subsystem for Linux (WSL) 303
WineApi class 96–97, 98, 124, 128
WineBot
MessagesController class 115–116, 129–132
WineApi class 96–97, 98, 124–132, 128
WineCategories class 93
WineSearchDialog class 98–114, 111, 114–115
WineCategories class 93
FormFlow fluent interface 153–154
Rating property 164
WineFormCompletedAsync method 231
WineSearchDialog class 98–114, 111, 114–115
WritePrompt 308
Xamarin 6
3.140.198.173