Callout Element

The callout element creates a new call to a destination, for example to an external IVR, and joins the original call and the new call together. Call control is returned to the original IVR after the new call terminates. The callout element can be used for example in surveys, or when IVR uses an external speech-recognition application.

The callout element can be nested in the following parent elements: block, filled, form, if, noinput, nomatch, vxml.

It can have the following child elements: error, timeout

Attributes for callout Element



Enter the identifier, either a short name or number. The identifier appears in the ID column, and it is used as an address when the call is transferred to this element.

The identifier appears also in the drop-down list of expressions with the prefix callout:, the results of the callout method are called with those expressions.

A Number Expression

Choose or enter the expression that defines the A number that is shown in the external call that IVR makes using the callout element. Define the expression with one of the ways:

  • Use a ready-made expression:

    1. Select the template from the drop-down list.

    2. Select x (and y) from the drop-down list, or write the value, variable, or Python statement.

    3. Click OK.

  • Choose a variable from the drop-down list, and complete the Python statement, if needed.

  • Enter the whole statement in Python code.

Caller Number Expression

Choose or enter the expression that defines the displayed caller number of the external call. Define the expression in the same way as for A Number Expression above.


Choose the destination to which the callout element calls. In the drop-down list, you can see the destinations defined in the system, such as IVR numbers or queues.

If your destination is not on the list, check if you can use the Destination Group, or define the destination with the Destination Expression.

Destination Expression*

Choose or enter the expression that defines the target (B number) the external call is made to. The expression can be either a string, or a Python dictionary.

When using a string, do one of the following options:

  • Enter a string in the field with quotes, such as a phone number, '1234567'

  • Enter a variable’s name, or, if the variable is already defined with the var element, choose it from the list.

  • Combine these two, for example, choose the variable {BNUMBER} and enter a prefix '050'.

When using a Python dictionary, do one of the following options:

  • Enter the dictionary as key/value pairs where the keys are extension numbers, and the values are their line capacity (number of slots, or number of calls that the destination can take simultaneously), for example: {'1001': 5, '1002': 10}.

  • Enter or choose a variable’s name, and define the extension numbers and their line capacity in the var element attribute Initial Value as Dictionary Date in Key and Value fields.

Destination Group*

Choose the user group whose numbers are used as target for an external call. The number is selected from the user group’s extension numbers with a load balancing algorithm. Using this option requires that external destinations are configured in the system as users, and they form a user group.

The user’s line capacity (number of slots, or number of calls that a destination can take simultaneously) is defined in the User and Role Management > User > Contact Settings > Maximum Number of Waiting Calls.

Call Info Data Expression

Define which pieces of information are included in the call info, and define the return channel if you are expecting result data. Return data uses the CEM Servers IP address and the port defined in the parameter XMLServicePort . For example, to define the return data port, and add A number, B number and call id enter the expression 'http://%s:%d/request.xmlpurpose=info;OriginalANumber=%s;OriginalBNumber=%s;XMLRequestKey=%s' % ({IP}, XMLServicePort, {ANUMBER}, {BNUMBER}, {CALLID})

Expect Result Data

To enable IVR receiving the CALL_ACTION event that includes data from the external party, select the checkbox. See the table below for the result expression formats for different call actions. You must also define the result data return channel in Call Info Data Expression.

Connect Timeout

To define how long time the joining of the calls may take before a timeout occurs, enter the number of seconds or milliseconds.

Maximum Call Duration

To define the maximum time for an external call, enter the number of seconds or milliseconds. Timer starts when the calls are successfully joined.


Enter a description of your element; what is it planned for, its requirements and limitations. Specific to Sinch Contact Pro.


*) Use only one of the attributes Destination, Destination Expression, or Destination Group. If you define more than one of these attributes, Destination is used, and if it is not defined, Destination Group is used.

The actual destination number may consist of numbers 0 to 9, letters a to z and A to Z, plus (+), number sign (#), asterisk (*), and underscore (_), other characters are filtered.

Callout Results

If your query returns call action data (you have selected Expect Result Data attribute) the results are available with the following result expressions for FINISHED, TRANSFER, and FAILED call actions. You can choose these result expressions in the condition or expression drop-down lists in the format callout: identifier.method postfix .

The callout results are available globally in the IVR application, even if it is placed in a parent element.


In the drop-down list, the callout: prefix is displayed just for making the finding easier. In the expression or condition field, the prefix is removed.

Result Expression



Checks if the call out operation has been completed successfully.


Checks if the original call should be transferred according to result data (call action TRANSFER).


Returns the destination that was received in result data (call action TRANSFER).


Returns the result data dictionary (available when call action is TRANSFER).


Checks if an error occurred during the call out operation.


Checks if there is a congestion due to no call out number being available.


Checks if the outgoing call was disconnected by the remote end.


Checks if result data is expected but call action FINISHED, FAILED or TRANSFER has not been received before the outgoing call has been disconnected.


Checks if transfer destination has not been specified (call action TRANSFER).


Checks if either the call action FAILED, or an unknown call action has been received.


Checks if the call out operation timed out.


Checks if timeout occurred while trying to make a call out.


Checks if the maximum time for the outgoing call was exceeded.