Guiding Users

Guiding Users

Implicit Confirmation

Implicit confirmation involves repeating details back to the user to reassure them that they were understood correctly. This also gives the user a chance to intervene if your assistant misunderstood.

Example:

Can I get a large hawaiian and bbq pizza
Sure, that's one large hawaiian and one regular bbq pizza.
Anything else?
No they should both be large!

Explicit Confirmation

Explicit confirmation means asking the user to clarify how you should help them. An important thing to remember about AI assistants is that the user is never wrong.

Example:

I just moved
I'm not sure I understood you correctly. Do you mean ...
I want to cancel my contract
I want to update my personal details

You can configure the TwoStageFallbackPolicy to ask your user to clarify, and present them with quick replies for the most likely intents:

policies:
- name: TwoStageFallbackPolicy
  nlu_threshold: 0.3
  core_threshold: 0.3
  fallback_core_action_name: "action_default_fallback"
  fallback_nlu_action_name: "action_default_fallback"
  deny_suggestion_intent_name: "out_of_scope"
...

Explaining Possibilities

AI assistants are always limited to helping users with a specific set of tasks and should be able to explain to a user what they can do.

Example:

What can you do?
I can help you update your personal details, change your plan, and answer any questions you have about our products.
Can you get me a pizza?
I'm afraid I can't help with that.

Common Case - User asks what's possible:

## user asks whats possible
* ask_whatspossible
  - utter_explain_whatspossible

## user asks for something out of scope
* out_of_scope
  - utter_cannot_help
  - utter_explain_whatspossible

Collecting User Feedback

Asking for feedback is one of the best tools to understand your users and determine whether you solved their problem.

Example:

Was that helpful?
no.
Thanks. Why wasn't I able to help?
you didn't understand me correctly
you understood me, but your answers weren't very helpful.

Use a form to collect user feedback. Define a custom form action:

from rasa_sdk.action import FormAction

class FeedbackForm(FormAction):
    def name(self):
        return "feedback_form"

@staticmethod
    def required_slots(tracker):
        return ["feedback", "negative_feedback_reason"]

Add the form and slots to your domain:

forms:
  - feedback_form
slots:
  feedback:
    type: bool
  feedback_reason:
    type: text
  requested_slot:
    type: text

Make sure the FormPolicy is present in your configuration file:

policies:
  - FormPolicy
  ...

Handing off to a Human

Users will be frustrated if your assistant cannot help them and there is no way to reroute the conversation to a human agent. Always provide a way to break out of a conversation!

Reasons for triggering a human handoff:

Example:

let me speak to a human
let me put you in touch with someone.
I want to cancel
I'm afraid I can't help you with that.

You can handle requests by mapping intents:

intents:
  - request_human: {"triggers": "action_human_handoff"}