Configuring Fallback Responses

In order to make your base conversation interact with other skills, your base conversation needs to flag certain responses as fallback responses. This is an indication that lets the skill platform know that a certain conversation request was not handled by the base corpus, and routing to a different skill should be considered.

Example: a client implements a Digital Person that can handle a conversation related to banking, this is the client’s base conversation. If a user asks a question about the weather, the base conversation might respond: “Sorry, I don’t know how to respond to that”, and flag it as a fallback response. The skills platform can identify this fallback response, and send a request to a Weather skill that has been added to the project, so that the user can get the right answer from it.

How we determine that a response is a fallback is dependent on the specific conversation platform or API being used.

DialogFlow ES

Ensure that the result metadata in the DialogFlow response contains "isFallbackIntent": "true" for API v1.

Ensure that the intent in the DialogFlow response contains "isFallback": true for API v2

  • v1: _is_fallback = json_obj[U("result")][U("metadata")][U("isFallbackIntent")].as_string() == U("true");

  • v2: _is_fallback = result[U("intent")][U("isFallback")].as_bool();

DialogFlow CX

In a fallback response, the response match.matchType is set to NO_MATCH, DialogFlow CX sets this for you when no intent was found for the query.

Watson

Use a catch-all/fallback node to handle the fallback responses, this should result in a conversation response containing "anything_else" as an entry condition for the last visited node.

Azure bot

Set IsFallback to true in the response Activity [look here for more details]

Power Virtual Agent (PVA)

To flag a given message as fallback, double click the message box, and in Channel data, click on the arrow, and enter the following Formula: { IsFallback: true }

Skill API

In the execute response, specify that the intent name is NO_MATCH:

intent: { name: "NO_MATCH" }

Kore AI

Use a task named fallback task so that the response from the kore platform includes "completedTaskName": "fallback task"

LEX (v2)

Using an intent named "FallbackIntent":

response["sessionState"]["intent"]["name"] == "FallbackIntent"

Orchestration

Set "fallback": true in response

VoiceFlow

Prefix the response with fallback: . See more info here.