Remembering previous topics in a conversation, so we can context switch between topics later

How to remember previous topics in a conversation, so we can context switch between topics later?

For example: User orders apples , while getting details about apples, orders oranges , then again orders grapes . So there have been 3 requests, if I use a slot to hold the product name (text slot), then the latest value will be grapes. I’ve lost apples & oranges. I want the bot to process grapes, then get back to oranges, and get back to apples (last in first out).

I’ve managed to design the bot to complete the grapes order, I’m trying to figure out a way to recollect and process apples and oranges (previous topics)

Any help is greatly appreciated, I scoured through the forum without much success on this topic. Any direction or examples will be greatly appreciated.

Many thanks again.

1 Like

Has anyone implemented stacking conversations… i.e. push a new conversation in a stack, and pop each conversation out, when the conversation ends or request is fulfilled? Almost like the chitchat function that comes with forms v2, where control comes back to form filling after an interruption. Thank you.

We haven’t received any response on this topic…

Is it possible at all… to jump back to a previous conversation, once the current conversation is over? ‘forms v2 + chitchat’ seems to suggest it is possible to some extent… any way we can add custom actions or modify stories to achieve this behaviour or do we have to modify rasa_core?

Please let me know, if I’m not asking the right question… I’m new to Chatbot tech.

Your inputs are very appreciated. We are in the process of deciding, if it’s going to be Rasa AI or something else… Thanks again.

I’m very glad to report that we’ve managed to extend our ChatBot to remember previous conversations/topics and lateral conversations as well. i.e. when requests have been made for multiple topics, the chatbot is able to resolve each one of it (not just the latest topic alone).

Let me know if this is of interest to anybody, we can post some details.

Cheers!

1 Like

@Thinkhat I’m working on the same problem; would love to hear more about how you solved the previous and lateral conversations.

Same here. Happy to hear how you solved it.

In Summary:

When a new conversation/topic is identified (e.g. interest in purchasing apples), we store the conversation onto a list type slot, if the dialog leads to the product going into the shopping basket or if the user decides not the buy it, then the conversation topic (apple) is removed from the list type slot (e.g. productset_interested : [apple]). Mean while if the user discusses more topics then we append it to the list type slot (productset_interested : [apple, orange, grapes]). As I add products to the shopping basket or decide to not buy it, they are removed from the list on LIFO (last in first out) basis – stack implementation (you can choose other methods as well).

We have stored supporting data in similar list type slots (productset_details: [‘red apples’, ‘tangerine’, ‘black seedless grapes’] and (productset_quantites: [’12’, ‘6’, ‘500g’]. We plan to move this into better data structure (dictionary probably), once the POC is ratified.

All these routines have been implemented as custom Python actions (rasa_core_sdk::Action class).

I would love to learn about other implementations out there. Now that forms v2 has been released, we should be able to produce slimmer & cleaner solutions.

Hope this helps!

1 Like

Same here. Could the updates in forms v2 be used to do this in another way?