USML开发设计规范青牛软件.docx
- 文档编号:11529529
- 上传时间:2023-03-18
- 格式:DOCX
- 页数:43
- 大小:466.82KB
USML开发设计规范青牛软件.docx
《USML开发设计规范青牛软件.docx》由会员分享,可在线阅读,更多相关《USML开发设计规范青牛软件.docx(43页珍藏版)》请在冰豆网上搜索。
USML开发设计规范青牛软件
关键词汇约定:
资源文件:
usml;
wav;
vox;
tif;
txt等文件;
SP:
ServiceProvider服务提供商缩写;
功能模块:
颗粒度很小的,具有特定可重用功能的流程片段;
业务模板:
具有典型业务类别特征,包含完整业务逻辑的流程文档;
系统语音:
SP入口主文档可能使用到的语音文件;
节目语音:
节目中使用的,用于提示用户进行交互操作的语音文件;
资源语音:
节目中使用的,内容语音,如歌曲,故事,笑话等,此类语音文件可能经常更新,并为多个节目共享使用;
临时文件:
临时文件主要包括:
传真文件,录音文件,或在系统运行时临时生成的文件;
1.数据库设计规范
本数据库设计规范基于MSSQLSERVER2000,其他另议。
数据库服务器机器命名:
统一使用相同的命名规则:
城市名+_DBSVR+序号;
例如:
数据库一:
BJ_DBSVR1;
数据库二:
BJ_DBSVR2;
说明:
当缩写发生冲突时使用全拼替换,保存到《全网数据库服务器其命名对照表》文档。
需要增加(删除、修改)数据库服务器时上报技术中心,技术中心负责维护《全网数据库服务器其命名对照表》。
各分公司根据技术中心下达的名称实施安装。
对照表范例:
地区
服务器名
IP
联系人
联系电话
北京
BJ_DBSVR1
…
。
。
。
。
。
。
。
。
。
。
。
。
BJ_DBSVR2
…
上海
SH_DBSVR1
…
SH_DBSVR2
…
….
…
…
数据库服务器实例名:
统一使用相同的命名规则:
SVR_+信息描述+序号;
例如:
实例一:
SVR_IVR1;
全称描述:
BJ_DBSVR\SVR_IVR1
实例二:
SVR_IVR2;
全称描述:
BJ_DBSVR1\SVR_IVR2
数据库服务器实例使用的通信端口:
统一使用约定的通信端口:
1433
说明:
对于多个实例情况端口顺序+1;
数据库服务器实例中的数据库命名:
统一使用相同的命名规则:
DB_+分类+_+信息描述
例如:
DB_IVR_PublicInfo
DB_SMS_Game
说明:
分类目前包括IVR和SMS。
信息描述的命名建议采用表意英文(或全拼)
数据表的命名:
对于某个栏目单独使用的表:
tbl_+栏目编号+_+表意英文(或全拼);
例如:
tbl_119_Music;
tbl_119_YinYue;
对于多个栏目共享使用的表:
tbl_Share_+表意英文(或全拼);
例如:
tbl_Share_User;
tbl_Share_YongHu;
说明:
栏目编号由业务管理部门约定。
视图的命名:
对于某个栏目单独使用的视图:
view_+栏目编号+_+表意英文(或全拼);
例如:
view_119_Music;
view_119_YinYue;
对于多个栏目共享使用的视图:
view_Share_+表意英文(或全拼);
例如:
view_Share_User;
view_Share_YongHu;
说明:
栏目编号由业务管理部门约定。
存储过程的命名:
统一使用命名规范:
proc_+表意英文(或全拼);
例如:
proc_WeekData;
proc_ZhouShuJu;
字段的命名:
字段:
使用表意英文(或标准缩写、全拼)命名,每个英文单词的第一个字母大写,其他字母小写;
例如:
UserName;
FileName;
存储方式:
IVR(SMS)使用的数据库服务器(即系统数据库服务器)与其他应用程序的数据库服务器(即应用数据库服务器)要独立分开。
数据库的数据文件和日志文件不要放在系统盘下,放在一个独立的硬盘分区内。
完全使用脚本建立数据库,以及初始化数据。
(加入操作方法)
使用Raid或磁盘阵列。
(建议)
2.数据库访问规范
统一使用Microsoft公司的ActiveXDataObject(ADO)技术访问数据库。
统一使用ADO版本为MDAC2.6版作为开发基础版本。
(参见附录A)
统一使用ODBC数据源访问数据库,命名与默认访问数据库名相同;采用系统数据源,其连接和数据库服务实例的端口保持一致,缺省的端口号为1433。
(如下图:
)
统一使用COM+组件封装对数据库的访问,COM+组件部署在COM+容器中。
使用到的数据源信息字符串,放在USML脚本的中的知识变量中。
(如下图:
)
3.组件部署规范
COM+容器作为应用服务器组件的部署、运行环境;(下图为COM+组件服务管理器)。
组件的开发应符合COM+标准。
COM+组件以SERVER方式部署在应用服务器上,然后导出客户端安装包,并在每个语音网关(SLEE)上进行安装。
正确设置组件安全权限,访问机制,保证SLEE能成功访问应用服务器上的服务。
部署完毕后,必须在每个语音网关上用测试脚本测试组件调用是否正常。
(每个COM+组件必须附带测试脚本。
)
说明:
当需要对系统的功能进行扩展时才需要使用组件。
组件分为:
系统级组件和应用级组件,各地业务开发人员只要开发和部署应用级组件。
系统级组件的维护权在总部技术部,全网统一服务平台上安装的系统级组件的升级和维护由总部技术部统一安排进行。
4.Web访问规范
SLEE内置的访问WEB的功能将原有通过COM组件执行的后台计算迁移到Web上,这样可以最大限度的将usml执行动作和后台计算动作分开,同时保证SEE运行的高效稳定。
Web计算方式便于实现分布式语音接入系统。
图例如下:
ATSB编辑环境下,设置计算节点的Language属性,指定计算节点的内容是对ServerPage(JSP、ASP、CGI等)的调用。
SEE对WEB的调用方式为Get方式
WEB服务程序返回XML格式的字符串作为返回结果。
SEE对返回结果自动进行解析,解析后对知识变量进行赋值。
范例:
m_HttpReturn=
其中m_HttpReturn为用户定义的知识变量(必须为String类型),用于存放调用错误时错误的详细信息。
m_Para1、m_Para2为用户定义的知识变量,作为web调用的传入参数,如果m_Para1、m_Para2未定义未知识变量,则SEE认为是用户输入的常量,不处理。
ServerPage计算节点的结果传入变量m_PreResult,可能有两个取值"No_Error"和"GeneralError",当返回"GeneralError"时可以从m_HttpReturn获得错误的详细信息。
只有在WEB服务调用成功并且返回的XML文档中的变量与计算节点的输出变量一一对应的情况下,m_PrevResult的取值为"No_Error",其他情况都为"GeneralError"
如果WEB调用成功:
WEB调用成功的标准是,正确的调用了指定的Url,并且返回的正确的XML文档
返回的标准XML,将返回值以标准的列表形式列出
xmlversion="1.0"encoding="GB2312"?
>
此时m_PrevResult的取值为"No_Error";m_HttpReturn="0"(标签Return的属性value)
如果调用成功,SEE自动将返回的XML的标签Var的内容解析,将Value的内容传送给Name对应的知识变量(计算节点的传出参数)。
如果WEB调用失败,包括两种情况:
1.http请求没有得到了正确的响应,则m_HttpReturn为错误代码,代码的内容参见MSDN
INFO:
WinInetErrorCodes(12001through12156)
例如:
无法解析服务器的名称或地址,返回字符串”12007”
例如:
无法与服务器建立连接,返回字符串”12029”
2.http请求得到了正确的响应,但是返回的文本不是正确形式的XML文档,则m_HttpReturn为Web服务器返回的错误内容,
例如404@等。
5.文件目录规范
目录结构说明:
如下图:
SP目录下的目录结构说明如下:
SP编号目录:
规范由管理中心系统制定;
例如:
95001(SP编号);(不要用9500举例,容易引起误会)
说明:
SP编号为管理中心用于管理下辖所有SP而制定的统一编码规范;
此目录下保存:
Main.usml文档,为此SP下所有接入号码的主入口文档;
目录说明.txt(约定)文档,保存当前目录下的所有子目录的说明信息;
节目编号目录:
规范由管理中心系统制定;
例如:
95001000(节目编号);
说明:
节目编号对应于当前SP下辖的节目;由管理中心制定统一编码规范;
此目录下保存节目使用的文档:
Index.usml,此文档对应节目号下的Usml入口主文档;
其他辅助usml文档;
节目编号+.txt文档
文档命名规则:
主文档:
与目录同名,如:
95001000目录下的主文档为95001000.usml;
其他文档:
使用表意英文命名,首字母大写,其他字符小写;
此目录下保存的子目录:
Voice:
此目录下保存本节目使用的节目语音文件;
其他目录:
使用表意英文命名(或全拼),首字母大写,其他字符小写;
日志目录:
约定;
例如:
Log;
说明:
使用表意英文命名,首字母大写,其他字符小写;
此目录下含Err和Sys两个子目录;
Err目录用于保存IVR应用系统的错误日志;
Sys目录用于保存IVR应用系统的系统运行日志;
功能模块目录(全局):
约定;
例如:
Module;
说明:
使用表意英文命名,首字母大写,其他字符小写;
此目录保存功能模块;以及功能模块使用的相互依赖的提示语音等资源文件;
此类目录依赖性很小;
此类目录下子目录命名使用表意英文,首字母大写,其他字符小写;
例如:
Voice目录包含功能模块使用的缺省提示语音;
业务模板目录:
约定;
例如:
Template;
说明:
使用表意英文命名,首字母大写,其他字符小写;
此目录保存业务模板;以及此模板正常运行依赖的提示语音等文件;
下辖子目录使用表意英文(或全拼)命名,首字母大写,其他字符小写;
例如:
Meeting;
此目录保存会议业务模板,使用英文Meeting表示会议;
此目录下保存业务模板使用的文档:
模板名称+.usml,此文档对应业务模板下的Usml入口主文档;
其他辅助usml文档;
业务模板目录.txt文档
文档命名规则:
主文档:
与目录同名,如:
Meeting目录下的主文档为Meeting.usml;
其他文档:
使用表意英文命名,首字母大写,其他字符小写;
此目录下保存的子目录:
FaxFile:
此目录下保存接收和发送的传真文件;
RecordVoice:
此目录下保存本节目使用到的录音文件;
Voice:
此目录下保存本节目使用的提示语音文件;
资源语音目录:
约定;
例如:
Voice_Resource;
说明:
使用表意英文命名,首字母大写,其他字符小写;
此目录下根据类别保存相应节目的下辖类别语音到不同的目录下;
此目录下的子目录使用表意英文命名(或全拼),首字母大写,其他字符小写;
例如:
GuShi目录下保存“故事”类别使用的资源语音;
KongBuYouMo目录下保存“恐怖幽默”类别使用的资源语音;
系统语音目录:
约定;
例如:
Voice_System;
说明:
此目录下保存SP使用的入口主文档:
Main.usml可能用到的系统提示语音;
文件命名规则:
使用表意英文(或全拼)命名,首字母大写,其他字符小写;
例如:
PV_Error.Vox保存Main.usml文档中使用的错误提示语音;
6.语音资源规范
语音资源分类:
◆系统语音:
少数平台内统一的内置提示音。
◆节目提示语音:
节目中向用户播放的操作提示音。
◆资源语音:
资源语音如,笑话、评书、新闻等等。
语音文件的命名规范:
约定;
节目提示语音:
提示语音文件使用:
PV_+表意英文(或全拼),首字母大写,其他字符小写;
例如:
PV_Welcome.vox(wav)语音内容为”欢迎…..”;
PV_AnswerRight.vox(wav)语音内容为”回答正确.”
资源语音:
根据不同的业务对照开发要求进行命名,序列化分;
例如:
95001000.usml中的幽默类别内容语音命名为:
YouMo001.vox~YouMo099.vox;
95001000.usml中的笑话类别内容语音命名为:
XiaoHua001.vox~XiaoHua099.vox;
语音知识变量的命名:
语音知识变量是存放语音文件路径和文件名的(String类型)知识变量,其名称是在语音文件名的基础上,去掉.vox后缀,加上前缀m_。
为了流程维护的灵活性,通常将每个节目提示语音文件对应一个语音知识变量,这些语音知识变量的初始化在流程开始处进行。
例如:
m_PV_InputQQCode=m_VoicePath&"PV_InputQQCode.wav"
m_VoicePath是整个USML文档统一的存放路径的知识变量,初始化前通过修改m_VoicePath可以将改变USML搜索语音文件的位置。
语音文件格式:
系统支持统一采样率的语音格式;
8K,8位,CCITT,A律,单声道WAVE格式的语音
7.临时文件存储规范
根据约定:
临时文件包括两类:
传真文件,录音文件;
传真文件命名规则:
时间+_+节目号+_+通道号+.tif
例如:
20030209220110_123_3091.tif
2003年2月9日,22点1分10秒,95001123节目,3091通道的传真文件;
说明:
时间格式:
约定;
使用4位年,2位月,2位日,2位小时,2位分钟,2位秒;
例如:
2003年2月9日,22点1分10秒对应于20030109220110
传真文件存放路径:
对应的节目目录下\FaxFile;
例如:
SP\95001\123\FaxFile
说明;
95001123节目下的传真文件保存路径;
录音文件命名规则:
时间+_+节目号+_+通道号+.vox(wav)
例如:
20030209220110_123_3091.vox
2003年2月9日,22点1分10秒,95001123节目,3091通道的录音文件;
说明:
时间格式:
约定;
使用4位年,2位月,2位日,2位小时,2位分钟,2位秒;
例如:
2003年2月9日,22点1分10秒对应于20030109220110
录音文件存放路径:
禁止将录音文件保留在节目目录下,避免管理上的复杂性。
可以考虑存放在外部文件共享服务器上。
由运行维护人员维护这些文件(比如定期导出、删除等)。
8.IVR应用日志规范
日志文件命名规则:
时间.log
例如:
2003020922.log
2003年2月9日,22点日志文件;
说明:
时间格式:
约定;
使用4位年,2位月,2位日,2位小时;
例如:
2003年2月9日,22点对应于2003010922
日志文件存放路径:
IVR应用系统的错误日志保存在:
【指定SP目录下】\Log\Err
IVR应用系统的运行日志保存在:
【指定SP目录下】\Log\Sys
例如:
SP\95001\Log\Err\2003120511.log
说明;
代号是95001的SP,2003年12月5日的错误日志文件保存路径;
统一的日志保存组件:
利用内置写日志的组件:
QNWriteFileCOM.clsWriteFileCOM
在哪些地方记录日志:
●对系统挂机的地方写日志,有两种可能:
1、流程结束主动挂机的地方。
2、突然遭遇异常错误,进入事件工作流。
对于异常错误,需要保存错误返回值的知识变量m_PreResult。
●对异常情况的记录
写入日志的常见内容:
时间、主叫号码、被叫号码、通道号、当前节点位置、关键返回值、写日志的原因。
COM+组件错误日志:
COM+组件在运行时捕获到错误,也应该写日志。
约定该日志写在COM+组件文件所在的文件目录下的log目录下,以【组件名_日期.log】的方式命名日志,所以每天可能会对应一个该天的错误日志。
附录:
挂机写日志的VBS脚本函数:
FunctionWriteLog(vAni,vDnis,vChannelDN,vResult,vResultExt,vPostion,vReason,sFilePath)
DimobjFileII
SetobjFileII=CreateObject("QNWriteFileCOM.clsWriteFileCOM")
objFileII.WriteBufferExtII"时间:
"&Now&_
"^主叫:
"&vAni&_
"^被叫:
"&vDnis&_
"^通道号:
"&vChannelDN&_
"^返回值0:
"&vResult&_
"^返回值0:
"&vResultExt&_
"^离开节点:
"&vPostion&_
"^离开原因:
"&vReason,
sFilePath,
sFilePath'此处应该传入互斥参数名,这里用文件路径做互斥量名称
EndFunction
9.容错处理规范
按键超时处理
处理按键超时是流程中的一个重要问题,如果处理不当,会出现死循环或提前挂机;
下面是两种错误的处理方法:
第一种:
在按键超时后,直接返回到本子流程开始,因为在系统运行过程中,如果交换机接收不到挂机信号,则下面的流程将出现死循环。
错误1:
流程陷入死循环
第二种:
在按键超时后,不做处理,则超时后转到缺省处理,导致提前挂机。
错误2:
流程进入异常处理,导致挂断
(第二种错误的处理方法)
下面提供几种正确的处理范例:
情景1:
首先播放一条语音,然后接收用户按键,超时后重新播放与接收按键。
例:
输入个人帐号(见下图),首先播放提示语音,然后接受用户输入的个人帐号。
当用户按键超时后,重新播放提示语音然后接受用户按键,反复三次超时后挂机(见图1)或跳转到其它子流程(见图2),在“输入个人帐号”节点中,采用VoiceEdit,循环播放次数选择3次(见图3)。
(图1)
(图2)
(图3)
情景2:
首先播放多条语音,然后接受用户按键,超时后重新播放最后一条语音与接收按键。
例:
播放公积金内容语音(见图4),首先播放多条内容语音,然后播放一条提示用户输入语音,最后接受用户按键选择,当用户按键超时后,只是需要重新播放提示用户输入语音然后接受用户按键,反复三次超时后挂机。
如希望接收按键超时后开始的多条内容语音也一起播放,见情景3。
(图4)
在“播放内容与接收按键”节点中,对最后的VoiceEdit,循环播放次数选择3次(见图5)。
(图5)
情景3:
首先播放多条语音,然后接受用户按键,超时后重新播放多条语音与接收按键。
情景3有两种实现方法,第一种只采用计算节点,第二种采用循环节点。
第一种方法:
例:
播放公积金内容语音(见图6),首先播放多条内容语音,然后播放一条提示用户输入语音,最后接受用户按键选择,当用户按键超时后,希望开始的多条内容语音也一起播放,然后接受用户按键,反复三次超时后需做挂机处理。
具体做法是:
首先声明一个记录次数的知识变量,并在调用此子流程前初始化为0,在子流程开始增加一个计算节点,使循环变量加1,在等于No_Error子分支下也增加一个计算节点,把循环变量置0,在等于TimeOut子分支下加入判断节点。
(图6)
在播放内容与接收按键节点中,对最后的VoiceEdit,循环播放次数选择1次(见图7)。
(图7)
情景3推荐使用下面实现方法,下面是前一个例子采用循环节点的方法(见图8)。
(图8)
首先增加两个知识变量记录循环次数和记录是否异常退出,在子流程开始处添加一个计算节
点进行初始化(见图9)
(图9)
接下来增加一个循环节点,循环节点设置如下:
(图10)
“播放内容”节点设置见下图。
(图11)
在判断超时等于No_Error子分支下增加一个计算节点,把知识变量设为正常标志,在等于TimeOut子分支下加入Conti
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- USML 开发 设计规范 软件