How to build a dialogue-oriented chatbot that can specify dialogue it will use for each target customer?

I am working on an IVR project. The goal is to build a dialogue-oriented system that can talk to different customers using pre-written dialogues.

For example, a pre-written survey dialogue can be assigned to call customer A and B, the system will call customer A and B using ONLY the survey dialogue. Even if the customer shows intent from another dialogue (aka story in rasa), the conversation will still stick to the survey dialogue instead of wandering off. A demo picture is attached below.

From what I have learnt, there is little practice on how to build such chatbot. Here are my solutions to do so,

  1. build a new chatbot for each new dialogue. It can do the job but it is too time-consuming and arduous. Not to mention each chatbot needs to use one port and there won’t be enough port for all chatbots if I were to call a multitude of customers at the same time.
  2. train a new model for each dialogue. It will greatly reduce the concurrency of the system, since I will only be able to use one dialogue while one model is being used.
  3. send an intent that contains unique identifier of a dialogue at the beginning of each conversation. use entity or slot to catch the dialogue identifier and center the conversation around certain dialogue. however, this is just an idea and I am not familiar with entity or slot so I don’t know if it works.

Do you think any of these solutions can work? Is there any better way to build a one-for-all chatbot that can use different dialogue for different customer?

Also, each dialogue branches out several times depending on what the customer answers, making the situation more complicated. Any idea how to deal with multiple branches as well?

I hope I have made myself clear. Thank you in advance. @ChrisRahme