Retrieval actions: Fallback, Buttons and reverting utterance

I’ve been setting up a retrieval action to handle the basic chitchat as recommended and I’ve encountered three weaknesses; which might very well be due to me not grasping the whole thing yet.

I’d appreciate any clarifications on the topic. I might be entirely wrong. :slight_smile:

1) Fallback I don’t know how to disambiguate a retrieval action in a TwoStageFallback. I can pick up that the highest ranked intent is faq but not further.

I’m trying to implement a similar logic to the demo-rasa bot with a two stage returning an array of buttons for the most likely intents. This doesn’t work for anything “hidden” behind the retrieval action since I don’t know which faq section would be most likely, nor trigger it with /faq/help or /faq/xxx or some other combo.

Is there a way to do that?

2) Buttons (and media etc…) It doesn’t seem possible to return buttons with a retrieval action; or at least I couldn’t find anything in the documentation. My retrieved text is mostly help about the bot itself and it would be useful to be able to return different payloads. For example:

U: What can you do?

intent: /faq retrieval action: /help

B: I can do a lot of things, which one would make you happy now? [ buy socks (/buy_sock) ] [ make coffee(/make_coffee) ] [ view all (/faq/everything) ]

I know I could use normal intents for that but it would be much easier with a retrieval action.

3) Reverting utterances, I have the feeling that the retrieval actions does not revert the last utterance and that seem to impact memoization (am I understanding that correctly?). With a memoization level of 2 and the following stories I would have expected ask_for_human to be understood after a faq.

## faq
* faq
    - respond_faq

## Ask for a human + positive (happy path)
* ask_for_human
    - utter_no_human_ask_message
* affirm
    - feedback_form
    - form{"name": "feedback_form"}
    - form{"name": null}

But it wasn’t so I had to add it in interactive mode. It seems it would be easier if we could set up the retrieval action to automatically revert since retrieval action are probably used most of the time for exchange that are unimportant from a conversation standpoint.

## interactive_story_1
* faq
    - respond_faq
* ask_for_human
    - utter_no_human_ask_message
* affirm
    - feedback_form
    - form{"name": "feedback_form"}
    - slot{"requested_slot": "user_name"}

With a higher memoization it got a bit worst :slight_smile:

## interactive_story_2
* faq
    - respond_faq
* faq
    - respond_faq
* faq
    - respond_faq
* faq
    - respond_faq
* faq
    - respond_faq
* faq
    - respond_faq
* faq
    - respond_faq

Again my understanding might be completely flawed.

1 Like

Hi @yopla. I completely agree with you about 2nd point. Did u figure out a way ? Please let me know if u did.

Thanks, Akhil.