Inject Meta Information

Hi, I am inexperienced with rasa. I got my first few bots deployed (thus far only simple Q&A Bots) and plan to use it in production with a customer of mine.

For the production use case, it is required to pass meta-information (eg. auth token, employee id, …) from an external Web-Application to the bot. The bot in turn uses the information for calls to an external api.

Therefore I am faced with the following question: How can I inject external information into a conversation?

So far I came up with three possible theoretical solutions:

Solution A: External web application starts rasa conversations and maps the conversation id to an external user id. Therefore a mapping between conversation id and user id is possible. In rasa I define a custom policy which checks whether the slots for “auth token, employee id, …” are filled and if not, call an external API to fill the data (via the conversation id).

Then later in rasa core, I should have the slots filled and can use them in custom actions.

Solution B: External web application starts rasa conversation and maps the conversation id to an external user id. As soon as the conversation is started, the external application uses the event API to fill the slots. Alternatively I could also directly access the tracker store and pass the required information directly in the conversation.

Later in rasa core, the slots should also be filled.

Solution C: External web application starts a rasa conversation and maps the conversation id to an external user id. As soon as the conversation is started, the external application uses the “Run action in conversation” API (see: HTTP API) to run a custom action which then fetches the missing slot values from an external api via the mapping of the conversation id.

Later in rasa core, the slots should also be filled.

Can you please help me out and give me pointers which solution might be the best in my case. Also, can you give me hints as to which alternative I could use to map a conversation to an external id?

Best Regards, Andreas

if external application initiate conversation with rasa, then it can send /start{"auth token": "x", "employee id":"x"} placeholder intent with entities containing needed info. then core can automatically fill corresponding slots or predict custom action that will do it