# How to allow Rasa bot to control the conversation

**URL:** <https://forum.rasa.com/t/how-to-allow-rasa-bot-to-control-the-conversation/13344>\
**Category:** Rasa Open Source\
**Created:** [July 22, 2019, 8:53pm UTC](https://forum.rasa.com/t/how-to-allow-rasa-bot-to-control-the-conversation/13344 "2019-07-22T20:53:43Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![MartinGentleman](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/martingentleman/32/151_2.png) [@MartinGentleman](https://forum.rasa.com/u/MartinGentleman)\
**Post date:** [July 22, 2019, 8:53pm UTC](https://forum.rasa.com/t/how-to-allow-rasa-bot-to-control-the-conversation/13344/1 "2019-07-22T20:53:43Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![tyd](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/tyd/32/3030_2.png) [@tyd](https://forum.rasa.com/u/tyd)\
**Post date:** [July 23, 2019, 11:31am UTC](https://forum.rasa.com/t/how-to-allow-rasa-bot-to-control-the-conversation/13344/2 "2019-07-23T11:31:37Z")

</div>

Hi @MartinGentleman! Initiating the conversation depends on the channel. For example, for Facebook Messenger, there is a [get started button](http://forum.rasa.com/t/bot-start-conversation-first-fb-messenger-or-slack/12478). 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:

- [Bot-initiated notifications (again)](http://forum.rasa.com/t/bot-initiated-notifications-again/12562/4)
- [How to initiate conversation with user from Rasa (send notification)](http://forum.rasa.com/t/how-to-initiate-conversation-with-user-from-rasa-send-notification/10480/11)
- [Chatroom let the bot start the conversation?](http://forum.rasa.com/t/chatroom-let-the-bot-start-the-conversation/2738/3)

---

<div class="post-metadata">

**Author:** ![mmm3bbb](https://avatars.discourse-cdn.com/v4/letter/m/3bc359/32.png) [@mmm3bbb](https://forum.rasa.com/u/mmm3bbb)\
**Post date:** [July 23, 2019, 8:36pm UTC](https://forum.rasa.com/t/how-to-allow-rasa-bot-to-control-the-conversation/13344/3 "2019-07-23T20:36:41Z")

</div>

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.
