Interactive voice response
From Wildix
Interactive Voice Response (IVR) is the technology that let you interact with a menu uses a touch-tone telephone.
In telephony, IVR (which is short for Interactive Voice Response) is a computerized phone system and supporting software that allows a person, typically a telephone caller, to select an option from a voice menu and otherwise interface with a computer system. Generally the system plays pre-recorded voice prompts to which the person presses a number on a telephone keypad to select the option numbers in answer to the voice prompts. The caller can likewise select options by spoken command.
Contents |
IVR Editor
User can simply create IVR using IVR editor provided by WMS.
WMS Interface provide some non standard IVR implementation. Each IVR tree contatins two types of nodes: items and menus. Ivr Menu - special node, that can contain subnodes (items or menus), and have some advanced parameters:
- Sound file - announce file, that will be played to user when user enters this menu.
- Times - this parameter describe how many times must be played announce if user don't make a choise and not enter to any submenu. Can be infinity (leave empty or set -1);
- Timeout - describes a timeout (in seconds) for replaying announce. Actually describe how many time PBX must wait before replaying announce. Can be infinity (leave empty or set -1);
- backcode - Special key for returning to parent menu. If not set will be used default key '#' (pound)
- contex, extension, priority - optionally pbx can execute GoTo to described context|extension|priority when times counter exceed it's value.
Ivr Item - some another IVR tree node. This nodes describe a command, that should be executed, when user press a digit assigned to this item in parent menu. Currently WMS support follow commands:
- Playback - Just playback a selected file. Optionally after playback PBX can execute GoTo to selected contex|extension|priority.
- Macro - Execute a described macro with described parameters. Optionally if macro execution fails (MACRO_OFFSET channel variable set, called application MacroExit(-1), etc) - PBX can execute goto to described context|extension|priority
- Goto - Just simple make a goto to described context|extension|priority
- Authenticate - execute Authenticate application. Optionally can execute a GoTo to described context|extension|priority when authentication fails or success depends on 'Goto on success' checkbox.
- Queue - Will join user to described queue.
Each IVR menu also can contains 'special items':
- Startup item - Item that will be executed when user enter menu. Startup item will be executed only once in current menu, but if user leave this menu (press a 'backcode' digit) and try to enter this menu again - startup item will be executed again. Very useful to create ivr menus with authorization access.
- Invalid choice - Special item that will be executed when user press a digit that not a backcode and not match to numbers of children nodes.
- Exit item - This item will be executed when user leave menu (press a 'backcode' digit).
Application IVR
Application IVR provides IVR behavior, described before, and allow to user start proceeding of IVR trees from asterisk dialplan.
Usage: exten => [pattern], [prio], Ivr(treename) treename - Symbolic name of tree for proceed.
Application IVR provided in asterisk module app_ivr.so. Note, that module res_wmsfeatures.so must be loaded before loading module app_ivr.so.
Asterisk CLI commands set
ivr show [tree]
ivr show - show available IVR trees. ivr show tree [treename] - dump to console specified IVR tree
w90*CLI> ivr show
Tree #93 number: Main
Tree #94 number: WildixMainIvr
w90*CLI> ivr show tree
Main WildixMainIvr
w90*CLI> ivr show tree WildixMainIvr
-= WildixMainIvr =-
====================================================
Menu: WildixMainIvr ( 0 -> 94 )
[backcode: 0 times: 1
[timeout: 0
[sound: welcome
[c|e|p: wil-ivr|4|1
[childrens: 5
#include => 1
#include => 2
#include => 3
#include => 4
#include => 9
.
Item: 1 ( 94 -> 95 )
[cmd => 0: GoTo(wil-ivr|1|1)
[c|e|p => wil-ivr|1|1
Item: 2 ( 94 -> 96 )
[cmd => 0: GoTo(wil-ivr|2|1)
[c|e|p => wil-ivr|2|1
Item: 3 ( 94 -> 97 )
[cmd => 0: GoTo(wil-ivr|3|1)
[c|e|p => wil-ivr|3|1
Item: 4 ( 94 -> 98 )
[cmd => 0: GoTo(wil-ivr|4|1)
[c|e|p => wil-ivr|4|1
Menu: 9 ( 94 -> 99 )
[backcode: 0 times: 1
[timeout: 20
[sound: agent-loginok
[c|e|p: (null)|h|1
[childrens: 2
#include => s
#include => i
.
Item: s ( 99 -> 100 )
[cmd => 1: Authenticate(1234|)
[c|e|p => ||
Item: i ( 99 -> 101 )
[cmd => 2: Playback(invalid)
[c|e|p => ||
.
====================================================
ivr destroy [tree]
ivr destroy - destroy all loaded IVR trees ivr destroy tree [treename] - destroy only specified tree
ivr reload [tree]
ivr reload - reload all available ivr trees; ivr reload tree [treename] - reload only specified ivr tree
