Chat bot with multiple user participants

How do you accommodate multiple users chatting with a bot, like a chat conference. All the usual bot use cases assume 1 user chatting with the bot. But what if we have two users chatting with the bot and the bot has to participate in the conversation and have different responses based not only on the user input but also on who the user is. Let’s say we have a parent and child, chatting together with our bot, we want to reply one way to a parent (in terms of title for example, or chitchat) and another way to the child. Let’s assume that we can tell from the input channel which input comes from which participant. How do we make Rasa_Core handle those inputs differently. Simple example, parent and child both say “Hello”. We want to address the parent by their title–“hello Mrs. Smith” and offer them a coupon to the store–“we have a $5 off promotion today”. And to the child we want to say “hello Timmy, any boy or girl who comes today gets a lollipop”. Or something like that. How do we accomplish that in Rasa?


I believe Rasa Core is not tackling this use case at all right now. If you look at the library, Rasa NLU could still process the messages for you, but the dialog management system only deals with two kinds of users, “User” and “Bot”. So my suggestion would be to inspire yourself from Rasa Core and build your own thing, but be aware that this is not easy at all. I would think about your use case a bit more in detail before going down that road! The easy way is to have them both talk to their own bot. That’s because the current use case tackled by Rasa Core is that of the personal assistant, whether it is the assistant of a company facing internal/external users or some personal use.

hello @lgrinberg have you find a way to do so? i’m facing the same interogation as you. was thinking about a way to introduce the bot during the convo like “@BOT what do you think about…”

do you have any suggestions? thanks

I don’t know a way of doing it with current Rasa code. You’d have to configure multiple NLU models which could then classify user’s input as different intent. And then you’d somehow have to tell rasa core to use the different model based on the input channel (i’m guessing that’s how you’d distinguish input from two different human participants).

So if the user says ‘hello’:
if input from Channel “Adult” send for processing to the “Adult_NLU” model If input from Channel “Child” send for processing to the “Child_NLU” model.

The Adult_NLU model would return “adult_greet”, while the “Child_NLU” model would return “child_greet”, and that’s how you could distinguish them in the conversation logic.

Once again, I don’t think Rasa’s current code supports something like this.