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.