IVR

Interactive voice response is what we call IVR. When you dial 10086 and you will hear voice instruction to guide you for services. IVR can be used to guide customers, deal interactive services, play voice broadcast etc.

Module function: Set the voice process and control the IVR flow.

Add Main Flow

Add main ivr flow, which contains many sub-flow. And only main flow can be the original entrance for ivr, and can have an independent extionsion number Name:to show the purpose or function of this ivr.

Team:apply the data to which team. And when the team is set, the system will automatically get the voice file and queue information under this team.

Extension:we can see this as the telephone number of this ivr in the system, and take this ivr as an automatic interaction telephone. Extension number can only be numbers and not be the same as other extensions.

Failover: the setting when the main flow fails and where to turn to, and the cause to the failure: ivr reaches the max loop time; fail to call web service; fail to play broadcast; no target has been set to the flow; IVR fails to switch to the device. When these situations occur, the flow will be switched to this target set here.

导致失败的原因:

  • ivr达到最大循环次数;
  • 调用webservice失败;
  • 播放语音出错;
  • 本节点未设置任何转向目标;
  • 转向源未匹配到任何转向目标;
  • ivr直接转分机失败

以上几种情况发生时,流程会自动转入失败转向所设置的转向目标。

Failed Announce: this function is not enabled.

IVR event url:the http URL where the call events related to IVR are sent to ( program can be used to analyse the recordings). This can be left blank, and documentary recording is default. When using dialer dials IVR , and choose documentary recording, the system will record the ivr path into campaign call recording, and get the input of customers in the IVR .

该参数默认是隐藏,由系统配置文件中的 eventurl_display 参数来控制是否显示.

Web Service time out: in this main flow, when perform all acts related to calling web service, and the program runs out of time, it will lead to “fail over to”.

Max loop times : The max time the flow is allowed to be called. And when it exceeds this time, it will turn to “fail over to”.

Save variables : To send the certain variables which are dealt in the flow to the agent or the program that receives through call events (enabled in version 2.0).

Configure Action

IVR action contains the types shown in the picture above ↑.

Answer

In order to process IVR correctly, in most flow we should set this action first. When the route supports progress (like the theory of ring back music), that is, it plays before the call is answered.↓

Some application will answer by default, like Conference

Play announce

Play a certain broadcast, and during this the button pressing is invalid, and it will play regardless of the input.

System supports two type of voice announcement:

  • System announcement from announcement, you can just select from the drop down menu ↓

  • A file path which is returned from a web service, in this case it would be more flexible, you can integrate with a TTS (text to speech) system, please make sure the file you want the IVR to play exists on same hard disk of CTI server.↓

WS address: the web service address which would be used to get file name.

WS function: the function name in the web service.

WS Param: the parameters which will be passed to the web service. To know how to use parameters in asterCC , please read the following part for web service action.

Voice Path: the file path of the file returned from the web service, if it's configured, file path would be “Voice Path” + “/webservice” + “returned string”, if not, it will be “returned string”.

Loop times: How many times it will be played before user hangup.

Read Data

Play a announcement and waiting for customer input, once customer press a button, the announcement would be interrupted.↓

It is same as “Play announce”, the voice could come from an announcement or webservice.

Save Variable: By default, custom input will be saved to variable “inputcode”, but this variable is only available in current node, let's say in a flow, customer input 123, this value will be saved to “inputcode” but when it goes to another flow, it will lost this value, if you have several “Read Data” in same flow, it will only save the last value. So if you want to keep this value in your IVR, you could save it to a variable here, the variable name should be capital letters, dash or underscore.

Max Digits: Limit the maximum allowed in this action, 0 means unlimited, when the length of customer input reaches this value, the system will go to next action.

Timeout: If system doesn't receive any input after this value(in seconds), it will go to next action, 0 means no time out.

In the following three cases the system will end the read data action:

  1. the input reaches the limit
  2. timeout
  3. end with #, when user input #, system will think the input is done, so it's better don't use # as an input option

In a read data action, if you know the input length, say a credit card number has 12 digits, it's better you add a input limit, then when user input 12 digits, system will continue, user don't enter # or wait for time out, if it's flexible length, you can ask user to end input with # key.

Web Service

调用外部webservice接口。↓

WS 地址: 获取语音文件名所调用webservice的地址(webservice接口请使用utf8编码)。

WS 方法名: 获取语音文件名所调用webservice的方法名。

WS 参数: 获取语音文件名所调用webservice的参数,参数写法为每个参数以竖线“|”分隔,参数可为系统内部变量(见下表)或流程中自定义的变量,也可以为字符串,字符串写法为[字符串内容]。例如要传参数为:主叫号码、流水号、当前语言、字符串abc.txt、主定义变量CARDNO,则写为 callerid|sessionid|CURLANG|[abc.txt]|CARDNO

Internal Variables

  • systime
  • inputcode
  • callerid
  • didnumber
  • sessionid
  • TEAMID
  • TEAMIDENTITY
  • ENTERSYS
  • CURLANG
  • CURIVRID
  • AGENTNO
  • AGENTGROUPID
  • MODELTYPE
  • MODELID
  • systen current time
  • last customer input
  • caller id
  • DID number
  • session id of the call
  • team ID
  • team identity
  • answer time
  • channel languange
  • IVR id
  • last agent No.
  • last queue id
  • business type
  • business id

Variable is case-sensitive

WS 返回值:为webservice返回值加标识,以便保存全局变量时使用;webservice返回值要求为字符串,多个值之间以竖线“|”分隔,且第一个返回值会默认保存为inputcode,其它返回值按顺序依照此项设置进行标识,此参数请以大写字母开头,且只允许包含大写字母,数字,中横杠“-” ,下划线“_”。

全局变量: 将WS 返回值中标识的返回值设为全局可用变量,多个参数同样使用竖线“|”分隔,要设置的全局变量必须为WS 返回值中的参数,如WS 返回值 设置为 USERID|CREDIT , webservice 返回 1|001|321|ABC, 则第一个返回值 1 会存入内部变量inputcode中,根据WS 返回值的设置第二个参数标识为USERID,第三个参数标识为CREDIT , 如果想将这两个返回值都设为全局变量,则全局变量应设为USERID|CREDIT(先后顺序没有要求,USERID|CREDIT和CREDIT|USERID效果相同),如果只需要CREDIT设为全局变量,那么全局变量只设为CREDIT即可。

Transfer

When all actions in this IVR are done, you want to guide customer to another IVR, we need config “Transfer”

For example, your first IVR is an announcement “Welcome to our company, for sales press 1, for support press 2”. Then we need config where caller would go after pressing 1 or 2.

Save your IVR first, then find the IVR in IVR list, double click the record, click “Transfer” in edit window

According to different transfer object, you need choose different parameters

  • Extension, when customer input match “Condition” , transfer caller to one extension

  • Announcem, 一般配合“获取数据”的ivr使用,播报获取到的内容(需要选择后续动作=是,如果为否,仅是播放一则语音告知客户而已)。

输入,客户输入什么内容时,才触发此目标。

转向目标,选择你要播报的语音文件。

后续动作、动作类型,配合“获取数据”功能使用,譬如转向目标播放“您的卡内余额为”,接着播放后续动作的语音(号码,金额,数字)。

动作参数,指你程序返回值对应的变量,例如上文中提到的“CREDIT”,即“您的卡内余额为”+“CREDIT”(按照金额方式读出)。

返回语音,提高客户体验度,提示客户按*返回上一级菜单。

后续语音,提高客户体验度,播报返回值后(“您的卡内余额为”+“CREDIT”),提示“重听请按1”。

可参照下述实例中的步骤三。

  • IVR, send caller to another IVR

  • Queue, send caller to a queue, then agent in the queue could take the call.

If you select Auto Switch, system will send the call to a idle queue randomly.

Skip Circular Queue, ignore the queue announcement

  • Ring group, send caller to a ring group

  • Application

  • Conference, send caller to a conference room

  • Voicemail, send caller to a voice mail box

  • Busy, system will send busy signal, and caller will hear busy tone

  • Hangup, system will hang up the call

  • Fax, give fax tone, so caller could send a fax

  • ORoute, outbound route, send caller to an outbound route

  • Record,for call recording

  • Send DTMF

  • Requect Callback, system will save the caller id, generate a call back request and send to agents

实例

要求:客户进线后,首先播报公司介绍,告知客户咨询请按1(转到客服部做产品解答),技术服务按2(转到技术部人工服务),产品许可查询按3(要求客户输入产品序列号,系统进入数据库查询后,告知客户当前许可信息)

准备工作

请确保你的系统中已存在坐席组客服部和技术部,且组内坐席能够使用内线分机互相通话。

语音录制要求:16位8kHz单通道PCM格式的wav文件。

电脑话务_录音格式.jpg

  1. 录制语音1,内容“欢迎致电本公司,产品咨询请按1,技术服务请按2,许可查询请按3”;
  2. 录制语音2,内容“请输入产品序列号,按#键结束”
  3. 录制语音3,内容“您的产品授权坐席数为”
  4. 录制语音4,内容为“无当前产品的相关信息”
  5. 程序员需要编写一个webservice程序等待ivr的调用,收到客户输入的产品序列号后,查找到此产品的授权坐席数,并返回给ivr。
  返回格式要求为字符串,多个参数以|分割,第一位默认为输入目标(与ivr设置的输入目标相对应,稍后会具体介绍)
  格式举例1“1|50”,告知系统执行输入目标1,程序返回值50(即许可授权坐席数为50)
  格式举例2“0|0”,未查到许可信息,告知系统执行输入目标0

开始设置电脑话务

第一步:进入PBX高级管理→语音文件管理页面,上传录制好的语音文件。

点击【批量上传】,打开上传界面,选择你录制好的语音文件(如上图)。

然后点击【Uploads】按钮,开始上传,上传成功后,出现下图所示页面

选择录音属于哪个团队,如果不选团队,那么其它团队人员也可以使用此录音文件。

修改录音文件的显示名称,默认为上传时的录音文件名。

确认信息无误后,点击【保存】,录音上传完毕。

第二步:进入PBX高级管理→呼叫语音管理页面,建立语音数据,供电脑话务使用。

数据创建后,编辑这条数据,为其选择目标语音文件“语音1”。

系统ivr同一个流程支持多个语言版本播报(当然你需要录制相应语种的录音),我们这里语言都选择“简体中文”。确认语音文件选择无误后,点击【增加】。

看到下图的显示效果,表明你成功创建了一条呼叫语音。

电脑话务_呼入语音3.jpg

重复步骤二,将其余三条语音也加入到呼叫语音中。

第三步:建立一条电脑话务,要求客户输入产品序列号(语音2),同时调用webservice程序,获取产品信息。

ivr名称,设置可以表达此ivr目的的词语“请输入产品序列号”;

内线号码,任意填写,只要不与系统当前存在的内线号码重复即可。使用内线分机拨打此内线号码,可以测试ivr流程。

播放语音,选择语音2,即进入此级ivr就先播放提示语“请输入产品序列号,按#结束”。

IVR类型,选择获取数据,因为我们要使用客户的输入内容去程序端获得许可信息;

获取数据类型,选择获取数据的程序类型,这里我们已webservice为例;

获取数据地址,你的程序访问地址,例如“http://192.168.1.88/getlic.php?wsdl”;

获取数据方法,调用你程序中的哪个方法;

获取数据参数,在ivr中抓取客户的输入内容,填写inputcode,即将客户输入内容赋值给inputcode变量;

获取数据返回值,将你程序的返回值赋值给一个变量,留着在此条ivr中使用。要求变量字母大写。我填写了“LICNO”;接收多个变量使用“|”分割。

准备工作中我们说到返回值的格式为“1|50”,首位为输入目标,不算作变量。所以实际上我们是将“50”赋值给“LICNO”变量。

此条ivr创建完毕后,我们打开此条记录的编辑界面,点击【设置目标】按钮,处理程序返回值。

如上图设置,按照之前约定,输入目标为1时,代表查询成功,我们需要播报语音3+返回值。

如上图设置,按照约定,输入目标为0时,代表查询失败,我们需要播报语音4.

有人会问到,“返回”字段是做什么用的?

为了提高交互体验,客户查询成功或失败后,可能还有其它业务要做,所以此处我们还可以选择一个语音,譬如“返回上级菜单请按*键”。

另外后续语音选择“是”时,可以看到“后续语音”,这个字段也是用来提高客户体验度的。例如选择一个语音“重听请按1”。

实际使用用,此条ivr的流程如下

语音3→客户输入→调用程序→得到返回值→使用返回值第一个变量匹配输入目标

匹配输入目标1→语音3+返回值→后续语音→返回语音

匹配输入目标0→语音4→返回语音

第四步:再建立一条电脑话务,播放开场白,即语音1。

这条ivr我们称为主ivr,即客户进线后,首先播报的语音。

ivr名称,设置可以表达此ivr目的的词语“主IVR”或“开场IVR”;

内线号码,任意填写,只要不与系统当前存在的内线号码重复即可。使用内线分机拨打此内线号码,可以测试ivr流程。

播放语音,选择语音1,即进入此ivr播放开场语音“欢迎致电本公司,产品咨询请按1,技术服务请按2,许可查询请按3”。

ivr类型,普通语音,即不需要程序辅助获取数据。

根据语音要求,我们为此ivr设置三个目标。

如上图,客户按1,我们将客户送到技能组1的队列中。让技能组1的坐席为客户服务。

同样的操作,我们再设置一个输入2,将客户送到技能组2的队列中。

当客户输入3时,我们要把客户送到步骤三中设置的IVR“请输入产品序列号”,如下图

测试

客服组和技术组均有坐席签入,且坐席分机已成功连接至系统。

使用系统中的任意一部内线分机,拨打第四步所创建电脑话务的内线号码50001,根据语音提示进行操作,看看每个环节是否正确,是否达到你预想的效果。

Debug

1. How to debug my code when I want to use IVR to read data from a webservice?

Usually you can write some message to a log file so you could know if IVR hit the webservice.

If it didn't, please check if the URL and method is correct and if you have a network issue, or your firewall blocked the port. Alternatively, you can write another script to call your webservice, see if you got any error.

2. IVR has no response when you press via keypad.

Usually it's DTMF issue, make sure you are using correct dtmfmode, test from an internal extension will help, read how_to_choose_dtmf_mode for more information.

3. Call hangup when you enter a IVR or IVR node

Check if the sound file exists

en/module_manual/advanced/ivr.txt · Last modified: 2016/01/27 05:09 by liuxl
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki