Special Intents & Behaviors

Default intent

When the caller provides an utterance or word that the agent isn’t trained for (see Expressions/ Utterances), you can define a default intent that will let the caller know that the agent can’t understand and they should rephrase.

How to create default intent:

  1. Create a new intent (see intent)

  2. Name the intent "default"

  3. Set the response, for example, “I couldn't quite get that. Can you please rephrase?”

Fallback intent

In cases that the caller repeats the same phrase or the agent hasn’t been trained for the use case at all, you can create a better user experience using a fallback intent. A fallback intent will be triggered after the agent failed twice to classify the caller’s input. This is specifically relevant if the agent failed to fill in a required parameter twice.

How to create Fallback intent:

  1. Create a new intent

  2. Name it "fallback"

  3. Set a response. Recommended fallback:

    1. Messages - In cases you don’t have a representative or the call is off hours, you can ask the caller to leave a message and his details. To learn how to take a message see off hours.

    2. Routing - In cases you do have a representative, you can route the call to them. To learn how to route calls see routing calls.


This intent triggers the agent to repeat the last response/question and can be useful for cases where the caller didn’t hear the agent.

How to create a Repeat intent:

  1. Create a new intent.

  2. Name the intent repeat.

  3. Add utterances (see Expressions/ Utterances). For example “What?”, “Can you repeat that?” etc.

  4. Write in the action repeat (see action list).


This intent cancels all contexts (see context) in the flow. You can use it for cases the caller is in context or is being asked to fill a parameter, and wants to start over/ get out of the context.

How to create Cancel intent:

  1. Create a new intent.

  2. Name the intent cancel.

  3. Add utterances (see Expressions/ Utterances). For example, “Cancel that”, “Ignore that” etc.

  4. Set a response, for example “O.k let’s start over, how may I help you?”

  5. Write in the action cancel (see action list).

Custom Fallback intent

Sometimes you don’t want the agent to get to the usual fallback intent, and create a custom fallback for a specific case.

To do that you can use a special flow control that is slightly different:

  • Add the flow control parameter before the parameter you want to perform the logic.

  • Add the parameter you need to perform the logic on.

  • Add a parameter that is called ATTEMPTS and write in the value “0” (zero).

  • Create the custom fallback intent (you can do it at any step you want, whatever is most comfortable for you)

  • The code you will use is more complex than the usual flow control, and you can use it in many different cases. For example

actions = []
if not params["PHONE_NUMBER"].value:
attempt_curr = int(params["ATTEMPTS"].value)
if attempt_curr >= 2:
actions = [{"action_name": "force_intent", "intent_name": "intent.dtmf","intent_params":[params["CALLER_NAME"], params["CITY"]]}]
attempt_new = str(attempt_curr + 1)
actions = [{"action_name": "keep_flow_control"},{"action_name":"set_param_value", "param_names":["ATTEMPTS"], "param_values":[attempt_new] }]
return actions

This code means that if the parameter value PHONE_NUMBER is false (doesn’t have a value) and the parameter value ATTEMPTS is above “2”, then force to the intent “intent.dtmf” with all the parameters you want. otherwise, meaning the parameter ATTEMPTS value is under “2”, keep asking the question and add +1 to the ATTEMPTS value.

This might seem slightly complicated, but all you do is counting the times you prompt the question, and if you fail twice you force to the intent you defined - a fallback logic. In this example, the agent failed to understand the phone number and on the third time, you want a different behavior - e.g. like DTMF (see more info on DTMF in the next paragraph).

DTMF (Dual-tone Multi-frequency Signaling)

A method used to dial telephone numbers (phone keypads) instead of saying them out loud

In cases where you need to collect a number that can be used as a value, you can switch from voice to phone keypads. You can use DTMF in an entire agent or just in a single parameter. In the example code above, the fallback intent created after trying to collect the phone number twice is a DTMF intent that asks the caller to type his phone number.

All you need to do for it to become a DTMF is to write in the prompt question “followed by the pound key” and the agent will know to expect a dial tone. For example, “Please enter the 10 digit permit number using your dial tone, followed by the pound key”.

Note that the user has to use the pound key on his dial tone. Saying the number out loud will not work If you want the agent to receive both voice and DTMF or the entire agent in DTMF, you can contact our support team to assist you.

Natural recordings

Not all callers/customers can relate to the robotic voice of the agent. For that reason, over.ai offers an option to add a natural recording to the agents. To make a recording and add to your agent, you can contact our support to assist you.

Context Switch

When a parameter prompts a caller, the agent will either continue to prompt until it will get a proper value or the fallback intent will be triggered. There are cases when the caller will ask a question in the middle of the dialog and you want your agent to be able to respond.

For example, when you prompt the question “What is your name?” and the caller will say “I want to speak with a live representative”, you want the agent to transfer the call or have a fitting response, and not to continue prompting for the name.

How to switch:

  1. In the intent you want to switch to - write in the input contextswitch

  2. Add a parameter ALLOW_SWITCH

  3. Contact the support team and let them know the agent ID (you can find it in the developers platform -> Overview -> Store -> Agent ID).

Routing calls

You can use in cases you want to route the call (i.e to an employee or a representative in fallback intent).

How to route the call:

  1. Add a parameter named RECIPIENT_NAME (see parameter).

  2. The entity type should be @employees (see Entities).

  3. The value should be the name of the employee contact. Notice that you need to write the employee value exactly like it is in the contact and not any of the synonyms.

  4. Set a response. For example “I’m routing your call to $RECIPIENT_NAME, please hold..”.

  5. Add action- make_call (see actions).

  6. Add the relevant webhook (see webhooks list).