IVR流程脚本语言编写规范 V12.docx

上传人:b****6 文档编号:8115163 上传时间:2023-01-28 格式:DOCX 页数:18 大小:74.30KB
下载 相关 举报
IVR流程脚本语言编写规范 V12.docx_第1页
第1页 / 共18页
IVR流程脚本语言编写规范 V12.docx_第2页
第2页 / 共18页
IVR流程脚本语言编写规范 V12.docx_第3页
第3页 / 共18页
IVR流程脚本语言编写规范 V12.docx_第4页
第4页 / 共18页
IVR流程脚本语言编写规范 V12.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

IVR流程脚本语言编写规范 V12.docx

《IVR流程脚本语言编写规范 V12.docx》由会员分享,可在线阅读,更多相关《IVR流程脚本语言编写规范 V12.docx(18页珍藏版)》请在冰豆网上搜索。

IVR流程脚本语言编写规范 V12.docx

IVR流程脚本语言编写规范V12

 

IVR流程脚本语言规范

 

目录

一、系统功能概述3

二、系统功能模块3

2.1系统提供的临时变量3

2.2用户自定义变量4

2.3系统语音节点4

2.3.1节点定义5

2.3.2节点操作5

2.4节点跳转5

2.5系统设置6

2.5.1释放节点6

2.5.2数据库配置6

三、系统节点操作命令描述7

3.1放音操作7

3.2收号操作8

3.3转外呼操作8

3.4转其它业务模块操作9

3.5数据库操作9

3.6截取子字符串操作10

3.7截取字符串尾部的子字符串操作11

3.8变量赋值操作11

3.9数字运算操作12

3.10变量比较操作12

3.11节点跳转操作13

四、系统节点跳转事件描述13

4.1按键跳转13

4.2数据库操作跳转14

4.3变量比较跳转14

4.4系统跳转15

4.5无条件跳转15

五、IVR流程脚本编写过程及示例16

5.1编写基本原则16

5.2编写步骤16

5.3编写示例16

一、系统功能概述

我公司IVR流程脚本语言是针对“iSP6000综合信息服务系统”而设计的,用于实现语音流程定制。

IVR流程脚本语言采用开放式结构,以独立文本文件为信息存放基础,简便易学,维护方便。

可以使用“UltraEdit.exe文本编辑器”、记事本或写字板等工具编辑修改。

通过IVR流程脚本语言,可以实现以下功能:

◆      自动语音应答:

如播放语音、菜单选择、收号、数据库操作等。

◆      语音播放支持播放录制文件和文本实时转换两种方式。

◆      支持Mysql和Oracle两种数据库。

◆      支持加减乘除运算、逻辑判断、字符串运算等。

◆      支持多种跳转方式:

如按键跳转、数据库查询结果跳转、变量运算跳转等。

◆      系统能够将客户IVR交互活动记录到电话跟踪数据库中。

◆      以独立文件为信息存放基础。

二、系统功能模块

2.1系统提供的临时变量

系统提供一系列临时变量,变量在每次建立呼叫时产生,在语音节点中可以引用这些变量。

变量名称约定如下,必须是大写字母:

[CALLLEG]:

表示当前呼叫的CallLeg,长度不超过64的字符串

[CALLER_NUMBER]:

表示当前呼叫的主叫号码,长度不超过32的字符串

[CALLED_NUMBER]:

表示当前呼叫的被叫号码,长度不超过32的字符串

[USER_INPUT]:

表示用户最近的DTMF按键,长度不超过32的字符串

[DB_SQL_RESULT]:

表示数据库操作的结果,整数

[CALL_BEGIN_TIME]:

表示当前呼叫的呼叫开始时间,time_t类型

[CALL_BEGIN_TIME_YYYY-MM-DD_HH:

MM:

SS]:

呼叫开始时间的字符串型式

[TIME_NOW]:

表示当前时间,time_t类型

[TIME_NOW_YYYY-MM-DD_HH:

MM:

SS]:

当前时间的字符串型式

[TIME_NOW_YYYY-MM-DD]:

当前时间的字符串型式

[TIME_NOW_YYYY_MM_DD]:

当前时间的字符串型式

[TIME_NOW_YYYYMMDD]:

当前时间的字符串型式

[TIME_NOW_MMDD]:

当前时间的字符串型式

[TIME_NOW_YYYYMM]:

当前时间的字符串型式

[TIME_NOW_YYYY_MM]:

当前时间的字符串型式

[TIME_NOW_YYYY]:

当前时间的字符串型式,年

[TIME_NOW_MM]:

当前时间的字符串型式,月

[TIME_NOW_DD]:

当前时间的字符串型式,日

[TIME_NOW_HOUR]:

当前时间的字符串型式,时

[TIME_NOW_MINUTE]:

当前时间的字符串型式,分

[TIME_NOW_SECOND]:

当前时间的字符串型式,秒

[TIME_NOW_TODAY_SECONDS]:

表示当前时刻从当天凌晨零点以来的秒数,整数

2.2用户自定义变量

用户可以自定义一系列变量。

自定义变量属于节点操作中的一个参数,在节点操作中用到变量时进行定义,一个流程中只需在最早用到该变量的节点操作中定义,之后的节点操作可以引用该变量。

一个流程中自定义变量名称不能重复,也不能与系统临时变量相同。

格式:

[变量名],变量类型,变量长度

(变量类型int和字符串两种)

变量支持int、char两种类型。

例如:

[code],int,4

表示:

定义一个名称为code,类型为int,长度为4位的变量。

2.3系统语音节点

一个完整的IVR流程是由若干个语音节点组成的,系统最多支持99999个语音节点(1-99999)。

目前试验平台分配给学生用为每人100个节点(1-100)。

一个语音节点的定义由节点定义和节点操作两种语句实现。

2.3.1节点定义

对节点的属性进行定义,节点必须定义属性后才能生效。

语法:

STATE_ATTRIBUTEstateaollowCounttimeout(s)

参数:

State:

节点代号,是系统唯一的编号,允许1到100之间的数字,在一个流程中,节点代号是不可重复的。

aollowCount:

最多允许循环次数,表示这个节点允许跳转的最大次数,当跳转到这个节点的次数达到这个数值时,系统产生max_state_count事件,并根据这一事件的配置进行节点跳转;

timeout(s):

超时时间,表示在这个节点可以停留的最长时间,超过时间系统自动挂机。

例如:

STATE_ATTRIBUTE110600

表示语音节点1,最多允许循环10次,超时时间为600秒。

2.3.2节点操作

对节点的操作进行定义,根据操作类型的不同,操作命令和参数均不相同。

同一节点如果有多个操作,可以用写多条语句。

某些操作命令会产生返回事件,如:

收号操作返回用户按键、数据库操作返回操作结果等,返回事件可用于节点跳转。

语法:

操作命令STATE参数1参数2参数3…..

操作命令:

完成一个基本操作,如:

放音、收号、数据库操作等。

系统定义了10多个节点命令,如:

OPERATION_PLAY、OPERATION_GET等,具体用法详见第三章:

系统节点操作命令描述。

参数:

State:

节点代号。

参数1、参数2、参数3…:

不同的操作节点命令,需要不同的参数。

2.4节点跳转

由于IVR流程是由若干个语音节点组成的,所以节点与节点之间需要根据设定的规则进行跳转,跳转是由节点操作的返回事件触发的。

语法:

STATE_MACHINEcurrentnextevent

参数:

current:

当前节点代号。

next:

跳转节点代号。

event:

跳转事件,除了用户按键外,系统还定义了10多种跳转事件,如:

sql_success、string_equal等,具体用法详见第四章:

系统节点跳转事件描述。

2.5系统设置

2.5.1释放节点

系统导入IVR流程脚本采用两种模式:

追加模式和更新模式,默认情况使用追加模式。

追加模式:

系统只增加流程脚本中的内容,对于原有的内容不做处理。

更新模式:

将系统中原有的节点释放,重新导入流程脚本中的内容。

更新模式需要增加释放节点语句。

对于更新模式,释放节点语句是必须要有的。

语法:

ReleaseStatebeginend

参数:

begin:

需释放的起始节点代号。

end:

需释放的结束节点代号。

例如:

ReleaseState1100

表示让系统释放1到100之间的100个节点。

2.5.2数据库配置

节点操作中有数据库操作的,系统需要定义需访问数据库的相关信息。

语法:

DATABASEdatabase_ipdatabase_nameuser_nameuser_passworddatabase_flag

参数:

database_ip:

需访问的数据库IP地址。

database_name:

数据库名。

user_name:

访问数据库的用户名。

user_password:

访问数据库的密码。

database_flag:

数据库类型,0:

mysql;1:

oracle。

例如:

DATABASE127.0.0.1ivrtestspiderspider!

@#0

表示访问本机mysql数据库的ivrtest数据库。

三、系统节点操作命令

3.1放音操作

播放一个语音文件、金额、数字或一段文字等信息,放音操作无返回事件。

语法:

OPERATION_PLAYstatetypelanguagedelayloopinterruptwriteCdrfile

参数:

state:

节点号。

type:

放音类型(1:

语音文件;2:

金额,以分为单位;3:

数字;4:

时间,time_t类型的值;5:

号码;6:

TTS)。

language:

语言种类(1:

中文;2:

英文),放音类型为金额,数字,时间时,系统会根据该参数来选择语音自动播放,放音类型为语音文件和TTS时该参数无效。

delay:

延时播放时间,单位为秒。

loop:

是否循环播放(0为不循环;1为循环播放)。

interrupt:

是否允许按键中断播放(0为不允许中断;1为允许中断)。

writeCdr:

是否写入数据库表(0为不写入;1为写入)。

file:

放音文件名,或者是TTS文本字符串,同时也支持变量。

例如:

OPERATION_PLAY1110110welcome

表示:

1号节点,播放文件名为welcome的语音文件,延时0秒,循环播放,允许中断,该操作写入数据库。

3.2收号操作

收取用户的按键,收号操作有返回事件。

语法:

OPERATION_GETstatelengthtimeout

参数:

state:

节点号。

length:

收号长度。

timeout:

收号等待超时时间,以秒为单位。

收号长度不能超过32,超时等待时间不能超过1小时。

例如:

OPERATION_GET116

表示:

1号节点,收取用户1位DTMF按键,等待超时时间为6秒。

返回事件:

用户按键字符串:

如“1”或“123”等,通过系统临时变量[USER_INPUT]可以获取用户最后一次的DTMF按键值。

dtmfnull:

表示用户无按键

dtmfany:

表示用户按错键。

3.3转外呼操作--------实际上是从IVR业务转到其他某个业务,类似3.4的功能;并不是IVR业务本身能外呼

将呼叫转到其他号码,转外呼操作无返回事件。

语法:

OPERATION_CALLstatenumber

参数:

state:

节点号。

number:

外呼的被叫号码(多个以逗号分开,实现轮流呼叫功能)。

(在系统上可以拨的号码,比如说拨打北京需要010xxxxxxxx,那么这里也需要010xxxxxxxx;如果系统上可以拨打601,那么这里也可以配置601)

例如:

OPERATION_CALL18660

表示:

1号节点,电话转至8660。

3.4转其它业务模块操作

将呼叫转到其他业务模块,转其它业务模块操作无返回事件。

该操作为仅限转我公司的其他业务模块,如要转第三方业务模块,需按我公司的接口标准实现。

语法:

OPERATION_TRANSFERstatesnmessage

参数:

state:

节点号。

sn:

我公司其他业务模块的代号,电子传真模块为4,呼叫中心模块为20,语音信箱模块为60。

message:

需要传递的参数,每个业务模块所需要的参数不同。

电子传真:

113342

呼叫中心:

111700

语音信箱:

8100

例如:

OPERATION_TRANSFER1608100

表示:

1号节点,转到语音信箱模块,语音信箱号码为8100。

3.5数据库操作

对数据库执行sql语句,数据库操作有返回事件。

语法:

OPERATION_SQLstatedatebase_ipdatebase_namesqlresult

参数:

state:

节点号。

datebase_ip:

需访问的数据库IP地址。

datebase_name:

需访问的数据库库名。

sql:

SQL语句,语句中用^代替空格,支持变量,变量要在之前定义。

result:

可选参数,查询结果变量,执行查询操作时有效。

执行查询操作后将查询结果赋于该变量,如查询结果有多条则记录第一条。

(需要自己创建数据库)

例如:

OPERATION_SQL1127.0.0.1crmselect^code^from^mobile13_code^where^num^=13800000000;[13code],string,32

(上述配置中分隔符都是空格或TAB,至于上面的分号是那个sql语句后面的分号(sql语句后面没有分号也可以)

表示:

1号节点,访问本机crm库,执行查询语句,将查询值赋予变量[13code]。

返回事件:

sql_failed:

数据库操作失败。

sql_select_no_data:

数据库查询不到数据,仅SELECT语句有效。

sql_success:

数据库操作成功。

3.6截取子字符串操作

截取字符串的其中一段,截取字符串操作无返回事件。

语法:

OPERATION_FUNC_SUB_STRINGstateoldvaluebeginendnewvalue

参数:

state:

节点号。

oldvalue:

原始变量,可以是自定义的变量或系统临时变量。

begin:

截取字符串的开始位数。

end:

截取字符串的结束位数。

newvalue:

取得的新变量。

例如:

OPERATION_FUNC_SUB_STRING1[CALLER_NUMBER]14[code],int,16

表示:

1号节点,截取系统临时变量【主叫号码】的前四位,赋予自定义变量code。

3.7截取字符串尾部的子字符串操作

截取字符串的后几位,截取字符串尾部的子字符串操作无返回事件。

语法:

OPERATION_FUNC_STRING_TAILstateoldvaluelastnewvalue

参数:

state:

节点号。

oldvalue:

原始变量,可以是自定义的变量或系统临时变量。

last:

截取后几位长度。

newvalue:

取得的新变量。

例如:

OPERATION_FUNC_STRING_TAIL1[CALLER_NUMBER]4[code],int,16

表示:

1号节点,截取系统临时变量【主叫号码】的后四位,赋予自定义变量code。

3.8变量赋值操作

给自定义变量赋值,支持常量对变量赋值,变量对变量赋值,支持int和string不同类型间的变量赋值。

变量赋值操作无返回事件。

语法:

OPERATION_SET_VALUEstatevalue1value2

参数:

state:

节点号。

value1:

被赋值的自定义变量。

value2:

赋值常量、其他自定义变量或系统临时变量。

例如:

OPERATION_SET_VALUE1[calltime],string,16[TIME_NOW]

表示:

1号节点,将系统临时变量【当前时间】赋予自定义变量calltime。

3.9数字运算操作

将两个变量或常量进行数字运算,将运算值赋予新的自定义变量。

数字运算操作无返回事件。

语法:

OPERATION_FUNC_INTEGERstatenewvalue=value1运算符value2

参数:

state:

节点号。

newvalue:

取得的新变量。

value1:

常量1、其他自定义变量1或系统临时变量1。

运算符:

支持+,-,*,/

value2:

常量2、其他自定义变量2或系统临时变量2。

例如:

OPERATION_FUNC_INTEGER1[USER],int,4=[TEST_USER]-10

表示:

1号节点,将自定义变量TEST_USER减去100后,赋予自定义变量USER。

3.10变量比较操作

将变量进行比较,支持变量与常量的比较,变量与变量的比较。

变量比较操作有返回事件。

语法:

OPERATION_COMPARE_VALUEstatevalue1value2

参数:

state:

节点号。

value1:

被比较变量,比较的类型,int或者string,取决于该变量的类型。

value2:

比较值,可以是常量、其他自定义变量或系统临时变量。

例如:

OPERATION_COMPARE_VALUE1[code]021

表示:

1号节点,将自定义变量code与021进行比较。

返回事件:

int_equal:

数值相等

int_big:

数值大于

int_small:

数值小于

string_equal:

字符串相同

string_prefix_equal:

字符串前缀相同

string_postfix_equal:

字符串后缀相同

other_case:

其他情况

3.11节点跳转操作

从当前节点直接跳转到另一个节点。

节点跳转操作无返回事件。

语法:

OPERATION_GOTOstatenextstate

参数:

state:

节点号。

nextstate:

跳转的节点号。

例如:

OPERATION_GOTO1100

表示:

从1号节点直接跳转到100号节点

四、系统节点跳转事件描述

4.1按键跳转

根据节点收号操作的返回事件进行跳转。

用户按键字符串:

如“1”或“123”等

dtmfnull:

表示用户无按键。

dtmfany:

表示用户按错键。

例如:

STATE_MACHINE121

STATE_MACHINE132

STATE_MACHINE11dtmfnull

STATE_MACHINE11dtmfany

表示:

在1号节点收到用户按键1后跳转到2号节点;收到用户按键2后跳转到3号节点;节点未收到用户按键,跳转到1号节点;收到除1、2外的错误按键,跳转到1号节点。

4.2数据库操作跳转

根据数据库操作的返回事件进行跳转。

sql_failed:

数据库操作失败。

sql_select_no_data:

数据库查询不到数据,仅SELECT语句有效。

sql_success:

数据库操作成功。

例如:

STATE_MACHINE12sql_success

STATE_MACHINE13sql_failed

STATE_MACHINE14sql_select_no_data

表示:

在1号节点操作数据库成功后跳转到2号节点;失败跳转到3号节点;如执行的是查询操作,查询不到数据跳转到4号节点。

4.3变量比较跳转

根据变量比较操作的返回事件进行跳转。

int_equal:

数值相等

int_big:

数值大于

int_small:

数值小于

string_equal:

字符串相同

string_prefix_equal:

字符串前缀相同

string_postfix_equal:

字符串后缀相同

other_case:

其他情况

例如:

STATE_MACHINE12int_equal

STATE_MACHINE13int_big

STATE_MACHINE14int_small

表示:

在1号节点进行变量比较操作,数字相等跳转到2号节点;数值大于跳转到3号节点;数值小于跳转到4号节点。

4.4系统跳转

在节点定义中,有个参数aollowCount(最多允许循环次数),表示这个节点允许跳转的最大次数,当跳转到这个节点的次数达到这个数值时,系统产生max_state_count事件进行下一跳转。

例如:

STATE_MACHINE1100max_state_count

表示:

1号节点达到最大循环次数时,跳转到100号节点。

4.5无条件跳转

在节点操作中通过OPERATION_GOTO语句实现。

例如:

OPERATION_GOTO1100

表示:

从1号节点直接跳转到100号节点

五、IVR流程脚本编写过程及示例

5.1编写基本原则

Ø逻辑清晰,业务设计结构清晰,各个模块之间尽量做到相互独立,不重复

Ø业务菜单不宜过深(一般不超过4层)

(一个IVR流程形成一颗树(类似二叉树),每一个节点向下的跳转就是一层(类似二叉树的层次),例子里是3层。

不超过4层是个建议,如果业务流程比较复杂,可能会超过4层)。

Ø按键规划合理、统一(考虑用户操作方便与习惯)

Ø提示音简洁明了

5.2编写步骤

1.设计业务逻辑关系,画出流程图

2.设计数据库表结构

3.编写IVR流程脚本

4.导入系统进行测试,不断调整

5.完成IVR流程脚本编写

5.3编写示例

为了进一步理解IVR流程编写语言,通过下面的例子来进行说明。

这个流程的功能是让用户通过拨打电话,进行一系列的IVR互动后,自助查询余额和有效期。

流程图中:

方框表示一个节点,前面的数字表示节点号,文字表示播放的语音。

箭头表示节点跳转过程。

菱形框表示节点跳转的判断逻辑。

流程图如下:

数据库表结构设计:

字段名称

含义

数据类型

描述

Mobile_Number

手机号码

Varchar(64)

主键

Password

密码

Varchar(64)

Balance

余额

int

Period

有效期

int

t

流程脚本如下:

#系统导入采用更新模式,释放从1到100的节点

ReleaseState1100

#数据库配置

DATABASE127.0.0.1ivrtestspiderspider!

@#0

#节点定义

STATE_ATTRIBUTE110600

STATE_ATTRIBUTE210600

STATE_ATTRIBUTE33600

STATE_ATTRIBUTE410600

STATE_ATTRIBUTE510600

STATE_ATTRIBUTE63600

STATE_ATTRIBUTE710600

STATE_ATTRIBUTE810600

STATE_ATTRIBUTE910600

STATE_ATTRIBUTE1010600

STATE_ATTRIBUTE11

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1