Chatbot reacting to emotions and interacting with other bots

I'm very interested in using Watson for creating a chatbot. I want to integrate the chatbot into Facebook Messenger (if there is another app which offers easier integration, I'm happy to hear). I have three main questions for which I haven't found a solution online. I would be very very happy if someone could give me a quick help.

I would like to create a bot with a pretty strict action sequence pushing the user in a certain direction. For example, an IT support chatbot which asks the user a predefined sequence of questions where the interaction sequence is closly defined. Is there an example available for such a chatbot (not allowing too much freedom)?

Is it possible to integrate sentiment analysis (emotions from written text) or emotions from facial expressions from the front cam into a chatbot? I would like to trigger specific actions depending on the emotion of the user.

Is it possible to create several chatbots which are interacting? For example, I would like to have 3 chatbots integrated into Facebook Messenger and each bot should know the state of the other bot and if one bot reached a certain state then another bot should become active and start writing messages.

3 answers

Yes. A strict flow is easy to acheive. Even if you have a large amount of intent and entity understanding you can always chose to respond with a certain conversational and use the understanding gained from what they said to try and help persuade them to carry on with it. If they digress you can react and loop them back onto the same track - check out digressions. Having a strict flow is verbally easier. than alone with a very high degree of freedom

Yes emotional intelligence can be added, use your choice of sentiment analysis either textual or facial understanding and update a relevant set of context values. Along side understanding the utterance the bot can also react according to the emotional state.

Yes. chatbots activating and talking to each other. You need to decide which instigates and leads, but as you know everything each bot understands and all the possible responses you can include both sides in the training set and ensure a very reliable conversation. Generally you would have the bot user on one channel and the bot bot in another. Multi party chats are harder. This sort of paradigm works well in a multiple thread channel like slack where the bots can talk in a visible way but it’s clear which channel is for them to talk on.

Thank you very much for your answer. Are there example chatbots or tutorials available for the 3 points discussed (strict flow, incorporating emotional intelligence, interacting bots)? That would be very helpful for getting started.

Regarding emotional intelligence, I have seen that watson offers sentiment analysis, so I think that could be included in a chatbot created using watson assistant but of course an example would help here. ;) Is it also possible to incorporate emotions from facial expression analysis into the chatbot? I have not seen such a service offered by watson.

You'll quickly see how to constrain a flow, work with digressions etc. You can then deploy this to a channel of your choice and think about what you actually want to do with the emotional intelligence. Are you considering a score at each utterance, or across the whole conversation, or some recent rolling average? What changes to what you are responding are you going to do. If you understand how to work with context you can see how you can vary your output based on the emotional state. You can decide on what specific sentiment model you think is appropriate. If you're going to do facial recognition you'll need then to have a variety of timing parameters as well, as well as the video/image processing how often to sample, create a metric, and feed it to Watson as context. Then you can look at which channels you want to talk on, and what bot to bot conversations you want to have, and whether it's worthwhile doing like that or just using a programming API.

If you want to rapidly prototype node-red provides ways to rapidly connect Watson Assistant solutions to a variety of other resources like sentiment analysis and is well supported with guides. For instance you'll quickly find one integrating slack and running sentiment detection on each utterance. Which is something you could re-use to set the context for your bot.