Confusion on fallback parameter - deny_suggestion_intent_name

I’m not clear about the role of the TSF parameter : deny_suggestion_intent_name from the documentation. Here is the confusing part in the document :

Second affirmation

  • If the user affirms the intent, the story continues as if the user had this intent from the beginning.
  • If the user denies, the original intent is classified as the specified deny_suggestion_intent_name , and an ultimate fallback action is triggered (e.g. a handoff to a human).

It says that if the user denies in the second affirmation, the intent specified in deny_suggestion_intent_name parameter will be trigger

But in the table below that :

Isnt fallback_nlu_action_name the action triggered when the intent confidence is below nlu_threshold ?

Also, in my code, with this config :

- name: TwoStageFallbackPolicy
  nlu_threshold: 0.5
  core_threshold: 0.5
  fallback_nlu_action_name: action_default_fallback
  fallback_core_action_name: action_default_fallback
  deny_suggestion_intent_name: out_of_scope

out_of_scope is getting triggered after the first deny. That’s different from both the interpretations of the documentation.

Please clarify, thanks!

It says that if the user denies in the second affirmation, the intent specified in deny_suggestion_intent_name parameter will be trigger

Yes, if the bot says “did you mean greet?” and the user says “no”, then we do not know the user’s original intent. Therefore it will be replaced with out_of_scope because that is the deny_suggestion_intent_name is. therefore, out_of_scope is getting triggered after the first deny.

@erohmensing Thanks for your response. I am still unable to get a clarity on this. What i understand from the section Second affirmation above on this page is that the user intent will be replaced with deny_suggestion_intent_name when the user says no the second time. Not the first time. On the first time, the bot is supposed to ask for rephrasing. Is that not correct ?

No, the first time, the bot gives suggestions. If the user denies any of the suggestions (by chooosing deny_suggestion_intent_name), the bot will ask to rephrase.

how to define deny_suggestion_intent_name in domain.yml or else file.

my code below: policies:

  • name: KerasPolicy epochs: 500 max_history: 5
  • name: TwoStageFallbackPolicy nlu_threshold: 0.7 core_threshold: 0.6 fallback_core_action_name: “action_default_fallback” fallback_nlu_action_name: “action_default_fallback” deny_suggestion_intent_name: “out_of_scope”
  • name: MemoizationPolicy max_history: 5
  • name: FormPolicy

–domain.yml intents:

  • greet
  • affirm
  • request_weather
  • deny
  • goodbye
  • thanks
  • whoareyou
  • whattodo
  • out_of_scope

responses: utter_answer_out_of_scope:

  • text: you are out_of_scope

why when user deny two times,only active “action_default_fallback”,but not “utter_answer_out_of_scope”,out_of_scope intent only active “action_default_fallback”? if only active “action_default_fallback”,why to define “out_of_scope” in intents or define “utter_answer_out_of_scope” in responses,If it is not defined in domain.yml, an error is reported, prompting for definition,thank you,this problem confuse me long time.i do not understand the use of “deny_suggestion_intent_name”