Call Flow

Call Flow

What’s about

In this group, you find the boxes useful to design the call flow based on different conditions you can set.

GoTo

This block lets you divert the call to another object like

  • Another IVR application

  • A queue rule

  • A fixed extension

  • A specific Asterisk context

image-20240603-070457.png

 

  • Label: a brief description of the box

  • Context: here you can put a context name (check Asterisk documentation for the “Context” definition).

If you use Cally Square combined with XCALLY this should be:

  • A rule name

  • An agent

  • A DID

  • Extension: in many cases it may be “s”, however you can place the extensions according to your dialplan needs.

  • Priority: priority of the application in the dialplan

The goto block will interrupt the IVR execution and route the call toward another extension. Still, before that, it will execute any final block with all its other following blocks, if there is any.

How-to use GoTo block for Queue routing

If you need to have many calls to be routed inside a Cally Square in e.g. to distribute the calls over several queues, it’s highly recommended to do not use the queue block, in order to lighten the resources use on the system.

First of all check how many channels your server is using by launching this from the Linux CLI:

ss -at '( dport = :4573 )' |wc -l

Place the GoTo block:

Then set its parameters accordingly to the needed destination:

GoTo command require an extension in order to route the call. So you need to create an extension pointing to the application you need to execute (eg. playback, queue, etc) by using an internal route (you can’t set a GoTo with the queue name because it’s not a valid extension).

GoToif

This block executes a conditional jump according to a comparison result

image-20240603-071319.png

 

  • Label: brief description

  • Condition: define the comparison condition. It could be:

    •    =

    •    < 

    •    > 

    •    !=

    •    <=

    •    >=

    •    || for “OR” and “&&” for “AND”

    • == equal to

    • === equal value and equal type

    • != not equal

    • !== not equal value or not equal type

A Condition example:

'{CHANNEL(language)}' == 'en' || '{CHANNEL(language)}' == 'fr'

The above condition is TRUE when the channel language is English or French

JS Operators

For more information, please refer to:

W3Schools.com

Exit Arrows

For this box you must create two exit arrows using the following values:

  • true: routes to the path in the IVR tree for the condition verified as true

  • false: routes to the path in the IVR tree for the condition verified as false

Consider this information if you use GoToIf block
An error can occur if a variable contains an apostrophe (e.g. a phrase in a transcription anlysis like “… I'm John…”).
To resolve this, all instances of “gotoif” should be updated to use backticks instead of apostrophes as delimiters for the variable.
Here the example:

'{{message.body}}'==='Good' || '{{message.body}}`==='Great'

Will be understood in a confused way as

'Hello, I'm John'==='Good' || 'Hello, I'm John'==='Great'

(using ` and not ' )

`{{message.body}}`==='Good' || `{{message.body}}`==='Great'

it will be correctly interpreted as:

`Hello, I'm John`==='Good' || `Hello, I'm John`==='Great'

GoToifTime

This box lets you make decisions based on the time intervals.

image-20240603-072056.png

 

  • Label: a brief description of the box

  • Time interval: select the time interval pre-defined in the time intervals sections

Exit Arrows

For this box, you must create two exit arrows using the following values:

  • true: routes to the path in the IVR tree for the time interval condition verified as true

  • false: routes to the path in the IVR tree for the time interval condition verified as false

Switch

This block is very similar to the menu block, unlike the fact that the path the call will take depends on a variable.

Indeed you can set a variable to be read and choose a branch depending on its value.

image-20240603-072319.png

 

  • Label: brief description

  • Variable: here you can choose a variable from a pick up list

Exit Arrows

The block lets you draw many exit arrows depending on how many values the variable can assume.

In addition, there is a branch in case none of the branches values matches the value of the variable
Adding multiple choices for each output branch is possible: just use the comma-separated characters.

 

Related topics