How to allow Rasa bot to control the conversation

I am using the Rasa 1 Python library for chatbots.

NLP is commonly based on user saying something which goes to NLU to choose intent which leads to a response/utterance sent back to the user.

Instead, I would like to give the bot the ability to be more proactive and ask questions first to lead the conversation instead of being only reactive.

That, of course, means I need to dive into Python. My question is where should logic controlling the behaviour live . Should I create a custom channel? Should a create a new run.py extending the original? Is that something that I should somehow create in the action server? Or do I need to do something more advanced with either agent or tracker? Is there a general belief that this should be handled in service outside of Rasa? Is there any example of how something like that would be done?

My goal is to imitate the behaviour of Replica bot which has a very proactive approach to controlling the conversation and learning users interests.

1 Like

Hi @MartinGentleman! Initiating the conversation depends on the channel. For example, for Facebook Messenger, there is a get started button. The most straightforward way for most channels is to have your backend “send a message” to the rasa endpoint as if the user had sent a message and then the bot would reply to the user to start the conversation.

I would recommend checking out these posts:

Hey @tyd

How would I do this using websockets? I want to use the existing websockets-based chatbot interface, but can’t figure out what I would post to in order to send message back to the client.

Thanks.

1 Like