IVR流程的编写

上传人:gb****c 文档编号:243129612 上传时间:2024-09-16 格式:PPT 页数:81 大小:386.50KB
返回 下载 相关 举报
IVR流程的编写_第1页
第1页 / 共81页
IVR流程的编写_第2页
第2页 / 共81页
IVR流程的编写_第3页
第3页 / 共81页
点击查看更多>>
资源描述
,IPSWITCH,系统培训之二,*,2001年应届毕业生培训之一,IPSWITCH,平台业务流程的编写,目录,2,实现流程的模块,流程源文件的结构,数据类型,动作,流程的配置文件,业务流程的配置,IPSWITCH,平台业务流程,主要由,IVR,模块实现,相关模块:,ACD,AAA SERVER,DB Access,GATEWAY,流程源文件的构成,. 主文件,文本的主文件(.,sc,为后缀),文件头说明,主程序体,图形化的主文件(.,frm,为后缀),. 头文件,IPSWITCH,平台流程语言结构,#,include 包含头文件说明,#,define 宏定义说明,例:,文件头中说明#,define PromptThanks 2000,主程序体中,PROMPT PrompThanks,等价于,PROMPT 2000,#iniparam 配置参数常量说明,例:,头文件中#,iniparam STRING UserData,主程序体中,ASSIGN SR9, UserData,配置文件(后缀为.,ini),中,Parameters,UserData=12345,则,主程序体中该语句等价于,ASSIGN SR9,”12345”,#function 函数说明,主文件,文件头说明,它通常是一组函数定义的系列,每一函数定义可描述如下:,函数名,:状态1,动作,a1,参数,动作,an,参数,事件,e1,状态,s1,事件,e2,状态,s2,N,事件,en,状态,sn,动作,a1,参数,M,动作,am,参数,:状态2,同上,:状态,m,函数定义系列中的第一个函数必须是主函数(,main),主文件,主程序体,IPSWITCH,平台流程语言结构,简单的主文件(.,SC),,可编译通过,#,function main,main,:stWait,Connect-stPlay,:stPlay,PLAYFILE “welcome.vox”,StopPlayBack - stExit,DialTerminate - stExit,Failed - stExit,TimeOut - stExit,:stExit,Return 0,头文件,文件头说明,#,include 说明包含另外一个头文件,#,define 说明定义一个宏,#,iniparam 说明一个配置参数常量,#,function 说明一个函数,IPSWITCH,平台流程语言结构,流程的启动与结束,开始状态:,stWait,在,stWait,状态下以,Connect,事件启动流程,结束状态:,stExit,在,stExit,状态下以,Return 0,动作结束流程,IPSWITCH,流程语言的数据类型有三种,:,整型,字串型,浮点数型,数据类型,常量,整型常量,字串型常量,浮点型常量,宏定义常量,配置参数常量,变 量,寄存器变量,整型寄存器:,IR0IR29,字串型寄存器:,SR0SR29 FD0FD29,浮点型寄存器:,FR0FR29,系统变量,与流程相关的系统变量。如:$,ServiceType、$FlowType、 $InputParam、$OutputParam。,与呼叫相关的系统变量。如:$,CallerID、$CalledID、$Device1、$Device2。,与数据库访问相关的系统变量。如:$,DBKey1、$DBRecCount 。,与认证计费相关的系统变量。如:$,AccountID、$Passwor、$ServiceItemNo,变 量,共享变量,共享变量是在同一台,IVR,中共用的变量,用于同一,IVR,中流程之间的通讯。流程结束后,变量的值仍然保存着。,变 量,注 释,/ 单行注释,/*/ 多行注释,动 作,数字运算动作,字符串运算动作,数据类型转换动作,比较判断转移动作,媒体操作动作,呼叫控制动作,数据库访问动作,计费与认证动作,文件操作动作,系统操作动作,流程间通信动作,邮箱管理动作,设置例外处理函数动作,其他动作,数字运算动作,Assign I1,I2,Assign F1,I2 Assign F1,F2 Assign S1,S2,inc I1,dec I1,add I1 ,I2 add F1,I2 add F1,F2,sub I1 ,I2 sub F1,I2 sub F1,F2,mul I1 ,I2 mul F1,I2 mul F1,F2,div F1,I2 div F1,F2,数字运算动作,idiv I1,I2,/,把,I1,整除,I2,的值赋给变量,I1,mod I1,I2,/,把,I1,整除,I2,的余值赋给变量,I1,IntRand I1,/,产生一个0(,I1-1),的随机整数,结果存于,IR0,中,FloatRand I1 I2,/,产生一个0,I1,之间的随机浮点数,精确到,小数点后,I2,位。结果存于,FR0,中,数字运算动作,StrSub S1,I1,I2,StrCat S1,S2,StrLen S1,StrUpper S1,StrLower S1,StrStr S1,S2,字串运算动作,字串运算动作,ParseParam S1,I1,S2,例如:,S1=”param1$param2$param3$param4” S2=”$” ParseParam S1,2,”$”,取出第二个参数,param2。,StrLTrim S1,StrRTrim S1,StrTrim S1,时间操作动作,NowTime,TimeAdd I1,I2,I3,把,I1,表示的时间按,I2,指定的类型,增加,I3,的值,结束存放在,I1,I2,类型:1(秒)、2(分)、3(小时)、4(天)、5(月)、6(年),TimeDif I1,I2,I3,按,I3,的类型,计算,I1,I2,分别表示的时间的差值,结果存于,IR0,中,I3,类型:1(秒)、2(分)、3(小时)、4(天)、5(月)、6(年),7(星期),时间操作动作,TimePart I1,I2,按,I2,指定的类型,取,I1,表示的时间的相应部分,结果存于,IR0,中。,I2,类型:1(秒)、2(分)、3(小时)、4(天)、5(月)、,6(年)、7(星期),MakeDate I1,I2,I3,把,I1,作为年份,,I2,为月份,,I3,作为日期生成一个整数表示的时间,,(时分秒为缺省值),结果存于,IR0,中。无效日期返回-1。,MakeTime I1,I2,I3,把,I1,作为小时数,,I2,为分钟数,,I3,为秒数生成一个整数表示的时间,,结果存于,IR0,中。(年月日为缺省值) 无效时间返回-1。,时间操作动作,数据类型转换动作,itos I1,stoi S1,TimeToStr I1,S2,StrToTime S1,ftos F1,I2,stof S1,Equal I1 ,I2 Equal S1,S2 Equal F1,F2,I3,Great S1 ,S2,Great F1,F2,Less S1,S2 Less F1,F2,以上的几种比较动作都将产生以下两个事件之一:,Passed,成立,Failed,不成立,比较判断转移动作,Case I1,根据,I1,的值转移到不同的状态执行,它产生一个,Case(,参数) 的事,件,对这一事件处理分别迁移到不同的状态即可实现了多分支程序,的设计。,比较判断转移动作,SetDTMF S1,设置响应的拨号 “?”表示所有按键均可响应(缺省) “,D”,表示09的数字按键均可响应 “,d”,表示19的数字按键均可响应 “”表示所有键均不响应。,媒体操作动作,SetRecInit I1,SetPlayInit I1,SetIntrDig I1,设置拨号的时间间隔(单位为秒),即用户如果在按了一个键后在,给 定时间内未按下一个键则收号过程结束(产生,TimeOut,事件),,缺省值为5秒。,媒体操作动作,SetMaxSil I1,设置录音过程中的最大静音时长为,I1,秒。即在录音过程中如果出现了给,定时长的静音时间,则录音过程结束(产生,Record,事件),缺省为5秒。,SetLang I1,设置播放提示音、合成音的语种:,I1=1:,普通话(缺省),I1=2:,本地方言,I1=3:,英语,媒体操作动作,Prompt I1,播放第,I1,段提示音,产生以下事件:,StopPlayBack,正常放音结束,DialTerminate,放音被按键打断,Failed,失败,LPrompt I1,I2,I3,根据语种的值选择播放,I1,I2,I3,的提示音,产生以下事件:,StopPlayBack,正常放音结束,DialTerminate,放音被按键打断,Failed,失败,媒体操作动作,媒体操作动作,MixPlay I1,S1,根据语种自动合成语音播放。,I1,为合成的格式:1(金额)、,2整数)、3(字符)、4(日期时间)、5(小数) 结束时产生以下事件:,StopPlayBack,正常放音结束,DialTerminate,放音被按键打断,Failed,失败,Play,播放语音文件,,S1,为文件名。 结束时产生以下事件:,StopPlayBack,正常放音结束,DialTerminate,放音被按键打断,Failed,失败(一般为文件不存在),媒体操作动作,ClrMixer,AddPromptToMixer I1,I2,I3,AddStrToMixer I1,S2,AddIntToMixer I1,AddTimeToMixer I1,S2,AddFloatToMixer F1,I2,媒体操作动作,PlayMixer,播放合成音缓冲区的内容。(注意:执行,MixPlay,将清空合成音缓冲区,,执行,PlayMixer,不会将,MixPlay,放置的合成音清空。) 结束时产生以下事件:,StopPlayBack,正常放音结束,DialTerminate,放音被按键打断,Failed,失败,媒体操作动作,Record,I2,I3,录音并存入文件中,,S1,为文件名,,I2,为最大录音时长(秒),,I3,是指采,取0(覆盖的方式)或1(添加的方式),产生的事件:,Record ,正常录音结束(由,Setmaxsil,设置的最大静音时间决定,录,音时超出最大静音时间则产生此事件),DialTerminate ,录音被话机按键打断,TimeOut ,最大录音时长已到,Failed,失败,媒体操作动作,DialDTMF S1,模拟话机拨号,产生一串,DTMF,串。 产生事件:,DialTerminate ,被对方按键中止,StopDial ,正常结束中止,媒体操作动作,Digit I1,接收一位话机按键,,I1,为最大时间(秒),接收到的字符值返回,SR0,,数字值返回,IR0(“*”=11,“#”=12)。,结束时产生事件:,StopDigits( ,值 )正常收号结束,TimeOut,超时没有收到按键,媒体操作动作,语种选择,:,stWelcome, Prompt 2000 /,欢迎使用168,普通话请按1,广州话请按2,英语请按3。,StopPlayBack - stDigit,DialTerminate - stDigit,Failed - stExit,TimeOut - stExit,:stDigit, Digit 10 ,StopDigits(1) - stSetLan,StopDigits(2) - stSetLan,StopDigits(3) - stSetLan,StopDigits(-1) - stWelcome,TimeOut - stWelcome,:stSetLan, SetLang IR0 , Lprompt 2001,2002,2003 ,接收一位按键的例子,Input I1,I2,接收多位话机按键,,I1,为按键位数,,I2,为最大时长(秒),接,收到的字符返回,SR0。,按键位数最多31位。 结束时产生事件:,StopDigits( ,值 )正常收号结束,或收到一个终止按键。,TimeOut,超时没有收到规定长度的按键,媒体操作动作,输入身份证号码,:,stWelcome, Prompt 2000 /,请输入您的身份证号码,15位的请按键结束,按,*键重输。,StopPlayBack - stInput,DialTerminate - stInput,Failed - stExit,TimeOut - stExit,:stInput, SetDTMF “*#” , Input 18,50 ,StopDigits(*) - stWelcome,StopDigits(#) - stInserDB,StopDigits(-1) - stInserDB,TimeOut - stWelcome, ParseParam SR0,1,“# , Assign SR2,SR0 ,接收多位按键的例子,SendFax S1,发送传真,,S1,为要发送的传真文件名(,TIFF/F,格式)发送完成产生,事件:,StopSendFax,发送成功,TimeOut ,发送超时,Failed ,发送失败,媒体操作动作,RecvFax S1,接收传真并存入文件中,,S1,为文件名,接收完成产生事件:,StopRecvFax,接收成功,TimeOut,超时错误,Failed,失败,媒体操作动作,HoldCall,保持当前呼叫(用户与,IVR,已不能通话,但线路处在保持状态。),结束产生事件:,CallHeld,呼叫被保持(值=0) 呼叫保持错误(值=1),呼叫控制动作,RetrieveCall,恢复连接,恢复原来,Hold,的呼叫。(用户与,IVR,恢复通话),恢复完成产生事件:,Passed,成功,Failed,失败,呼叫控制动作,SingleStepTransfer S1,S2,S3,单步转移呼叫,,S1,为被叫号,,S2,为主叫号,,S3,为自定义数据串,可为传,真文件名等。系统变量$,Called,被改为,S1。(,单步转移后,,IVR,将打进来的,用户跟另一用户连接,,IVR,本身跟此两用户断开连接。),转移完成产生事件:,Passed,成功,Failed,失败,注意:一般用于,D3,为计费点时。如:,D3,为,IVR,或者坐席。,呼叫控制动作,MakeCall200 S1,S2,S3,产生一个类似200业务的呼叫即,S1,为被叫号,,S2,为主叫号,,S3,为自定义数据字串。,系统变量$,Called,改为,S1。,注意:一般用于,D3,为非计费点,有流程来帮其计费时。如:外线专家。,呼叫控制动作,呼叫控制动作,MakeCall200,呼出完成产生事件:,CallTerm(0),被叫应答,成功,CallTerm(1),无人接,CallTerm(2),被叫市话忙,CallTerm(3),被叫长话忙,CallTerm(4),拥塞,CallTerm(5),空号,AlternateCall,在,MakeCall200,成功之后可用这一动作在两个呼叫之间切换。,切换完毕产生以下事件:,Passed,成功,Failed,失败,呼叫控制动作,ReconnectCall,在,MakeCall200,成功之后可用这一动作把被保持的呼叫重新连接,同时,把新的呼叫释放。系统变量$,Called,被改回,MakeCall200,之前的值。,完毕产生以下事件:,Passed,成功,Failed,失败,D1 C1 D2,IVR,c,D1 C1 D2,C2 D3,IVR,c,h,呼叫控制动作,ClearCall I1,清除呼叫(一般情况不需使用,流程结束后系统会自动,清除呼叫),完毕产生事件:,ClearCallOK,成功,ClearCallFail,失败,呼叫控制动作,IVR,与数据库之间的数据存取通过,DBA(DataBase Access),来完成。,SQL,语句通过,DBA,的维护界面加入。,SelectDB I1 I2,检索用户自定义数据表,,I1,为,SQL ID,值,,I2,为,Where,条件子句参数的个,数,参数值存放在系统变量$,DBKEY1、$DBKEY2、$DBKEY3,中。检,索的结果存于,FD0FD9,中。 检索完毕产生事件:,Passed,成功,Failed,失败,数据库访问动作,SelectDB,动作例子,流程要执行的,SQL,语句是:,Select data3,data4 from flow_test where,data1=”aaa” and data2=”bbb”,则在流程里设置动作 ,ASSIGN $DBKey1,”aaa”,ASSIGN $DBKey2,”bbb”,SELECTDB 10,2,在,DBA,的维护界面主要需加入:,数据库访问动作,InsertDB I1 I2,在用户自定义数据表中插入记录,,I1,为,SQL ID,值,插入的字段值存放在,FD0FD9,中,,I2,为插入的字段数。 插入完毕产生事件:,Passed,成功,Failed ,失败,数据库访问动作,InsertDB,动作例子,例:流程要执行的,SQL,语句是:,Insert into flow_test values(1,2,3,4),则在流程里设置动作,ASSIGN FD0,”1”,ASSIGN FD1,”2”,ASSIGN FD2,”3”,ASSIGN FD3,”4”, INSERTDB 11,4,在,DBA,的维护界面主要需加入:,数据库访问动作,DeleteDB I1 I2,在用户自定义数据表中删去记录,,I1,为,SQL ID,值。,I2,为,Where,条件子句,参数的个数。 删除完毕产生事件:,Passed,成功,Failed ,失败,数据库访问动作,UpdateDB I1 I2 I3,在用户自定义数据表中修改记录,,I1,为,SQL ID,值,,I2,为数据个数,,I3,为要修改的字段个数,要修改的字段值放在,FD0FD29,中。修改完毕产生。,事件:,Passed,成功,Failed ,失败,数据库访问动作,FirstDB,在检索记录(,SelectDB),完成之后在有多条记录返回时执行该动作将,把当前数据表指针指向第一条返回记录,同时,FD0FD29,的结果值作相,应修改。 完成后产生事件:,Passed,成功,Failed ,失败,数据库访问动作,NextDB,在检索记录(,SelectDB),完成之后有多条记录返回时执行该动作,,将把当前数据表指针指向下一条记录,同时,FD0FD29,的值相应修改。 完成后产生事件:,Passed,成功,Failed ,失败,数据库访问动作,PriorDB,在检索记录(,SelectDB),完成之后有多条记录返回时执行该动作,将,把当前数据表指针指向上一条记录,同时,FD0FD29,的值相应修改。 完成后产生事件:,Passed,成功,Failed ,失败,数据库访问动作,LastDB,在检索记录(,SelectDB),完成之后在有多条记录返回时执行该动作将,把当前数据表指针指向最后一条记录,同时,FD0FD29,的值将相应修改。 完成后产生事件:,Passed,成功,Failed ,失败,数据库访问动作,ExecSQL S1,执行,SQL,命令,,S1,为要执行的命令字符串。 完成后产生事件:,Passed,成功,Failed ,失败,数据库访问动作,ExecStoredProc I1 I2,执行存储过程,,I1,为存储过程编号,输入的参数在,FD0FD9,中,,I2,为参,数个数。运行的结果存于,FD0FD9,中。,执行完毕产生事件:,Passed,成功,Failed,失败,数据库访问动作,DirectRequestData I1 I2 S3,向数据网关请求数据,,I1,为数据网关,ID(,由每个网关自,行规定),,I2,为请求命令的,ID(,由各网关定义),,S3,为命令,的内容。返回的数据存放在,FD0。,完成后产生事件:,GatewayNotExist ,网关不存在,DataReceived(,值) 具体意义由各应用网关确定,数据库访问动作,需要访问的网关为,DBF,网关,网关号1065,,flow _test.dbf,的表号为1。,流程要执行的,SQL,语句是:,Select data3,data4 from flow_test.dbf where data1=”aaa” and data2=”bbb”,则在流程里设置动作,DirectRequestData 1024,301,”,1; data1=aaa;data2=bbb,”,DataReceived(0) - stPrompt,DataReceived(-1) - stSayError,GatewayNotExist - stSayError,TimeOut - stSayError,此动作的参数1为网关号,此处为1065;参数2为命令的,ID,,此处为301,表示命令为,select;,参数3为命令的内容,此处为”1;,data1=aaa;data2=bbb”,1,表示访问的表在网关中的表号,,data1=aaa;data2=bbb,表示查询的条件。,DataRecerved(0),事件发生,表示查询成功,返回的结果存放在,FD0,中,各个字段的值用“,”隔开。,访问,DBF,网关的例子,IVR,的认证与计费通过,AAA SERVER,实现。,IVR,向,AAA SERVER,传送参数,由,AAA SERVER,完成认证和计费,再返回结果到,IVR。,VerifyUser S1,帐户认证。若,S1,为有效用户帐号,将设置相关的系统变量(包括账,号性质、密码、余额、限制等),并将账号加锁,不允许账号同时使,用。认证完毕产生事件:,Verify(,值)。,认证与计费动作,AccountCancelLock,取消,VerifyUser,动作所作的帐号锁定。,认证与计费动作,BillBegin I1 I2 S3,启动计费。,I1,为计费方式: 0(不计费)、1(按主叫)、2(按被叫)、3(按原主叫)、4(按账号)、5(按计费号码)、6(按原被叫);,I2,是否计算可打时长(按帐号计费时用),0:否;1:是。如果需计算可服务时长,结果存放在,IR0,中(-1表示没有限制)。,S3,为服务项目编码,一般情况下应该为系统变量$,ServiceItemNo,按帐号计费完毕产生事件:,Verify(,值)其中值 0 有效用户 1 无效用户(帐号余额不够) 2 该账号没有登记此项服务,4 黑名单,5 其它,认证与计费动作,认证与计费动作,BillEnd,结束计费,并产生话单(当用户挂机时系统也会自动产生话单。) 完毕产生事件:,Verify(,值)其中值 0 ,OK 1 Error,开始计费(按主叫计费):,BillBegin 1,0,$ServiceItemNo ,Verify(0) - stWelcome/,启动计费成功,Verify(-1) - stExit/,启动计费失败,结束计费,BillEnd ,Verify(0) - stFreeAd/,结束计费成功,Verify(-1) - stExit/,结束计费失败,注意:一般只需启动计费,因为如果用户挂机,系统会自动结束计费。,计费的例子,ChangePassword S1,修改帐号密码。在这个之前须先执行了,VerifyUser,动作,,执行,VerifyUser,动作后,系统将帐号的原密码放置在系统变,量$,Password,中。 完成后产生事件:,Passed,成功,Failed ,失败,认证与计费动作,TempFile,Erase,Copy,S2,Get S1,文件操作动作,OpenMailBox S1,若打开成功,系统自动设置如下的系统变量:$,TotalMail,$CurrentMail,CloseMailBox,AddMail S1,DelMail S1,ReplaceMail S1,PlayMail,邮箱管理动作,LockMailBox,UnLockMailBox,PrevMail S1,NextMail S1,ShiftMail S1,GetMailText,PutMailText S1,NewMailBox S1,I1,邮箱管理动作,OnCallCleared &F1,当,IVR,接收到,ACD,送过来的,CallCleared,事件时执行处理函数,F1。,OnStopFlow &F1,当系统要停止流程的运行时执行处理函数为,F1。,同时传来自定义数据串,存放于系统变量,INPUTPARAM,中。 系统缺省处理:强行终止当前流程。,设置例外处理函数动作,SetStopWatch I1,启动/重置定时器,,I1,为定时时长,单位为秒。 定时时间到,会产生例外事件,必须先用,OnStopWatch,动作,设置例外处理函数。,OnStopWatch &F1,设置定时器时间到事件的处理函数为,F1。,定时器由,SetStopWatch,动作激活。系统缺省处理:强行终止当前流程。,设置例外处理函数动作,Timer I1,延时,I1,秒,时间到产生事件,TimeOut。,CallFunc &F1,产生事件:,Returned(,值)接收子函数返回的值,。,Return I1,在子函数中返回值到调用函数。,PrintRegister I1,将寄存器的值打印到,log,文件,并送往监控终端。 此动作主要用于流程进行调试时。,其它动作,每个流程可以有一个相应的配置文件,用于存放此流程需要的信息。,IPSWITCH,中,配置文件不是必须的。配置文件建议与流程文件同名,后缀为,ini。,配置参数常量,Parameters,节存放流程中用到的配置参数常量,。,如果流程中使用到配置参数常量,但在配置文件中没有写上,系统将使用缺省值,而不会报错。对于整型缺省为0,字符串缺省为空串。,例如:,Parameters,data = 123,流程配置文件,流程编写完成后经编译生成以.,cod,为后缀的中间代码文件,将此代码文件、流程配置文件(.,ini,文件)、用户提示音文件(.,v41,文件)及要用到的语音文件放置在工作目录里。,放置完毕则在维护终端加载流程。如下:,定义流程,流程号:1,流程文件:,Playback.cod,配置文件:,Playback.ini,工作路径:,h:flowplayback,系统初始流程:1 /现在都缺省为1,描述:简单播放 /关于流程的说明文字,业务配置,定义字冠,服务属性页面,服务模块:智能语音应答(,IVR),服务类别:168,流程号:16选择通过服务认证取流程号,可不选,流程加载完毕在计费终端设置服务项目编码。,服务项目编码设置完成后则可运行流程。,其中流程需要用到的表及,SQL ID,等须预先设置好。,业务配置,维护终端,主要是用于对信令的跟踪、加载流程以及对流程执行的监察。,计费终端,查询话单,可检察流程执行后产生的话单。,前台对用户、帐号、服务等进行管理。对于流程,主要是 用于帐号生成,,服务的设置以及服务编码的设置等,。,与业务相关的应用程序,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!