IVR Blocks

Cally Square IVR Blocks


This section explains which are the blocks available in Cally Square.



To design your IVR flow drag and drop blocks (ready-to-use applications) in the design area and connect them in a flow:






For each block you add, just double click on it and enter the required fields in the pop up screen to setup the corresponding application:






On this Page:


The blocks are collected in Groups of Applications: in the following sections you can find all available application for each group.



Entry group applications




This group - start, finally and end - manages the begin and the end of a call from an Application point of view.




Start


Description

The Start block must be the very first one in each IVR application. The application will not be published without the Start box: it can be used just once for each IVR.



Parameters

  • Label: here you can type a brief description of the box
  • Answer: If set to YES, the system answers the channel.



Exit Arrows

This block provides just one arrow out to the next step


Finally

Description

This block is executed when the application loses the voice channel. It should be used for example to write some data on a DB after the call hangup or at the end of each IVR.  You can use all the boxes you want after the finally.

Of course boxes for audio playing will not have any effect on the customer experience.



Parameters

  • Label: here you can type a brief description of the box



Exit Arrows

This block provides just one arrow out to the next step


End

Description

This box needs to be placed at the end of every leaf of the IVR tree. You can put an End box either at the end of each leaf or have a unique End box whom all the leaves connect to.



Parameters

  • Label: here you can type a brief description of the box


Exit Arrows

This box does not have exit arrow





Call management applications




This group of boxes - answer, hangup, internal dial, external dial, queue, voicemail, callback - can be used to manage the begin and the end of a call from a Telephony point of view.



Answer

Description

This box picks up the call and opens also the voice channel



Parameters

  • Label: here you can type a short description of the box
  • Timeout: here you can setup a timeout in seconds the customer will wait before the system picks up the call. During that period the customer will hear to the “Music On Hold” if it is configured on your server.


Exit Arrows

This box provides just one arrow out to the next step


Hangup


Description

This box hangs up the call to the customer on the remote party



Parameters

Label: here you can type a brief description of the box



Exit Arrows

 This box has got any exit arrow


Internal Dial

 


Description

This box performs the standard Asterisk Dial command towards an internal phone



Parameters

  • Label: here you can type a brief box description
  • SIP:  the agent that you want to call (i.e. john.doe (998))
  • Timeout: the maximum dial time in seconds (default is 60 s). 
  • Options: here you can type the asterisk dial options parameter (it is optional).
  • URL: this parameter will also be sent to the called party upon successful connection (it is optional).



Exit Arrows

This box provides just one arrow out to the next step


External Dial


Description

This box performs the standard Asterisk Dial command towards an external phone



Parameters

  • Label: here you can type a brief box description
  • Phone: the number that you want to call (i.e. 012345678)
  • Trunk: the trunk that you want to use for the call
  • Timeout: the maximum dial time in seconds (default is 60 s). 
  • Options: here you can type the asterisk dial options parameter (optional). Refer to the Asterisk’s wiki.
  • URL: this parameter will also be sent to the called party upon successful connection (optional)


Queue


Description

This box performs the standard Asterisk Queue command in order to manage calls to a Queue (especially useful for ACD or asterisk call center applications).



Parameters

  • Label: here you can type a brief box description
  • Queue name: name of the Asterisk pre-defined queue
  • Options: queue command options. It may contain zero or more of the following characters:
    • d: data-quality (modem) call (minimum delay)
    • h: it allows the callee to hang up by pressing *
    • H: it allows the caller to hang up by pressing *
    • n: no retries on the timeout: it exits this application and goes to the next step
    • r: ringing instead of playing MOH
    • R: stops moh and rings once an agent is ringing (Asterisk Trunk)
    • t: it allows the called user to transfer the calling user
    • T: it allows the calling user to transfer the call.
    • w: it allows the called user to write the conversation to disk via Monitor
    • W: it allows the calling user to write the conversation to disk via Monitor
    • c: continuing in the dialplan if the callee hangs up (Asterisk 1.6.0 and above)
    • i: it ignores the call forward requests from queue members and do nothing when they are requested (Asterisk 1.6.0 and above)
    • k: it allows the called party to enable parking of the call by sending the DTMF sequence defined for call parking in features.conf (Asterisk 1.6.0 and above)
    • K: it allows the calling party to enable parking of the call by sending the DTMF sequence defined for call parking in features.conf (Asterisk 1.6.0 and above).
    • x: it allows the called user to write the conversation to disk via MixMonitor (Asterisk 1.6.0 and above).
    • X: it allows the calling user to write the conversation to disk via MixMonitor (Asterisk 1.6.0 and above).
  • Timeout: time in seconds a call will wait in the queue before it is routed to the next priority in the dialplan (if not defined or 0 the default behaviour is unlimited)
  • URL: external URL (when supported)
  • AGI: AGI script invoked when a queue member answers the call
  • macro: run a macro on the called party's channel (the queue member) once the parties are connected
  • gosub: run a gosub on the called party's channel (the queue member) once the parties are connected
  • position: attempt to enter the caller into the queue at the numerical position specified (e.g.: 1 would attempt to enter the caller at the head of the queue, 3 would attempt to place the caller third in the queue, and so on)



Exit Arrows

This box provides just one arrow out to the next step


Voicemail


Description

This box performs the standard Asterisk Voicemail command** in order to route your call flow to a pre-defined Asterisk voicemail box and context.



Parameters


Exit Arrows

This box provides just one arrow out to the next step


Callback


Description

The callback block will add the contact in the selected contact manager list. Please remember to associate the list to a queue campaign for Motion Bull to call the contact at the scheduled time.



Parameters

  • Label: here you can type a brief description of the box
  • Name: Caller name. Default: {CALLERID(name)}
  • Last Name: Caller last name
  • Phone: the phone number of the customer that you want to call back. Default: {CALLERID(num)}.
  • List: contact manager list where the contact will be added.
  • Delay [min]: time in minutes from NOW (current time) to schedule a contact. Here you can insert a value that defines when the customer will be called. 
  • Priority: add a contact with a specific priority.



Exit Arrows

 This box has got one exit arrow





Agent management applications



This group of blocks allow to manage the Agents' status: 

  • add agent to all the queues he belongs to (Login)
  • remove agents to all the queues he belongs to (Logout)
  • pause agents on all the queues he belongs to (Pause)
  • end pause agent on all the queues he belongs to (End Pause)


This group of blocks can be used in an IVR in order to manage the queue status of the Agents who use external phones (soft phones, hard phones or mobile phones) instead of (or blended with) the traditional Phonebar or the WebRTC bar Agents. 


Login

Description

This box allows to add an agent to all the queues he belongs to.



Parameters

In order to find the Agent's queues, you need to set the column where the script must search the caller number.

  • Label: here you can type a short description of the box
  • Find by, which specifies if the caller number should be found as an:
    • Internal (as specified in the Agent profile as internal number)
    • Phone (as specified in the Agent profile as phone)
    • Mobile (as specified in the Agent profile as mobile)



Exit Arrows

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

  • success: the agent has been successfully logged into his queues
  • failure: the agent has not been successfully logged into his queues (e.g.: agent is not found or for maximum number of agents logged exceeded)


Pause


Description

This box allows to pause an agent on all the queues he belongs to.



Parameters

In order to find the Agent's queues, you need to set the column where the script must search the caller number.

  • Label: here you can type a short description of the box
  • Find by, which specifies if the caller number should be found as an:
    • Internal (as specified in the Agent profile as internal number)
    • Phone (as specified in the Agent profile as phone)
    • Mobile (as specified in the Agent profile as mobile)
  • Pause type:
    • default none
    • any pause type available on the server



Exit Arrows

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

  • success: the agent has been successfully paused to his queues
  • failure: the agent has not been successfully paused to his queues (e.g.: agent is not found)


End Pause





Description

This box allows to end the pause of an agent to all the queues he belongs to.



Parameters

In order to find the Agent's queues, you need to set the column where the script must search the caller number.

  • Label: here you can type a short description of the box
  • Find by, which specifies if the caller number should be found as an:
    • Internal (as specified in the Agent profile as internal number)
    • Phone (as specified in the Agent profile as phone)
    • Mobile (as specified in the Agent profile as mobile)


Exit Arrows

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

  • success: the agent has been successfully ended to be in pause on his queues
  • failure: the agent has not been successfully ended to be in pause on his queues (e.g.: agent is not found)


Logout


Description

This box allows to log out an agent to all the queues he belongs to.



Parameters

In order to find the Agent's queues, you need to set the column where the script must search the caller number.

  • Label: here you can type a short description of the box
  • Find by, which specifies if the caller number should be found as an:
    • Internal (as specified in the Agent profile as internal number)
    • Phone (as specified in the Agent profile as phone)
    • Mobile (as specified in the Agent profile as mobile)



Exit Arrows

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

  • success: the agent has been successfully logged out from all the queues he belongs to
  • failure: the agent has not been successfully logged out from all the queues he belongs to (e.g.: agent is not found)





Variable nodes and math




This group of boxes handles the variables and math operations.



Set

Description

The box lets you set the value of a variable (previously defined in the IVR dashboard)


Parameters

  • Label: here you can type a short description of the box
  • Variable: pickup list you can use to choose the variable you want to use, selecting from the variable list previously defined under Tools < Variable section. You can also create a variable from the toolbar (File < Variable).
  • Value: variable value, like the following:
    • Constant (digits or text)
    • An Asterisk variable in the format {VARIABLE_ASTERISK}
    • A generic non-asterisk variable previously defined in the Cally Square dashboard, in the format {VARIABLENAME}
    • Others

please note the variable format is slightly different from the Asterisk one. DO NOT use the $ character before the {}.

Example: the usual asterisk variable ${CALLERID(num)} MUST be defined just as {CALLERID(num)} in the Cally Square environment.



Exit Arrows

The box provides just one arrow out to the next step


Math


Description

Here you can perform complex mathematical operations during the call flow



Parameters

  • Label: here you can type a short description of the box
  • Operation**: the mathematical operation

i.e. ({RECORD}*2)-4*7/(5*3)+62

i.e. array handler: '{INPUT_DATA}.split(";")'

  • Result: variable used to store the operation output



Exit Arrows

The box provides just one arrow out to the next step




Play and Menu nodes




This group manages the audio playing.




Playback

Description

Here you can play an audio file without any interaction between the customer and the application. The audio is unstoppable



Parameters

  • Label: here you can type a brief description
  • Audio: name of the audio file you want to play in the current box



Exit Arrows

This box provides just one arrow out to the next step


Menu

Description

This is probably one of the most important application box available on Cally Square. Here you can build a complex menu using a single box: you can play the message, count the retries on errors (i.e. to avoid dangerous loops) and set a variable with the digit value(s) pressed by the customers



Parameters

  • Label: here you can type a brief description
  • Audio: the name of the audio file you want to play in the current box
  • Response Timeout: the maximum number of seconds the system waits before considering the customer not interacting with the application
  • Max Digit: the maximum number of digits the system waits before moving on to the next step
  • Retries: here you can set the number of loops automatically performed in case of digits not valid or timeout**
  • Variable: the variable you want to fill with the digits pressed by the customer.


** Please consider the menu box gives the top priority to the invalid (i) or timeout (t) branches (if present) before routing the call in a loop.



# key can be used as an escape digit or as a valid exit key.

If the user doesn't press any keys when the message plays, there is $timeout milliseconds of silence then the command ends.
The user has the opportunity to press a key at any time during the message or the post-message silence. If the user presses a key while the message is playing, the message stops playing. When the first key is pressed a timer starts counting for $timeout milliseconds. Every time the user presses another key the timer is restarted. The command ends when the counter goes to zero or the maximum number of digits is entered, whichever happens first.



Exit Arrows

The menu box lets you draw many exit arrows according to the following syntax:

  • X: the box waits for one digit if the MaxDigit parameter is set to one
  • XX: the box waits for exactly N digits (in this example N=2)
  • i: the system takes this path if the entry selected is invalid
  • t: the system takes this path if the box goes in case of timeout
  • -: the system considers this branch when the retry value is reached. Timeout and Invalid branches have higher priority than this branch.


It is possible to add multiple choices for each output branch: use just the comma separated characters.

Say Digits

Description

Here you can play the digits, one by one, in the chosen  language (defaults to English)



Parameters

  • Label: here you can type a brief description
  • Digits: the digits you want to be played: they can be both a digit string (i.e. 1234) or a VARIABLE (i.e.  {CALLERID(num)})
  • Escape digits: special character to exit from the playing (i.e. #)



Exit Arrows
This box provides just one arrow out to the next step
 

Say Number


Description

Here you can play a number (i.e. 2583 will be played like "two thousand, five hundred and eighty threes")



Parameters

  • Label: here you can type a brief description
  • Number: the number you want to be played: they can be both a digit string (i.e. 1234) or a VARIABLE (i.e.  {CALLERID(num)})
  • Escape digits: special character to exit from the playing (i.e. #)


Exit Arrows
This box provides just one arrow out to the next step


SayPhonetics


Description

Here you can sequentially play each asterisk sound file located in /var/lib/asterisk/sounds/phonetic/character_p.gsm for each character in input using the NATO Phonetic Alphabet.



Parameters

  • Label: here you can type a brief description
  • Text: the text you want to be played: it can be both a digit string (i.e. Joe) or a VARIABLE (i.e.  {CALLERID(name)})
  • Escape digits: special character to exit from the playing (i.e. #)



Exit Arrows
This box provides just one arrow out to the next step


GetDigits


Description

Here you can prompt the user to insert a series of digits: you can play the message, count the retries on errors (i.e. to avoid dangerous loops) and set a variable with the inserted digits value.


Parameters
  • Label: here you can type a brief description
  • Audio: the name of the audio file you want to play in the current box
  • Response Timeout: the maximum number of seconds the system waits before considering the customer not interacting with the application
  • Min Digit: the minimum number of digits the system can accept without considering it an invalid entry
  • Max Digit: the maximum number of digits the system waits before moving on to the next step
  • Retry: here you can set the number of loops automatically performed in case of invalid digits **
  • Variable: the variable you want to fill with the digits pressed by the customer.


** Please consider that the getdigits box gives the top priority to the invalid (i) branch (if present) before routing the call in a loop.

Pressing the # key has the same effect as the timer running out: the command ends and any previously keyed digits are returned. A side effect of this is that there is no way to read a # key using this command.
If you don't specify $max_digits then the user can enter as many digits as they want.
 
If the user doesn't press any keys when the message plays, there is $timeout milliseconds of silence then the command ends.
The user has the opportunity to press a key at any time during the message or the post-message silence. If the user presses a key while the message is playing, the message stops playing. When the first key is pressed a timer starts counting for $timeout milliseconds. Every time the user presses another key the timer is reset. The command ends when the counter goes to zero or the maximum number of digits is entered, whichever happens first.



Exit Arrows
The getdigits box lets you draw many exit arrows according to the following syntax:
  • x: is the exit arrow, the path taken when a valid digit is inserted. If not present, on valid entry the call will be dropped.
  • i: the system takes this path if the entry is invalid. If not present it will simply loop the getdigits box until it runs out of retries.
  • -: the system takes this path if it runs out of retries. If not present, when the system runs out of retries will simply drop the call.

 

GetSecretDigits

Description

Here you can prompt the user to insert a series of digits and some of them will be hidden, for security reasons. You can play the message, set how many digits you want to hide, count the retries on errors (i.e. to avoid dangerous loops) and set a variable with the inserted digits value.



Parameters
  • Label: here you can type a brief description
  • Audio: the name of the audio file you want to play in the current box
  • Response Timeout: the maximum number of seconds the system waits before considering the customer not interacting with the application
  • Min Digit: the minimum number of digits the system can accept without considering it an invalid entry
  • Max Digit: the maximum number of digits the system waits before moving on to the next step
  • Retry: here you can set the number of loops automatically performed in case of invalid digits **
  • Hidden Digits Number: the number of digits that the system will hide, for security reasons
  • Hidden Digits Position: you can set if the First or Last #N digits will be hidden
  • Variable: the variable you want to fill with the digits pressed by the customer.


** Please consider that the getsecretdigits box gives the top priority to the invalid (i) branch (if present) before routing the call in a loop.

Pressing the # key has the same effect as the timer running out: the command ends and any previously keyed digits are returned. A side effect of this is that there is no way to read a # key using this command.
If you don't specify $max_digits then the user can enter as many digits as they want.
 
If the user doesn't press any keys when the message plays, there is $timeout milliseconds of silence then the command ends.
The user has the opportunity to press a key at any time during the message or the post-message silence. If the user presses a key while the message is playing, the message stops playing. When the first key is pressed a timer starts counting for $timeout milliseconds. Every time the user presses another key the timer is reset. The command ends when the counter goes to zero or the maximum number of digits is entered, whichever happens first.



Exit Arrows

The getsecretdigits box lets you draw many exit arrows according to the following syntax:

  • x: is the exit arrow, the path taken when a valid digit is inserted. If not present, on valid entry the call will be dropped.
  • i: the system takes this path if the entry is invalid. If not present it will simply loop the getsecretdigits box until it runs out of retries.
  • -: the sytem takes this path if it runs out of retries. If not present, when the system runs out of retries will simply drop the call.



Recording



The following section explains how to perform live recordings of calls.





Record

Description

This box performs a .wav call recording to a file of the current Asterisk channel




Parameters

  • Label: here you can type a brief box description
  • Filename: display name of the file in the Recordings section.
  • Recording Format
  • Escape digits: special digits to exit the current recorded call
  • Timeout: maximum recording duration in seconds. If -1 the considered timeout is unlimited


Built-in variables

We provide the following Asterisk channel variables named

  • RECORDING_SAVENAME

which show the filename of the recording in the file system without extension.



Exit Arrows

This box provides just one arrow out to the next step
 



TTS - Text to Speech




In this section you find the blocks which can be used for text to speech conversion.




GoogleCloudTTS



Description

This box lets you perform a Text-To-Speech conversion using the Google Cloud TTS*


*Internet connection is required for this box to work


Parameters

  • Provider: the provider you want to use (Please note that it is important that you first set your subscribed Google Cloud provider in Tools/Cloud Providers, then you should be able to select that provider into the block)
  • Text Type: (mandatory) the available choices are Text (PlainText) or SSML (Speech Synthesis Markup Language: refer to Google official documentation to find out more about how to use it)
  • Text: the text you want to be translated 

  • Language Code: the language you want use for the translation

  • Voice Type: the voice of the operator (e.g. you can choose between Female/Male voice, tone of voice. Default value is Female)
  • Voice name
  • Speed: speech synthesis speed of the generated voice to adjust the speed at which words are spoken

Exit Arrows

This box provides just one arrow out to the next step



GoogleTTS

Description

This box lets you perform a Text-To-Speech conversion using the Google TTS*.

*Internet connection is required for this box to work

Warning

We do not recommend using this block in production but only for testing. We recommend using GoogleCloudTTS instead of GoogleTTS.



Parameters

  • Label: here you can type a brief description
  • Text: the text you want to be translated (the maximum text length allowed is 200 characters)
  • Language: the language you want use for the translation (i.e. it, en, etc..)


Exit Arrows

This box provides just one arrow out to the next step


Please note google TTS is offered without any warrant. You need a valid internet connection to make it working. Furthermore it is pure experimental and it can bring to unexpected behaviors.
If you need to use a professional Asterisk TTS, please consider the use of another specific TTS provided by specialized companies (i.e. Lumenvox, Vestec, etc... etc...)
 
Remember: this software is managed by others. Check if it works properly.

ISpeechTTS

Description

This box lets you perform a Text-To-Speech conversion using the Ispeech TTS Agi* Parameters


*Internet connection is required for this box to work



Parameters

  • Label: here you can type a brief description
  • Text: the text you want to be translated 
  • Key: your acquired license key from the ispeech.org account
  • Language: the language you want use for the translation (i.e. it, en, etc..)
  • Speed
  • Interrupt key


Exit Arrows

This box provides just one arrow out to the next step.


Please note Ispeech TTS require a valid key from the ispeech.org website and a sufficient amount of acquired credits. The translation use 1 credit for each word.

Remember: this software is managed by others. Check if it works properly.

AWSPolly

Description

This box enables a voice-to-text conversion function using AWS Polly Agi Parameters*.

For additional information see https://aws.amazon.com/polly/


Remember: this software is managed by others. Check if it works properly.



Parameters



Exit Arrows

This box provides just one arrow out to the next step


LumenvoxTTS

Description

This box lets you perform a Text-To-Speech conversion using the Lumenvox TTS*


*In order to make this box work you must install Lumenvox on a machine that is reachable by your system.



Parameters

  • Label: here you can type a brief description
  • Text: the text you want to be translated 
  • Options: they control details about the synthesis. Valid options are:
    • l - language to use (e.g. "en-GB", "en-US", "en-AU", etc.)
    • v - voice name to use (e.g. "Lindsey", "Chris", etc.)
    • g - voice gender to use (e.g. "male", "female")
    • p - profile to use, as specified in the mrcp.conf file
    • i - digits to allow the TTS to be interrupted with (can specify "any" to allow any digits to interrupt)
    • f - filename on disk to store audio to (audio not stored if not specified or empty)
    • epe – exit on a play error
    • pv - prosody volume (silent/x-soft/soft/medium/load/x-loud/default)
    • pr - prosody rate (x-slow/slow/medium/fast/x-fast/default)

You are not required to supply any options. Multiple options can be provided by joining options with an ampersand, e.g. l=en-US&g=female



Exit Arrows

This box provides just one arrow out to the next step


Remember: this software is managed by others. Check if it works properly.

SestekTTS

available from rel. 2.0.84

Description

This box lets you perform a Text-To-Speech conversion using the Sestek TTS.



Parameters

  • Label: here you can type a brief description
  • Text: the text you want to be translated 
  • Options: they control details about the synthesis. Valid options are:
    • l - language to use (e.g. "en-GB", "en-US", "en-AU", etc.)
    • v - voice name to use (e.g. "Lindsey", "Chris", etc.)
    • g - voice gender to use (e.g. "male", "female")
    • p - profile to use, as specified in the mrcp.conf file
    • i - digits to allow the TTS to be interrupted with (can specify "any" to allow any digits to interrupt)
    • f - filename on disk to store audio to (audio not stored if not specified or empty)
    • epe – exit on a play error
    • pv - prosody volume (silent/x-soft/soft/medium/load/x-loud/default)
    • pr - prosody rate (x-slow/slow/medium/fast/x-fast/default)

You are not required to supply any options. Multiple options can be provided by joining options with an ampersand, e.g. l=en-US&g=female



Exit Arrows

This box provides just one arrow out to the next step

Remember: this software is managed by others. Check if it works properly.

MRCPSynth

available from rel. 2.5.2


Description

This box lets you perform a Text-To-Speech conversion using the MRCPsynth TTS*


*In order to make this box work you must install MRCPsynth on a machine that is reachable by your system.



Parameters

  • Label: here you can type a brief description
  • Text: the text you want to be translated 
  • Options: they control details about the synthesis. Valid options are:
    • l - language to use (e.g. "en-GB", "en-US", "en-AU", etc.)
    • v - voice name to use (e.g. "Lindsey", "Chris", etc.)
    • g - voice gender to use (e.g. "male", "female")
    • p - profile to use, as specified in the mrcp.conf file
    • i - digits to allow the TTS to be interrupted with (can specify "any" to allow any digits to interrupt)
    • f - filename on disk to store audio to (audio not stored if not specified or empty)
    • epe – exit on a play error
    • pv - prosody volume (silent/x-soft/soft/medium/load/x-loud/default)
    • pr - prosody rate (x-slow/slow/medium/fast/x-fast/default)

You are not required to supply any options. Multiple options can be provided by joining options with an ampersand, e.g. l=en-US&g=female



Exit Arrows

This box provides just one arrow out to the next step


Remember: this software is managed by others. Check if it works properly.




ASR - Automatic speech recognition




In this section you can find the blocks used for voice-to-text functions.




GoogleASR


Description

This box allows you to do a voice-to-text conversion using the Google ASR Agi* Parameters


*Internet connection is required for this box to work


Parameters
  • Label: here you can type a brief description
  • Key: your acquired license key from the console.developers.google.com account
  • Language: the language you want use for the translation
  • Interrupt Key: special digits to exit the current recorded call
  • Timeout: maximum recording duration in seconds. If -1 the considered timeout is unlimited
  • Beep: to reproduce a beep before to record

Please note Google ASR require a valid key from the console.developers.google.com website and a sufficient amount of acquired credits. Furthermore it is pure experimental and it can bring to unexpected behaviour.

  • GOOGLE_ASR_TRANSCRIPT: the result of the dictation recognition
  • GOOGLE_ASR_CONFIDENCE: the precision of the recognition, between 0 and 1. Usually values above 0.8-0.9 means that the dictation has been correctly recognised.


Exit Arrows

This box provides just one arrow out to the next step

Remember: this software is managed by others. Check if it works properly.


ISpeechASR

Description

This box allows you to do a voice-to-text conversion using the Ispeech ASR Agi* Parameters


*Internet connection is required for this box to work

The ASR saves the results in two channel variables:
  • ispeech_asr_utterance: the result of the dictation recognition
  • ispeech_asr_precision: the precision of the recognition, between 0 and 1. Usually values above 0.8-0.9 means that the dictation has been correctly recognised.


Parameters
  • Label: here you can type a brief description
  • Key: Your acquired license key from the ispeech.org account
  • Model: the grammar of the dictation, to increase the precision of the recognition
  • Language: the language you want use for the translation
  • Interrupt Key: special digits to exit the current recorded call
  • Timeout: maximum recording duration in seconds. If -1 the considered timeout is unlimited
  • Beep: to reproduce a beep before to record

Please note Ispeech ASR require a valid key from the ispeech.org website and a sufficient amount of acquired credits. Furthermore it is pure experimental and it can bring to unexpected behaviour.  Each dictation processing requires 1 credit.


Exit Arrows  

This box provides just one arrow out to the next step


Remember: this software is managed by others. Check if it works properly.

LumenvoxASR

Description

This box allows you to do a voice-to-text conversion using the Lumenvox ASR application*


*In order to have this box working you must install Lumenvox on a machine that is reachable by your system.


The ASR save the results in three channel variables:

  • LUMENVOX_ASR_TRANSCRIPT: the result of the dictation recognition
  • LUMENVOX_ASR_CONFIDENCE: the precision of the recognition, between 0 and 1. Usually values above 0.8-0.9 means that the dictation has been correctly recognised.
  • LUMENVOX_ASR_INSTANCE: the instance of the recognition.



Parameters

  • Label: here you can type a brief description
  • Grammar: The grammar that should be used for the recognition. Grammars can be specified as text/XML inline for built-in grammars or by using a reference to an external file/URI.

If you need to use the multiple grammar, the value of the first grammar must be separated from the second one using a character defined (e.g.: grammar-a%grammar-b, defining the % as a delimiter in the options field gd):










LumenVox provides the following built-in grammars:

  

URI

  
  

Sample Input

  
  

Semantic Interpretation Result

  
  

builtin:grammar/boolean

  

  

"yes",  "no thank you", etc.

  
  

"true" or  "false"

  
  

builtin:grammar/date

  
  

"january  thirteenth" or "december first two thousand"

  
  

"????0113"  or "20001201"

  
  

builtin:grammar/digits

  
  

"one two three  four"

  
  

"1234"

  
  

builtin:grammar/currency

  
  

"eighteen dollars  and four cents"

  
  

"USD18.04"

  
  

builtin:grammar/number

  

  

"four hundred  point five"

  
  

"400.5"

  
  

builtin:grammar/phone

  
  

"area code eight  five eight seven oh seven oh seven oh seven"

  
  

"8587070707"

  
  

builtin:grammar/time

  
  

"six o  clock" or "five thirty p m"

  
  

"0600?" or  "0530p"

  



Options:

Options control details about the recognition. Valid options are:

  • p - Profile to use in mrcp.conf
  • i - Digits to allow recognition to be interrupted with. Set this to "none" to allow LumenVox to process the DTMF using a DTMF grammar. Otherwise, if "any" or other digits specified, recognition will be interrupted and the digit will be returned to dialplan.
  • f - Filename to play while recognition occurs (if empty or not specified, no file is played)
  • t - The recognition timeout (in milliseconds). This is the total amount of time a caller has to speak.
  • b - Barge-in value (no barge-in=0, ASR engine barge-in=1, Asterisk barge-in=2). LumenVox strongly recommends allowing the ASR to perform barge-in instead of Asterisk.
  • gd – The grammar delimiter. Defaults to a comma.
  • ct - The confidence threshold (0.0 - 1.0). If a recognition result has a confidence score below this value, it will be returned as "no match." Defaults to 0.5.
  • sl - The barge-in sensitivity level (0.0 - 1.0). The higher this number, the easier it is to barge-in. Defaults to 0.5.
  • sva - Speed vs. accuracy, set on a scale of 0.0 - 1.0. The higher this number, the faster (and less accurate) recognitions will be. Defaults to 0.5.
  • nb - N-best list length. Defaults to 1; increase this value if you wish to get more answers back from the recognizer.
  • nit - No input timeout. This is the amount of time the caller has to start speaking before the recognizer returns a no-input result.
  • sct - Speech Complete Timeout. This is the amount of time, in milliseconds, LumenVox must detect silence after a user stops speaking before the recognizer begins processing the utterance. Set this lower for single word utterances and higher for longer utterances. In most cases, a value of 800 is correct.
  • dit - DTMF interdigit timeout
  • dtt - DTMF terminate timout
  • dttc - DTMF terminate characters
  • sw - Save Waveform (true/false)
  • nac - new audio channel (true/false)
  • spl - speech language (en-US/en-GB/etc.). If a language is declared in a grammar (it should be) this will be ignored.
  • cdb - clear DTMF buffer (true/false)
  • mt - media type
  • iwu - input waveform URI (only applies to MRCPv2). Not supported by LumenVox.
  • sint - Speech Incomplete Timeout. Not supported by LumenVox.
  • rm - Recognition Mode. Not supported by LumenVox.
  • hmaxd - hotword max duration. Not supported by LumenVox.
  • hmind - hotword min duration. Not supported by LumenVox.
  • enm - early no match (true/false). Not supported by LumenVox.


You are not required to supply any options. Multiple options can be provided by joining options with an ampersand, e.g. f=sayHelloWorld&t=5000



Exit Arrows

This box provides just one arrow out to the next step.


Remember: this software is managed by others. Check if it works properly.



TildeASR

Description

This box allows you to do a voice-to-text conversion using the Tilde ASR Agi* Parameters


*Internet connection is required for this box to work


The ASR saves the results in two channel variables:


  • TILDE_ASR_TRANSCRIPT: the result of the dictation recognition
  • TILDE_ASR_CONFIDENCE: the precision of the recognition, between 0 and 1. Usually values above 0.8-0.9 means that the dictation has been correctly recognised.
  • TILDE_ASR_STATUS: the response status (integer)
  • TILDE_ASR_STATUS_MESSAGE: the response status message

    TILDE_ASR_STATUSTILDE_ASR_STATUS_MESSAGE
    0Success
    1No speech. Sent when the incoming audio contains a large portion of silence or non-speech
    2Aborted. Recognition was aborted for some reason.
    9Not available. Max load limit reached.
    10Authentication failed.
    11All recognition workers are currently in use and real-time recognition is not possible.

    Attention: The variables TILDE_ASR_TRANSCRIPT and TILDE_ASR_CONFIDENCE are available just when TILDE_ASR_STATUS is equal to 0

Please note Tilde ASR require a valid app key from the tilde.com website and a sufficient amount of acquired credits.


Furthermore it is pure experimental and it can bring to unexpected behaviour.



Parameters

  • Label: here you can type a brief description
  • App ID: Your App ID from the tilde.com account
  • App Secret: Your App secret from the tilde.com account
  • Interrupt Key: special digits to exit the current recorded call
  • Timeout: maximum recording duration in seconds. If -1 the considered timeout is unlimited
  • Beep: to reproduce a beep before to record
  • URI: insert here your custom Tilde server URI (default standard value is wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE)



Exit Arrows

This box provides just one arrow out to the next step.


Remember: this software is managed by others. Check if it works properly.

SestekASR

available from rel. 2.0.84

Description

This box allows you to do a voice-to-text conversion using the Sestek ASR*


*Internet connection is required for this box to work

The ASR save the results in three channel variables:

  • SESTEK_ASR_TRANSCRIPT: the result of the dictation recognition
  • SESTEK_ASR_CONFIDENCE: the precision of the recognition, between 0 and 1. Usually values above 0.8-0.9 mean that the dictation has been correctly managed
  • SESTEK_ASR_INSTANCE: the instance of the recognition.





Parameters

  • Label: here you can type a brief description
  • Grammar: The grammar that should be used for the recognition. Grammars can be specified as text/XML and its full path on the local server must be provided, like in the following example:


  • Options control details about the recognition. Valid options are:
    • p - Profile to use in mrcp.conf
    • i - Digits to allow recognition to be interrupted with. Set this to "none" to allow Sestek to process the DTMF using a DTMF grammar. Otherwise, if "any" or other digits specified, recognition will be interrupted and the digit will be returned to dialplan.
    • f - Filename to play while recognition occurs (if empty or not specified, no file is played)
    • t - The recognition timeout (in milliseconds). This is the total amount of time a caller has to speak.
    • b - Barge-in value (no barge-in=0, ASR engine barge-in=1, Asterisk barge-in=2). Sestek strongly recommends allowing the ASR to perform barge-in instead of Asterisk.
    • gd – The grammar delimiter. Defaults to a comma.
    • ct - The confidence threshold (0.0 - 1.0). If a recognition result has a confidence score below this value, it will be returned as "no match." Defaults to 0.5.
    • sl - The barge-in sensitivity level (0.0 - 1.0). The higher this number, the easier it is to barge-in. Defaults to 0.5.
    • sva - Speed vs. accuracy, set on a scale of 0.0 - 1.0. The higher this number, the faster (and less accurate) recognitions will be. Defaults to 0.5.
    • nb - N-best list length. Defaults to 1; increase this value if you wish to get more answers back from the recognizer.
    • nit - No input timeout. This is the amount of time the caller has to start speaking before the recognizer returns a no-input result.
    • sct - Speech Complete Timeout. This is the amount of time, in milliseconds, Sestek must detect silence after a user stops speaking before the recognizer begins processing the utterance. Set this lower for single word utterances and higher for longer utterances. In most cases, a value of 800 is correct.
    • dit - DTMF interdigit timeout
    • dtt - DTMF terminate timout
    • dttc - DTMF terminate characters
    • sw - Save Waveform (true/false)
    • nac - new audio channel (true/false)
    • spl - speech language (en-US/en-GB/etc.). If a language is declared in a grammar (it should be) this will be ignored.
    • cdb - clear DTMF buffer (true/false)
    • mt - media type
    • iwu - input waveform URI (only applies to MRCPv2)
    • sint - Speech Incomplete Timeout
    • rm - Recognition Mode
    • hmaxd - hotword max duration
    • hmind - hotword min duration
    • enm - early no match (true/false)


You are not required to supply any options. Multiple options can be provided by joining options with an ampersand, e.g. f=sayHelloWorld&t=5000


Exit Arrows

This box provides just one arrow out to the next step.


Remember: this software is managed by others. Check if it works properly.

MRCPRecog

available from rel. 2.5.2

Description

This box allows you to do a voice-to-text conversion using the MRCPRecog application*


*you must install MRCPRecog on a machine that is reachable by your system for this box to work 


The ASR save the results in three channel variables:

  • MRCP_RECOG_TRANSCRIPT: the result of the dictation recognition
  • MRCP_RECOG_CONFIDENCE: the precision of the recognition, between 0 and 1. Usually values above 0.8-0.9 means that the dictation has been correctly recognised.
  • MRCP_RECOG_INSTANCE: the instance of the recognition.



Parameters

  • Label: here you can type a brief description
  • Grammar: The grammar that should be used for the recognition. Grammars can be specified as text/XML inline for built-in grammars or by using a reference to an external file/URI.

If you need to use the multiple grammar, the value of the first grammar must be separated from the second one using a character defined (e.g.: grammar-a%grammar-b, defining the % as a delimiter in the options field gd):



MRCPRecog provides the following built-in grammars:

  

URI

  
  

Sample Input

  
  

Semantic Interpretation Result

  
  

builtin:grammar/boolean

  

  

"yes",  "no thank you", etc.

  
  

"true" or  "false"

  
  

builtin:grammar/date

  
  

"january  thirteenth" or "december first two thousand"

  
  

"????0113"  or "20001201"

  
  

builtin:grammar/digits

  
  

"one two three  four"

  
  

"1234"

  
  

builtin:grammar/currency

  
  

"eighteen dollars  and four cents"

  
  

"USD18.04"

  
  

builtin:grammar/number

  

  

"four hundred  point five"

  
  

"400.5"

  
  

builtin:grammar/phone

  
  

"area code eight  five eight seven oh seven oh seven oh seven"

  
  

"8587070707"

  
  

builtin:grammar/time

  
  

"six o  clock" or "five thirty p m"

  
  

"0600?" or  "0530p"

  


Options:

Options control details about the recognition. Valid options are:

  • p - Profile to use in mrcp.conf
  • i - Digits to allow recognition to be interrupted with. Set this to "none" to allow MRCPRecog to process the DTMF using a DTMF grammar. Otherwise, if "any" or other digits specified, recognition will be interrupted and the digit will be returned to dialplan.
  • f - Filename to play while recognition occurs (if empty or not specified, no file is played)
  • t - The recognition timeout (in milliseconds). This is the total amount of time a caller has to speak.
  • b - Barge-in value (no barge-in=0, ASR engine barge-in=1, Asterisk barge-in=2). MRCPRecog strongly recommends allowing the ASR to perform barge-in instead of Asterisk.
  • gd – The grammar delimiter. Defaults to a comma.
  • ct - The confidence threshold (0.0 - 1.0). If a recognition result has a confidence score below this value, it will be returned as "no match." Defaults to 0.5.
  • sl - The barge-in sensitivity level (0.0 - 1.0). The higher this number, the easier it is to barge-in. Defaults to 0.5.
  • sva - Speed vs. accuracy, set on a scale of 0.0 - 1.0. The higher this number, the faster (and less accurate) recognitions will be. Defaults to 0.5.
  • nb - N-best list length. Defaults to 1; increase this value if you wish to get more answers back from the recognizer.
  • nit - No input timeout. This is the amount of time the caller has to start speaking before the recognizer returns a no-input result.
  • sct - Speech Complete Timeout. This is the amount of time, in milliseconds, MRCPRecog must detect silence after a user stops speaking before the recognizer begins processing the utterance. Set this lower for single word utterances and higher for longer utterances. In most cases, a value of 800 is correct.
  • dit - DTMF interdigit timeout
  • dtt - DTMF terminate timout
  • dttc - DTMF terminate characters
  • sw - Save Waveform (true/false)
  • nac - new audio channel (true/false)
  • spl - speech language (en-US/en-GB/etc.). If a language is declared in a grammar (it should be) this will be ignored.
  • cdb - clear DTMF buffer (true/false)
  • mt - media type
  • iwu - input waveform URI (only applies to MRCPv2). Not supported by MRCPRecog.
  • sint - Speech Incomplete Timeout. Not supported by MRCPRecog.
  • rm - Recognition Mode. Not supported by MRCPRecog.
  • hmaxd - hotword max duration. Not supported by MRCPRecog.
  • hmind - hotword min duration. Not supported by MRCPRecog.
  • enm - early no match (true/false). Not supported by MRCPRecog.


You are not required to supply any options. Multiple options can be provided by joining options with an ampersand, e.g. f=sayHelloWorld&t=5000



Exit Arrows

This box provides just one arrow out to the next step.


Remember: this software is managed by others. Check if it works properly.




Integration Server




This group provides the capabilities to connect the IVR application with a remote DB Schema, so to perform queries and operations.  






Database

Description

This box lets you perform a query to a DB schema. You must define a DB connection according to the instructions (please refer to the ODBC section) 


Parameters

  • Label: here you can type e a brief description
  • Database: select the DB you want to connect to
  • Query: here you can perform a DB query (SQL statement)
  • Variable: here you can choose a variable from a pick up list where you want to store the query results.  Please consider the variable is a matrix where the columns are mapped to the fields you put in the SELECT clause of your SQL statement, and the rows are the records returned by the query. The first row is addressed with the 0 index and the next ones are addressed with 1, 2, etc, etc


i.e.:

the variable name is RESULT and the query is "SELECT order_num FROM orders"

the query result will be saved into a matrix as follows:

RESULT[0][order_num]

RESULT[1][order_num]

RESULT[2][order_num]

RESULT[3][order_num]

RESULT[n][order_num]




Built-in variables

We provide the following Asterisk channels variables named

  • variable name + _ROWS_COUNT:shows the number of affected rows (only for SELECT statements).


Example: RESULT_ROWS_COUNT



Exit Arrows

This box provides just one arrow out to the next step


SendMail

Description

This box lets you send an email to a specified email address(es). Before using this block, please configure the email accounts under the Email channel or the SMTP section.

Parameters

  • Label: here you can type a brief description
  • Account: select an email account you have configured under the Email channel or in the SMTP section.
  • To: Recipient email address. You can put multiple email addresses separated by a comma.
  • CC: Recipient in copy. You can put multiple email addresses separated by a comma.
  • Subject: Subject of the email.
  • Text: Body of the email. You can use channel variables to customize your text.



Exit Arrows

This box provides just one arrow out to the next step


SendSMS

Description

This box lets you send a text message (SMS) to one recipient


Parameters

  • Account: select a SMS account from the list you have configured.
  • To: recipient of the SMS

The recipient number must be:

  • internationally formatted number, if you use Twilio, Connectel, ClickSend or Plivo
  • internationally formatted number without +, if you use Skebby
  • Text: body of the SMS (you can use channel variables to customize your text)



Exit Arrows

This box provides just one arrow out to the next step


Dialogflow


DEPRECATED FROM REL. 2.5.7


Description

This box allows you to build a voice bot using the Google Dialogflow integration (click clip1 and clip2 and learn more about this topic!)


*Internet connection is required for this box to work



Parameters

  • Label: here you can type a brief description
  • Key: your acquired client api key from the console.dialogflow.com account
  • Text: the text you want to send
  • Language: the language you want use for the bot


Please note Dialogflow require a valid key from the console.dialogflow.com website and a sufficient amount of acquired credits.

Furthermore it is pure experimental and it can bring to unexpected behaviour.


The Dialogflow block saves the results in the following variables:

    • DIALOGFLOW_SOURCE: Request source name. 

    • DIALOGFLOW_RESOLVEDQUERY: The query that was used to produce the result.

    • DIALOGFLOW_ACTION: Matched Dialogflow intent action name.

    • DIALOGFLOW_SPEECH: Text to be pronounced to the user.

    • DIALOGFLOW_SCORE: Matching score for the intent (0-1).

    • DIALOGFLOW_STATUSCODE: Response status code. For more information, please see here https://dialogflow.com/docs/fulfillment#errors

    • DIALOGFLOW_ENDCONVERSATION: True when 'end conversation' flag is set for the matched dialogflow intent. Useful when you want to transfer a call to an agent (true/false).

    • DIALOGFLOW_ISFALLBACKINTENT: True when matched dialogflow intent is fallback intent (true-false).


Release notes

DIALOGFLOW_ENDCONVERSATION and DIALOGFLOW_ISFALLBACKINTENT variables are available from version 2.0.77



Exit Arrows

This box provides just one arrow out to the next step


Remember: this software is managed by others. Check if it works properly.

click here to learn more about voicebot triggers useful to enable conversation transcript view

DialogflowV2


available from rel. 2.5.7

Description

This box allows you to build a voice bot using the Google Dialogflow integration


*Internet connection is required for this box to work



Parameters

  • Label: here you can type a brief description
  • Project ID: Cloud Platform project ID
  • Client Email: email address associated to Service Account Key
  • Private Key: private key associated to Service Account Key
  • Language: the language you want use for the bot
  • Text: the text you want to send


Please note Dialogflow requires a valid Service Account Key and a sufficient amount of acquired credits.

Furthermore it is pure experimental and it can bring to unexpected behaviour.


The DialogflowV2 block saves the results in the following variables:

    • DIALOGFLOWV2_ACTION: Matched Dialogflow intent action name
    • DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT: True if all required parameter values have been collected (true-false)
    • DIALOGFLOWV2_ENDCONVERSATION: True when 'end conversation' flag is set for the matched dialogflow intent. It is useful when you want to transfer a call to an agent (true/false)
    • DIALOGFLOWV2_FULLFILLMENTTEXT: The text to be pronounced to the user or shown on the screen
    • DIALOGFLOWV2_INTENTNAME: The unique identifier of the intent
    • DIALOGFLOWV2_INTENTDISPLAYNAME: The display name of the intent
    • DIALOGFLOWV2_ISFALLBACKINTENT: True when matched dialogflow intent is fallback intent (true-false)
    • DIALOGFLOWV2_LANGUAGECODE: The language that was triggered during intent detection
    • DIALOGFLOWV2_QUERYTEXT: User input
    • DIALOGFLOWV2_RESPONSEID: The unique identifier of the response
    • DIALOGFLOWV2_SCORE: Matching score for the intent (0-1)
    • DIALOGFLOWV2_SPEECH: Text to be pronounced to the user
    • DIALOGFLOWV2_RESOLVEDQUERY: The query that was used to produce the result.



Exit Arrows

This box provides just one arrow out to the next step


Remember: this software is managed by others. Check if it works properly.

click here to learn more about voicebot triggers useful to enable conversation transcript view

Amazon Lex

available from rel. 2.0.77

Description

This box allows you to build a voice bot using the Amazon Lex integration.

For additional information see https://docs.aws.amazon.com/en_us/lex/latest/dg/getting-started.html


*Internet connection is required for this box to work



Parameters

The Amazon Lex block saves the results in the following variables:

    • AWS_LEX_INTENTNAME: The current user intent that Amazon Lex is aware of. (Read more)

    • AWS_LEX_MESSAGE: The message to convey to the user. 

    • AWS_LEX_MESSAGEFORMAT: The format of the response message. (Read more)

    • AWS_LEX_DIALOGSTATE: Identifies the current state of the user interaction. (Read more)

    • AWS_LEX_SLOTTOELICIT: If the AWS_LEX_DIALOGSTATE value is ElicitSlot, returns the name of the slot for which Amazon Lex is eliciting a value.

    • AWS_LEX_SLOT_*: The intent slots that Amazon Lex detected from the user input in the conversation. (ex. AWS_LEX_SLOT_PICKUPCITY)



Exit Arrows

This box provides just one arrow out to the next step


Remember: this software is managed by others. Check if it works properly.

click here to learn more about voicebot triggers useful to enable conversation transcript view

SestekNDA

available from rel. 2.0.84

Description

This box allows you to build a voice bot using the Sestek NDA* Integration.


*Internet connection is required for this box to work



Parameters

  • Label: here you can type a brief description
  • NDAUth URL: NDA Authentication URL (provided by Sestek NDA)
  • Username: Authentication name (provided by Sestek NDA)
  • Password: Authentication password (provided by Sestek NDA)
  • NDASSISTANT URL: NDA Assistent URL (provided by Sestek NDA)
  • Text: the text you want to send (required)



The SestekNDA block saves the results in the following variables:

    • SESTEK_NDA_SPEECH:  Text to be pronounced to the user.

    • SESTEK_NDA_ACTION

    • SESTEK_NDA_ACTIONDATA



Exit Arrows

This box provides just one arrow out to the next step


Remember: this software is managed by others. Check if it works properly.

RestAPI

available from rel. 2.4.12

Description

This box allows you to use Restful API to GET, POST, PUT, DELETE data from external applications or sources (for example: ticketing systems, CRM, order systems, and so on). The result of the API request (Body) can also be stored in a Variable.


*Internet connection is required for this box to work



Parameters

  • Label: here you can type a brief description
  • URL: request URL
  • Method: HTTP method (GET, POST, PUT or DELETE)
  • Timeout: request timeout (in seconds: it must be greater than 1 and the default value is 5)
  • Computed Variables Script Path: absolute path of a NodeJS script able to compute variables to pass in the URL, Headers and Bod
  • Headers: request headers (it must be in RAW JSON format, i.e. {"key": "value"})
  • Body: request body (it must be in RAW JSON format, i.e. {"key": "value"})
  • Variable: here you can choose a variable from a pick up list where you want to store the body of the response. The system will parse the body of the response and it will create a variable for each key-value pair using the format variable name + <key> (e.g. variablename.key, variablename.index.key or variablename.key[0].subkey if key is an array, and so on)

Custom script guidelines

You can valorize custom variables to use in you request using a nodejs script located on your server.

You can insert the absolute path to the script inside the Computed Variables Script Path input.

Remember to follow these important rules:

  • insert the absolute path to the file
  • write the path without quotes
  • the motion user must have both read and write and execution privileges on the js file (or it won't work at all once it is required).
  • The js script must be written in javascript ECMA5, and follow the NodeJs 6.x framework syntax based on this template:

module.exports = function({options_object}, callback){

// custom code

var variables = { code output as object }; // it must be an object, not an array

callback(null, variables);

}

The script also receives the options you inserted in the restAPI block, including URL and method, so you can use them in the script if needed.

e.g.

const { URL } = require('url');

module.exports = function(options, callback){

var request = options;

var method = request.method;

var uri = request.uri;

const myURL = new URL(uri);

var host = myURL.host;

var hostname = myURL.hostname;

var href = myURL.href;

var pathname = myURL.pathname;

// etc...

// additional custom code

var variables = { code output as object };

callback(null, variables);

}


Variables and custom (script) variables

To include asterisk variables in your URL, you must include them in curly brackets.

e.g.

https://myurl.com?phone={CALLERID(num)}

The same apply if you want to include them in the body of your request, or in your headers ( pay attention to the quotes "").

e.g.

{

"phone":"{CALLERID(num)}"

}

To include custom (script) variables, you must include them in double dollar $$ symbols.

e.g.

Your script returns an object like this:

{

key1: "value1",

key2: "value2"

}

To use them in your URL you can write:

https://myurl.com?myvar1=$$key1$$&myvar2=$$key2$$

and it will be completed like this:

https://myurl.com?myvar1=value1&myvar2=value2

The same apply if you want to include them in the body of your request, or in your headers ( pay attention to the quotes "").

So, if your body/header object is written like this:

{

"myvar1":"$$key1$$",

"myvar2":"$$key2$$"

}

it will be completed like this:

{

"myvar1":"value1",

"myvar2":"value2"

}

NOTE: All special chars in the returned strings from the script are escaped ( e.g. the slash / character is translated to &#x27, so if you want to avoid that you need to in clude an & symbol before the variable name:

e.g.

{

"myvar1":"$$&key1$$",

"myvar2":"$$&key2$$"

}


Built-in variables

We provide the following Asterisk channels variables named

  • variable name + _STATUS_CODE: shows the HTTP request status code
  • variable name + _STATUS_MESSAGE: shows the HTTP request status message


Example: RESULT_STATUS_CODE



Exit Arrows

This box provides just one arrow out to the next step






Call Flow



In this group you find the boxes useful to design the call flow according to:

  • The interaction between the customer and the application
  • The query results
  • The arithmetic calculation results
  • Other


Goto

Description

This box lets you divert the call to another object like

  • Another IVR application
  • A queue rule
  • A fixed extension
  • Generally speaking a specific Asterisk context


Parameters

  • 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


Exit Arrows

This box provides just one arrow out to the next step


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



Gotoif


Description

Performs a conditional jump according to a comparison result


Parameters

  • Label: brief description
  • Condition: it is 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:

http://www.w3schools.com/js/js_operators.asp



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


GotoifTime

Description

This box lets you take decisions based on the time intervals**



Parameters

  • 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


Description

This block is very similar to the menu block, unlike the fact that the pat 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.



Parameters

  • 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 match the value of the variable
It is possibile to add multiple choices for each output branch: just use the comma separated characters.
 


Stats





Goal

Description

Thanks to this box you can set a goal into the IVR structure and have a trace if the user has reached this goal, on the database. This can be useful for the IVR Statistics, that you can extract in the XCALLY Analytics section.


Parameters

Label: brief description

Goal Name: the name of the goal


Exit Arrows

This box provides just one arrow out to the next step


General





NoOp

Description

The box lets you put a label message in your application. You will find the label in the CLI log on the asterisk console (asterisk –r on your Linux machine). The purpose of the NoOp box is to help your application debug



Parameters

  • Label: here you can type e a short description
  • Output: here you can write the label you want to display on the asterisk CLI logs



Exit Arrows

This box provides just one arrow out to the next step


System


Description

Calls an external command or script



Parameters

  • Label: brief description
  • Command: here you can type the command you want the Linux system to execute (please consider you need to specify the full script path)
  • Variable: variable used to return a parameter value 


Exit Arrows

This  box provides just one arrow out to the next step


AGI


Description

The Asterisk Gateway Interface is an interface you can use to add functionality to Asterisk using many different programming languages: Perl, PHP, C, Pascal, Bourne Shell etc...

This box lets you to perform an AGI command



Parameters

  • Label: brief description
  • Command: here you can type the command you want the system to execute
  • Arguments:  the arguments needed according to the AGI command syntax


Exit Arrows

This box provides just one arrow out to the next step


SubProject

Description

This box calls another Cally Square project inside the current one. It’s useful to mange complex projects, so you can make separate simpler projects and recalling them inside a main one.



Parameters

  • Label: here you can type a brief box description
  • Subproject: name of the Cally Square project you want to recall inside the current one



Exit Arrows

This box has one exit arrow


Custom App


Description

This box allows to run Asterisk applications (see here for further information) in your IVR flow.



Parameters

  • Label: here you can type a brief box description
  • Application: application name
  • Options: see the arguments related to each application


Exit Arrows

This box has only one exit arrow.




























































For additional information please refer to the Asterisk  Applications Guide


























































































Important

A callback scenario is something in which your customers waiting in queue can optionally be diverted to a callback capability. Such capability invites the customer to leave the queue, thus the call center will call him/her back in a lighter traffic period. This feature is mostly used with a queue campaign and it works only if you have the Motion Dialer license

Let's consider that Queue campaign time interval is from 8:00-18:00 and Callback Delay is 30 min. If a customer calls in at 17:40 and decided to be called back, the contact will be scheduled for 18:10. Keep in mind that this is out of the campaign time interval hence Motion Bull will call the contact in the next valid time interval and when there is at least one available agents.




















Agent Management Sample IVR

You can find a sample Agent Management IVR Project on your server: see here how it works.






































































Important

The mathematical operation must follow the javascript rules: Operators and String Methods.











































































































































































** Example of Filename: recording-{EPOCH}-{CALLERID(num)}

(You will get something like recording-1393061376-243534507 where 1393061376 is the timestamp and 243534507 is the caller number)

The recordings will be available for listening inside the Recordings section.
















Text input specific synytax

You can insert Asterisk* variables inside the Text input.

The Asterisk* variables must be insert without quotes, e.g.:

Hi{CALLERID(name)}we will call you back at {CALLERID(num)}


































































































































































































































































































































































































































































































































































































About REST API

RESTful API (REST is an acronym for Representational State Transfer) is an application program interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data: the client requests the server for the required information, via an API, and then, the server sends a response to the client.
The data returned by the server, in response to the request of the client is either in the format of JSON or XML. Both JSON and XML format have a proper hierarchical structure of data. REST is an architectural style as well as an approach for communication purposes that is often used in various web services development (the architectural style of REST helps in leveraging the lesser use of bandwidth to make an application more suitable for the internet).