Call Flow
On this page |
|
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
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
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
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.
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.
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.