流程编写规范_第1页
流程编写规范_第2页
流程编写规范_第3页
流程编写规范_第4页
流程编写规范_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IVR流程编写规范IVRCodingStandard编制单位:新太科技技术开发中心编制时间:2004/2/20文档编号:SPMS-SEP-12版本号:内部试用版编制审核批准生效日期汤冬儿赵刚张少文变更记录A-ADDEDM-MODIFIEDD-D]ELETED序号日期章节”变更简述变更人目的 说明 流程规范 组织结构 排版 注释 命名 变量 状态 函数 流程动作基本约定 目的•本部分编写规范适用于新太IPS流程编写。说明本规范作为一个标准的IPS流程编写规范,其中对于规则是必须遵守的,建议是提醒您需要注意的地方,或者是在该情况下一个较好的选择。流程规范组织结构规则1-1:在流程文件存放的根目录下,只能有.sc、.cod、.ini文件。其他的文件,按所属业务不同存放在不同的目录下,保持流程的根目录清洁。建议1-1:不同类型文件按类型分目录存放,原则是要类型分明,便于管理,便于过期删除,目录下文件如果有无限增长的趋势,请按一定规则(例如日期)分目录存放。建议1-2:放音动作所需的语音文件.vox/.v41文件,在./vox/目录存放;流程图等文档说明在./doc/目录下存放。排版规则2-1:流程中各状态块间保留1行空行。规则2-2:函数之间保留3行空行。规则2-3:流程头部配置参数、宏、函数、全局变量定义区域按先后顺序分开并注释含义,便于查找。例1://流程配置参数定义*************************************************************#iniparamstring#iniparamstring#iniparamstring#iniparamstring#iniparamstring#iniparamstring#iniparamint@sAgentStartTime@sAgentStopTime@sCurrencyFaxFile@nMaxTalkRecs//座席开始服务时间//座席结束服务时间//货币代码传真文件//系统最大的可说资源数//************************Endof配置文件*************************************************************//流程宏定义*************************************************************#defineINPUTERRLIMIT3#defineACCOUTLENGTH#defineINPUTERRLIMIT3#defineACCOUTLENGTH23#defineMAINPATH ".\\sysvox\\"#defineMAINVOX1 "NQQWel.vox"#defineMAINVOX2 "NQQCity.vox"//输入错误次数限制//账号长度(最长)//主函数语音文件根目录〃您好,QQ现已开通千里音缘服务//千里音缘目前已开放四川、海南两地//************************Endof宏定义************************************************************************************//流程函数定义//主函数////主函数//异常处理函数#functionOnClear//************************Endof函数定义************************************************************************************//流程全局变量定义//一个全局使用的数据串//一个全局使用浮点数,表示金额////一个全局使用的数据串//一个全局使用浮点数,表示金额//整型全局变量表示数目#declareFRg_fMyMoney=10.5#declareIRg_nCount//************************Endof全局变量规则2-4:规则2-5规则2-4:规则2-5:个Tab键规则2-6:函数体里状态左缩进一个Tab键,保持左对齐,该状态下的动作、事件语句左缩进一保持左对齐。流程动作语句中,“[”符号右边保留一个空格;“]”符号左边保留一个空格;流程动作中参数分隔符“,”右边保留一个空格。规则:流程动作语句中,状态跳转符号“->”之前至少要保留一个TAB键(最好同一个状态下的所有->符号都对齐),下的所有->符号都对齐),例2::stNationalQQCallIn[Strsub$CallerID,1,2][EqualSR0,"13"]“->”之后要保留一个空格。//外省用户呼入PassedFailed规则2-:8->stLocalQQNormal->stNationalQQCall//本地用户//外地用户等定义时,第二个参数和第三个参数之间用一个或者多个 键间隔开,以对齐美观为准。示例参见上面例13.3注释规则PassedFailed规则2-:8->stLocalQQNormal->stNationalQQCall//本地用户//外地用户等定义时,第二个参数和第三个参数之间用一个或者多个 键间隔开,以对齐美观为准。示例参见上面例13.3注释规则3-:1一般情况下,源程序有效注释量必须在20以%上。说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。规则3-:2流程头部配置参数、宏、函数、全局变量定义区域按先后顺序分开并注释含义。示例参见上面例1。规则3-:3流程头部必须注明各种配置参数使用约定。规则3-:4在流程头部定义全局变量的同时须明确列出该全局变量的含义及使用方案。例3://***********************全局变量#declareIRg_nLeaveWordType =0\o"CurrentDocument"#declareIRg_nCanChoose =1#declareSRg_sYWBegintime ="//留言类型0发送留言,1转发留言,2回复留言//收听用户资料时是否可以按键选择〃当前业务开始时间字符串yyyy-mm-ddhh:mm:ss//**********************Endof全局变量*1**1**1* <1**1*规则3-5:流程头部必须有自定义函数功能介绍。规则3-:6函数体开始之前必须有传入、传出参数解释,函数返回值解释。返回值的一般0表示正常,1表示有错,9表示异常退出,4表示转座席、8回主流程、7回上级菜单。例4://Functionusage: 用于将文本文件转换成传真文件///传入参数:/传入参数:File需要转换的文本文件;/传出参数:_FaFilea转换后的传真文件名;ere转换成功;异常错误;/厦门建行客服中心/编写日期:03/规则3-:7子函数必须有编写/修改日期。示例参见例4。规则3-:8如果有与网关交易部分必须明确收发包格式。例5://*******************************************//functionname:funcTrans282600ci对公业务飞修改电话银行密码////传入参数://传出参数:er修改成功连接数据库失败//上传报文: 帐号密码下传报文: 返回码//*******************************************规则3-:9注释应与其描述的代码相近,对子函数代码的注释应放在其上方,需与其上面的代码用空行隔开;对函数中代码的注释应置于右方相邻位置,不可放在下面。规则3-1:码流程文件中尽量使代码右方注释处于同一列,方便阅读理解。规则3-1:1流程中重要部分一定要注释。例如菜单选择后状态跳转。规则i涉及数据库操作必须注明实际SQL。说明:明确数据库操作目的,方便后期调试、测试核对流程。例6://******查*询*不*得*注*册*用户黑名单(如电话卡用户)*************//functionname:funcQueryRegBlacklistci 查询主叫号码是否在不得注册用户黑名单(如电话卡用户)传入参数:主叫号码 aller//传出参数:无e:r表示非黑名单用户 为黑名单用户 为数据库超时传传*******************************************funcQueryRegBlackList{eclare _er 返回值:stWaitcallerl[Assigng_sSQL,"select*fromqq_RegBlacklistwhereFcallerl[StrCatg_sSQL,$CallerID][StrCatg_sSQL,"%'"]lackliec _ elec r _elackliwhereF_callerlike'%Passed ->stIsBlacklistFailed->stNotBlackListTimeOut->stTimeout:stIsBlacklist[Assignm_nReturn,1]传传表1示是黑名单用户[ClearDTMF][SetDTMF""]“本用户不能进行注册”表0示]非黑名单用户表2示]数据库超时查询不得注册用户黑名单规则3-1:3播放语音必须注释放音实际文字。便于核对流程,以及方便阅读,以及语音文件遗失情况下恢复例7:请输入您的个人资料,男生按女生按[PlayFileSR0]选择性别DialTermi-n>atsetSelectSex规则3-1:4在流程中使用到全局变量必须注释用途含义,保持全局变量含义统一,避免在另外一处改变其含义。例8::stPromptUserType1用户权限为级管理员您好您是本聊天室的级管理员规则3-1:5边写代码边注释,修改代码同时修改相应注释,以保证注释与代码一致性。没用的注释要及时删除。规则3-1:6注释内容要清楚、明了,含义准确,防止二义性。规则3-1:7避免在注释中使用缩写,特别是非常用缩写说明:在使用缩写时或之前,应对缩写进行必要说明。建议3-:1通过对函数或状态、变量等正确命名,使流程代码成为自注释的。3.命4名规则4-1:状态、变量、函数命名只能使用英文字母、下划线以及数字的组合。应当尽量使用常规的英文或英文缩写,避免使用无法阅读理解的命名方式。

规则:配置文件参数,如果是字符串string类型的以“@s”做为前缀;如果是整数int类型的则以“@n”做为前缀。例9:#iniparamint@nMaxTalkRecs //系统最大的可说资源数#iniparamstring@sCurrencyFaxFile //货币代码传真文件规则4-3:宏定义必须全部大写。示例参见上面例1中的宏定义。规则4-:4全局变量命名参见规则5-“1全局变量命名”。规则4-:5局部变量命名参见规则5-“2局部变量命名”。规则4-6:状态命名参见规则6-1“状态命名约定”。规则4-7:函数命名参见规则7-2“主函数命名”、规则7-4、规则7-5“自定义子函数命名”、规则7-6“自定义例外处理函数命名”。规则4-:8命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写。说明:较短的单词可通过去掉元音形成缩写,较长的单词可取单词的头几个字母形成缩写,单词的第一个字母大写。一些单词有大家公认的缩写。例10:如下单词的缩写能够被大家基本认可。可缩写为可缩写为可缩写为可缩写为可缩写为可缩写为可缩写为规则4-:9命名中若使用特殊约定或缩写,则要有注释说明。规则4-1:0用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。例: 等。变5量规则:全局变量命名要以g_开头(g表示global),如果是字符串类型的则为g_s做前缀,如果是整型的则以g_n做前缀,如果是浮点型的则以g_f做前缀。例12:#declareSRg_sAstring="Thisisastring"#declareFRg_fMyMoney=10.5#declareIRg_nCount规则:局部变量命名要以m_为前缀(m表示member),如果SR类型的则为m_s做前缀,如果是IR类型的则以m_n做前缀。例13:#declareSRm_sAstring="Thisisastring"#declareFRm_fMyMoney=10.5#declareIRm_nCount规则5-:3全局变量定义区域参见规则2-3“流程头部配置参数、宏、函数、全局变量定义区域”,示例参见例1。规则5方案”。规则5规则规则5方案”。规则5规则5:5变量命名尽量符合该变量实际含义。:6去掉没有必要的全局变量,函数内部尽量使用局部变量。说明:全局变量是增大模块间耦合的原因之一,故应减少没必要的全局变量以降低耦合度。规则5-:7在流程开头仔细定义并明确全局变量的含义、作用、取值范围及全局变量间的关系。规则5-:8当向全局变量传递数据时,要十分小心,防止赋予不合理的值或越界等现象说明:当向全局变量传递数据时,应进行合法性检查,并在该行对变量含义做注释说明。

规则:寄存器变量使用一般作为IVR系统函数传递参数/返回值使用。流程内部自定义函数不推荐使用寄存器变量。除了动作返回值等不得不使用寄存器变量的情况外,一律不使用寄存器变量,用自定义变量代替。规则5-1:0参见规则3-1“4在流程中使用到全局变量必须注释用途含义,保持全局变量含义统一,避免在另外一处改变其含义”。规则5-1:1防止局部变量与全局变量同名。规则5-1:2严禁使用未经初始化的变量作为赋值。建议:建议不使用 或者 作为后续状态的变量,特别的,如果要超过个状态后仍然需要使用当前或的值,先把或赋值给其他变量中保存。状态规则:状态命名约定以“st”开头,第三个字母大写表示实际有含义的名称开始。例14::stWaitConnect->stGetTime:stGetTime[NowTime][Assignm_sTime,SR0]规则:函数中以状态stWait开始,以状态stExit结束。示例参见下面例 、例规则6-:3状态跳转为事件所驱动。函数规则7-:1在一个业务流程程序里面只能有一个主函数。规则:主函数只能名为main,在开始一个业务流程的时候自动执行。规则7-:3在一个业务流程程序里面可以有多个子函数。规则:子函数名不能为main。规则:自定义子函数除例外处理函数外,命名要以“func”开头,第五个字母大写表示实际有含义的名称开始,尽量表示该函数执行的具体功能、操作。//**************************通用聊天过程<1**1**1**1**1**1**1**1**1**1**1**1**1**1> //**************************通用聊天过程<1**1**1**1**1**1**1**1**1**1**1**1**1**1> *1^//functionname:funcChatProcess//functionusage:通用聊天过程//输入参数:g_nChatID聊天室编号,g_nChatType加入聊天的方式,g_nQQIdentify加入聊天身份,//g_nTalkTime聊天时长,g_nIsFullExit当没可说资源时是否退出来,在主题聊天时会用到要退出//输出参数:无//返回值0正常退出,1对碰中退出,2聊天室编号不存在,3其他错误,4没可说资源的退出****************************************************************//通用聊天过程****************************************************************funcChatProcess{:stWait//actionhere.:stExit}规则例1规则//**********************Endof通用聊天过程**********************规则例1规则:流程自定义例外处理函数,以“OnClear_”为前缀。电话呼出异常处理函数三省联网统计互拨时长:7流程中每一层菜单是独立函数,每一个选择项是独立函数。

规则7-:8在自定义函数开头须注释该函数的功能说明,详细传递参数、返回值的各种含义。示例参见例15。规则7-:9传入、传出参数尽量使用自定义全局变量,除系统规定外不推荐使用寄存器。承担函数传递参数的全局变量命名要符合变量命名规则。规则7-1:0子函数返回值约定,通常约定返回值0表示成功,其他值表示其他不成功原因。目前已经形成的一些基本约定Returened(9)表示出错需要主动退出流程,如资源分配失败/放音失败等Returened(8)表示需要回到主流程C,Returened⑺表示只需回到上层菜单D,Returened(4)表示转坐席后退出E,其他返回值暂定回到上一级菜单F,每个函数后都需要处理Returned(-I)事件例17:****************************************************************//连接坐席****************************************************************funcConnectAgent//标识子函数退出状态//标识子函数退出状态#declareIRm_nReturnedCode:stWait[Equalg_nData,0] //判断传入参数->stStar:stStar//actionhere.//…//…:stSuccess[Assignm_nReturnedCode,0] //正常连接坐席成功->stExit//转坐席后退出//转坐席后退出//回到主流程//回到上层菜单//出错需要主动退出流程<1**1**1**1**1**1> *1^[Assign

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论