Let's start with the chatbot. At the time of writing, chatbots are everywhere, from when you ask for help on a website to when you phone a call center. Essentially, a chatbot is simply a complex state machine, and frameworks, such as Microsoft's Azure Bot Framework, simply hide that complexity from you. Imagine the following dialog between a human and a machine (H and M):
M: Hello, how can I help?
H: Hello, I'd like to check my balance, please.
M: I can help you with that. Which account is this for?
H: Current.
M: I'm sorry, I didn't get that. Which account is this for?
H: Current account.
M: What is the number of your current account?
Okay, so if we have a look at this exchange, we can see that it is initiated by the bot. The customer responds by saying that they'd like to check their balance—so here the bot is listening for keywords...