为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

家校通服务系统中语音邮件网关的设计与实现

2017-09-21 44页 doc 81KB 36阅读

用户头像

is_729658

暂无简介

举报
家校通服务系统中语音邮件网关的设计与实现家校通服务系统中语音邮件网关的设计与实现 中山大学 硕士学位论文 家校通服务系统中语音邮件网关的设计与实现 姓名:谢桂园 申请学位级别:硕士 专业:软件工程 指导教师:李长森 20050521 永校通服务系统中语爵邮件州 天的髓汁50实现 家校通服务系统中语音邮件网关的设计与实现 专业:软件工程 硕士生:谢桂园 指导老师:李长森 摘要 本文主要介绍了家校通服务系统中语音邮件网关的设计与实现。 通过语音邮件网关可以实现只用普通电话就可以收发语音邮件。根据 具体应用中的要求对UDP协议进行了必要的...
家校通服务系统中语音邮件网关的设计与实现
家校通服务系统中语音邮件网关的设计与实现 中山大学 硕士学位论文 家校通服务系统中语音邮件网关的设计与实现 姓名:谢桂园 申请学位级别:硕士 专业:软件工程 指导教师:李长森 20050521 永校通服务系统中语爵邮件州 天的髓汁50实现 家校通服务系统中语音邮件网关的设计与实现 专业:软件工程 硕士生:谢桂园 指导老师:李长森 摘要 本文主要介绍了家校通服务系统中语音邮件网关的设计与实现。 通过语音邮件网关可以实现只用普通电话就可以收发语音邮件。根据 具体应用中的要求对UDP协议进行了必要的改进,弥补了其原来在可 靠性和流量控制方面等存在不足,使其更适合于局域网通信的特点。 使用了组件化编程技术对IMAP4、SMTP邮件协议和语音格式转换模块 进行封装,减轻编程的工作量、代码的可重用性,同时提高了系统的 健壮性、可扩展性、安全性。 关键词:CTI,语音邮件,网关,UDP,组件 巾山』、学fI!; I论殳 家授通服务系统中浯晶 邮件H关的设汁tj实现 on and ofMa AnIntroduction DesignImplementation inHomeSchoolLink Gateway System Engineering Major:Software Xie Name:Guiyuan Li Supervisor:ChangSen ABSTRACT This anintroductionon and gives design paper OfMail inHomeSchooILink voiceMail Gateway System(Byusing canberealizedtotransmitvoicemail Gateway(it through line(UDP inour telephone protocoIISimproved flow itsweaknessin and controIand compensates reliability adapts it betcertoLocaIAreaNetworkCommunications(Besides( is inour ComponentProgrammingTechnologyappliedapplication in ofvoiceformat andmail the conversionprotocols encapsulation lMAP4welIasSMTPwhichreducesits includingas programming its andenhancesits work,increasesreusability robusticity, and expansibilitysecurity_ Key II 中llJ人’学咖li f:业 家校通服务系统中语 函邮件刚关的改汁。J实现 第1章引言 “教育融于大社会”是现代教育思想的核心。只有家长与老师密切配合才能 实现这一教育思想,从而更好地提高孩子的素质。那么沟通渠道是否畅通就成为 家长与老师进行配合最为关键的环节之一。而目前豹沟通渠道主要有以+卜-三种方 式: 1(家访、不家长会:费时费力,老师又不能顾及到每个家长,往往家长会仅成 了通知会,犬部分家长还是不了解自己孩子的具体情况。 2(打电话:上课时,找不到老师。备课时,又打断老师的思路,以致工作没有 延续性,效率很低。下班后,打老师的私人电话又不方便,真的是左右 为难。 3(E(MAIL:学生这么多,老师在打字上需要花费太长的时间,而大部分家长对 于打字和收发E―MAIL又是非常生疏,解决不了问题。 如上所述,这些方式都存在着,些不可以回避的弊端。CTI技术的逐渐成熟, 为此提供了一个很好的解决途径。 CTI ComputerTelephone Integration 即计算机电话集成,它使语音和数 据融为一体,并在终端 计算机和电话机 上得以实现,是呼叫中心等等领域广 泛应用的一种关键技术。部署CTI的行业和公司正在享受CTI所带来的好处: 更短的客户响应时问、更高的工作效率以及更高的数据按需使用可用性等。目前, 随着CTI技术的进一步发展:信令网关化、媒体处理网关化、标准接口、可编程 等技术已成为其应用的新亮点。通过这些新的技术,CTI不仅可以处理传统的电 话语音,而且还能方便处理地包括传真、电子邮件等在内的其它形式的信息。 为了方便家长和老师的沟通,并提高双方沟通的效果,我们运用CTI技术设 计并开发了家校 家庭、学校 通服务系统。该系统为家长和学校问的沟通提供 ‘种便捷的解决方案。老师可以使用电脑或只用普通电话、家长只用普通电话就 可以通过该系统进行语音邮件 VOICEMAIL 的收发。解决了如上所述方式都 存在的一些不可以回避的弊端。语音邮件网关正是该系统的关键技术之一。 语音邮件网关主要功能是完成自动语音应答 IVR 模块对邮件的处理请求,包 括发送邮件、接收邮件、删除邮件等,并返回相应的处理信息给IVR。另外,语 音邮件网关还要完成语音文件格式的转换。 5 中山人学坝t论丈 家校通服务系统巾语盅邮件M关的世计‘,实地 存实现语音邮件网关时,使用了组件化编程技术对IMAP4、SMTP邮件协议 的封装和语音格式转换模块的封装。这样不仅减轻编程的工作量,软件设计重点 转向充分利用组件提供的服务,而不别理会组件的具体实现细节。另外,由 于组 件接口和实现分离,组件接u的高度抽象特性使得各个组件能够被独立的抽取m 来,而不影响到系统的其它部分。这样带来的好处是:可以轻松的抽换实现即组 件本身,而不用修改客户端的软件;用户只需要了解接口,而不需要了解实现细 节;增加了重用的可能性:同时提高了系统的健壮性、可扩展性、安全性。 此外,系统的通信模块采用基于UDP的通讯协议,是基于帧的通信,相较 于TCP具有一定优势,如速度快,更为直接有效,在可操作性、维护性、容错 性方面的能力强等。但是UDP协议在可靠性和流量控制方面存在不足,因此, 专门设计一套基于UDP的通信协议来实现基于UDP的可靠通信及弱连接特性 收发帧的有序性、保证数据同步、利用发送帧确认消息 即捎带机制 、超时重 拨以及流量控制 滑动窗口协议 :通过重发队列 该队列主要保存发送出去而 未被确认的PDU 实现通信的流量控制,防止通信拥塞。这样既可以充分利用 局域网丢包率低的特点,又可以利用UDP通信速度快、效率高的特点。“’ 1 本章内容部分引自【1l p10,162,[2】p168 6 家搜通服务系统中语音岫j件叫关的啦汁o』实蝇 第2章语音邮件网关总体设计 2(1家校通服务系统结构 家校通服务系统的系统结构图如下: 图2―1家校通服务系统的系统结构图 系统中主要模块的功能介绍如下: 1(MEDIA 包交换网 即IP、ATM网 中信息转换 包括语音压缩、信号检测等, 由硬件实现 ,完成媒体的接入控制功能; 2(SOFT SWITCH:完成路由功能。控制基于PSTN的呼口q,为完成基本呼 叫的建立、保持和释放提供控制功能,包括呼叫处理、连接控制、智能 呼叫触发、资源控制等,并生成呼叫详细; 3( IVR:自动语音应答。包括业务流程的解释和执行; 4(语音邮件网关:完成IVR对邮件的处理和语音格式的转换 asf格式语 音与VOX格式语音的互换 ; 5(Web Server:完成老师邮件收发、信息发布以及管理员的同常管理; 6(数据库网关:完成系统对数据库的操作; 7 中山人亨’坝I论芷 球救通服务系统巾语曲邮件叫灭的啦计‘o实观 7(StdPP:负责系统与移动公川短信中心的连接,完成短消息的收发。 2(2语音邮件网关系统结构 语音邮件网关完成IVR对邮件的处理和语音格式的转换 asf格式语音与MOX 格式语音的互换 。其系统结构如下图所示 图2―1浯音邮件网关系统结构 2(2邮件处理流程 2(2(1发邮件流程 发邮件处理流程: 1( 到上述消息后,根据消息判断是否有邮件附件 a(如果有邮件附件,将附件格式为vox的语音文件转换格式为asf的 语音并根据收邮件人的地址发送给目的邮箱。 b(如果没有邮件附件,根据收邮件人的地址发送给目的邮箱。 2, 连接邮件服务器,根据发送邮件结果返回相应的消息给IVR。流程 8 J 头观 隶技通服务系统中涪哥邮件M父的设计2 如下 „,,一竺::? RESPSENDMA SmP一 图2,2―1发送邮件流程 2(2。2收邮件流程 IVR的请求,根据IVR的请求去检测邮箱中的信件,如果有信,将邮件收下根 发送给IVR。 2(3CommlVlMn通信模块设计 2(3(1;Ot mmMain通信模块简介 的方式 即将通讯模块分成通信管理服务器模块和通信客户模块两类模块,客户 模块与服务器之间采用Client与Server的关系,而通信管理服务器之间作为对 等的通信实体,为各客户模块提供一定程度的分布式处理功能 ,实现在同一台 机器内模块间采用IPC及共享内存通信,而在不同机器间采用UDP的弱连接的 通信,充分发挥了局域网速度快、包丢失率低的优势。 如下图所示: 9 采校通服务汞统巾语一邮件叫关的设计I』实现 端,一盘 网络 注: o通信客户模块 口通信服务器 口计算机 斟2--3--1CommMain通信体系简介 2(3(2 Cow(Main通信模块的通信协议 CommMain通信模块采用基于UDP的通讯协议,是基于帧的通信,相较于 TCP具有一定优势,如速度快,更为直接有效,在可操作性、维护性、容错性 方面的能力强等。但是UDP协议在可靠性和流量控制方面存在不足,因此,我 们设计,套基于UDP的通信协议来实现基于UDP的可靠通信及弱连接特性。 体现在以下方面: 1保证收发帧的有序性; 2(相关可靠性保证: 1 保证数据同步; 2 利用发送帧确认消息 即捎带机制 ; 3 超时重拨; 3(流量控制 滑动窗口协议 :通过重发队列 该队列主要保存发送出去而未 被确认的PDU 实现通信的流量控制,防止通信拥塞。 2(3(3 Coat'lain层次结构 CommMain的各通信层次分布,如图 10 采校通服务景统中诰占mli 件州;?的垃计‘』实耽 麻用 数捌也 通信客广模块 ( 应用从 格r? 1通信管理服务器 通信管理百多 ,基于uDP的挑i义 UDP层 操作系统及硬件 系统层 幽2,3―3―1 v,通信客户端模块 应用层 :采用消息驱动机制,用户看到的是自行定义 的消息内容。 ,通信管理层:相对通信客户模块是透明的。实现消息机制,管理通信客 户模块,将包在通信客户模块间传递,沟通不同的进程。 ,UDP层:实现基于UDP的协议,沟通不同的机器和操作系统,为不同 机器上的模块之间通信的透明管道。UDP通信过程如下图所示: 2(3(4 CommMain工作原理 CommMain通信工作原理上由通信管理服务器和通信客户模块两部分组成。 通信管理服务器主要目的是管理通信客户模块之间的通信,是CommMain通信 的基础。 2(3(4(1通信管理服务器 通信管理服务器,实现各模块之间消息的流动,维护整个系统的正常运行。 通过为每一个通信客户模块维护一个接收消息队列和„个发送消息队列,使不同 的通信客户模块在本机内通过IPC及共享内存机制通信,在异机之间通过基于 UDP的协议通信。有关消息收发过程如下图: 中;lI』、于坝卜沦艾 采投通雌务系统中语音邮件旧是的哎计。。实现 』客户A接收消息 消息分发 窖户B接收消息 j ^ ,7 一‘ 亭 ――――――。――一 翟酒 客户端A、―、, ――,客户端 B 刊J?一 痘r山A,;单消E ?,户R臀?姜I占自 CommMaaagcr 图2―3,4―1 CommManager消息发送流程图 2(3(4(2通信客户模块 通信客户模块自动具备和通信管理服务器交互的能力,能提供与通信管理服 务器沟通的统一接口,并维护一个发送和一个接收队列,在启动时向通信管理器 注册本模块、在退出前向通信管理器注销本模块。通信客户模块在通信时的 消息 传送图如下: 包 i通信客户 消 ―?d端模块 。 B ―打 A的发送队列 B的接收队列 图2―3―4―2通信客户模块消息发送流程图 2(4语音邮件模块与IVR的接口协议 2(4(1取所有邮件的邮件头 命令名:CmdGetAIIMailHeads f一 EMailGW ,成功返回O;否则返回1。 命令参数见表2-4―1。 表2-4―1取所有邮件的邮件头命令参数 髅?A蒜Ft o盎:善墨m。。,四翮嚣剥四艄m攀舛《四攒簇蓊四踟#《辫粼嬲朋掌掰臻爵+曦等i PSP,strUserNarne Cstring 用户邮什账号 PSP,strPassword Cstring 账号密码 PSPstrHost Cstring 邮件服务器地址 12 家校通服务系统巾语岛邮佴嘲关的世计I,实现 2(4(2墩所有未读邮件的邮件头 回1,命令参数见表2―4―2。 表2(4(2取所有未读邮件的邮件头命令参数 。雾辫剥”r‖l‘“撰妻萋|豢蕊舞誉强蠢。。穗葶骚蕊 |_|_璧爨纂麟瞪 ||? “ ||lgg塑墼翳鬟嚼誊i。纛||;||察剿燕鬻42粪;。, PSP_strUserNameCstring 用户邮件账号 PSP―strPassword Cstring 账号密码 PSPstrHost Cstring 邮件服务器地址 2(4(3取第N封邮件 数见表2―4―3。 表24(3取第N封邮件的命令参数 Il黎鬓囊凌l l鬻辩l鬻囊鎏黧鬻燃隅攀8裕?糊糕E瀵麟譬薯。萋誊 《囊黪瑟霜瑟骚 PSP-strUserNameCstring 用户邮件账号 PSP―strPassword Cstring 账号密码 PSPstrHost Cstring 邮件服务器地址 PSPintMa„D int 邮件ID号 PSP_strAttachmentPath 邮件附件存放路径 Cstring 2(4(4删除第N封邮件 参数见表2_4_4。 表2―4―4删除第N封邮件的命令参数 錾瀚豢裁霪黼麟豢霪鬻l霪瓣糕l霪遴翼霪翼黧溺蠢麟鬟飘 l黼矮熏粪i黼蒸 PSP―strUserName Cstring 用户邮件账号 PSP―strPassword Cstring 账号密码 PSPstrHost Cstring 邮件服务器地址 PSPjntMaillD int 邮件ID号 13 f;dI凡学删I沦文 采校通服务系统中语一邮件嘲关的设计1』实地 2(4(5发送邮件 数见表24―5。 表2_4―5发送邮件的命令参数 瓣‖?,”i 黟 纂麟ml趱瓣蒸嚣蒸 镤舅蹙鲻黼 |黪慧篓黎l 鬟耀i熏黧嚣寨i蠢 PSP―5trSnderAddr Cstring 发件人地址 PSP―strRcverAddr Cstring 收件人地址 PSPstrHost Cstring 邮件服务器地址 int 邮件主题 PSP_strMailSubject PSP__strAttachmentPath 邮件I坩件文件名 Cstring 14 q]山人学坝l‘论文 采校通服务系统中语曲illll件H最的|殳计。,实现 第3章语音邮件网关的详细设计 语音邮件恻关从功能上来划分,主要有通信模块、语音邮件收发以及语音文 件格式转换三个方面,卜面是各个模块的详细设计。 3(1通信模块CommMain的详细设计 块发送过来的消息。TCommManager对象是通信管理器,负责管理各个通信模 块之间的UDP通信,Module对象是通信客户端,是实现具体通信业务的对象。 3(1(1通信消息机制 CttranInfo,TKVSet 与运行环境无关的统一的消息定义接口。 3(1(1(1 TKVSet机制 Set。通常模块之间的消息内容总可以表示为一个域 KVSet就是Key―Value 一值的集合;KVSet的成员属性主要就是维护与描述这一链表的属性。对KVSet 的操作主要就是对链表插入与取出,只是插入与取出的数据类型不同,提供了不 同的插入与取出操作。 连接为一个KVSet链表发送出去。通信的接收方接收到这个KVSet链表之后 再 15 中 j1人学坝I沦正 采枝通服并系统中语卤蚶件州关的敬计1n 蚬 表3―1―1―1KVSet的Get函数组 函数声明 函数功能 参数说明 CTerror GetSymbol CTsymbolKey,C-rsymbol’pSymb01 CTerrorGetError CTsymbolKey,CTerror+pError : J CTefforGetStatus C"isymboKey,CIstatus+pStatus : CTerror GetByte C"IsymboIKey,CTbyte’pByte : CTerror GetShort CTsymboIKey,CTshort+pShort : CTerrorGetUShort CTsymbolKey,CTushort’pUShort : CTerror GetInt CTsymboIKey,CTint+pint : CTerror GetUInt CTsymbolKey,CTuint。pUInt : CTerror key[in】 GetBool CTsymbolKey,CTbool’pB001 : CTerror 通信般方 GetFIoat CTsymbolKey,CTfloat+pFIoat : C"rerror 约定的关 GetTime CTsymbolKey,CTtime。pTime : CTerror 键字,用于 GetString CTsymboIKey,char“pString : CTerror GetSymbolArray CTsymbolKey,CTsymbol“pSymbol,提取内容 CTuint‘puiElements : 的唯一标 CTerror GetErrorArray CTsymbolKey,CTerror“pError,CTuint 记。 +puiElements : CTerror GetStatusArray CTsymbolKey(CTstatus“pStatus, xxxx[out] CTuint+DuiElements : GET成 通信内容 CTerror GetByteArray CTsymbolKey,CTbyIe“pByte,CTuint员函数从 的地址指 +puiElements : Ctt陷nInf 针 CTerror GetShDrtArray CTsymbolKey,CTshort“pShort,CTuint O消息包 +puiElements : 的 CTerror puiEleme GetUShortArray CTsymbol Key,CTushort“pUShort, Key-Valu nts[out] CTuint+puiElements : e链表中 在读出数 CTerror GetIntArray CTsymbolKey,CTint“pint,CTuint +puiElements : 提取一个 组内容时, key所对 CTerror 作为数组 GetUIntArray CTsymbolKey,CTuint“pUInt,CTuint +puiElements : 应 的 的数量返 CTerror value 同。 GetBoolArray CTsymbol Key,CTbool”pB001(CTuint +puiElements : CTerror GetFIoatArray CTsymbol Key,CTfloat”pFIoat(CTuint +puiElements : CTerror GetStringArray CTsymbolKey,char+*aString[](CTuint +puiElements : 表3―1―1―2 KVSet的Put函数组 函数声明 函数功能 参数说明 CTerror PutError C-rsymbol key,CTerrorerrValue : PUT成员函 key[in】 CTerror PutStatus CTsymbolkey,CTstatus stsValue ; 通信双方约 数 往 CTerror PutSymbol CTsymbolkey,CTsymboI symValue : 定的关键 Cttranlnfo消 CTerror PutByte CTsymboIkey,CTbytecValue : 息 包 的 字。 CTerror PutShort CTsymboIkey,CisholtcValue : Kev-、,alue链 CTerror PutUShort CTsymbolkey,CTushortcValue ;表中插入一 xxxx[in】 CTerror PutInt CIsymboIkey,CTint iValue : 个 双 方通信的 CTerror PutUInt CTsymbolkey,CTuint uiValue : 内容 C]error key―value。 PutFIoat CTsymbolkey,CTfioatfValue : CTerror PutBoDI CTsymbolkey,CTbooIbValue : puiElement CTerror PutTime CTsymbol key,CTtimetValue : s[out] CTerror PutString CTsymboIkey,char+SZString : 在传送数组 CTerror key,CTerror PutErrorArray CTsymbolaError[], 时,作为数 CTuint uiElements : 中111人学坝t‘论立 象授通睢务系统中语一邮件M关的设计‘_实现 CTerror PutStatusArray CTsymbolkey,CTstatusaStatus[], 组的元素数 CTuint uiElements : CTerror PutSymbolArray CTsymbolkey, CTsymbol aSymbolD,CTuintuiElements : C'l'error PutByteArray CTsymbolkey,CTbyteaByte[J, CTuint uiElements ; CTerror PutShortArray CTsymbolkey,CTshortaShort[]( CTuint uiElements ; CTerror CTushort PutUShortArray CTsymbolkey, aUShortD(CTuintuiElements : CTerror aInt[],CTuint PutIntArray CTsymbolkey,CTint uiElements : CTerror PutUIntArray CTsymbolkey(CTuintaUIntD,CTuint uiElements : CTerror PutFIoatArray CTsymbolkey,CTfloatafloat[], CTuint uiElements : CTerror PutBoolArray CTsymbolkey,CTboolaBool[], CTuint uiElements : CTerror PutStringArray CTsymbolkey,char’aStringO, CTuint uiElement : 3(1(1(2 Cttranlnfo类设计 类Cttranlnfo的定义如下 classCTtranlnfo C1Intversion: sender: CTobj CTobjreceiver; CTsymbolmessagelD: CTuint tranlD: CIstatusstatus: CTuintqualifier: CTerrorerrorData: private: TKVSet ‘messageData: public: CTint Tranlnf02String char+str,CRntlen CTerror Strin92Tranlnfo char+str,CTintlen : TKVSet&GetMessageData : 其中类的属性如下:sender:应用相关的域;receiver:应用相关的域; 17 家校通服驽系统中语晶邮件州咒的设计o』实现 Strin92Tranlnfo char+str,CTintlen :功能是将网络字节顺序的数据转变为消 息格式;TKVSet&GetMessageData :功能是取KVSet内容。 3(1(2通信管理服务器 TCommManager 类设计 通信管理器 TcommManager 主要目的是管理通信客户模块和实现本机通 信客户模块问的消息通信,TcommManager是CommMain通信的基础。 TcommManager类的如下表: 表3―1―2类TcommManager的方法 函数声明 函数功能 参数说明 返回值 造 一 个 profile[in】 TCommManager C 指定通信管理器的配 无 TcommManager通 har+profilel 信管理对象 置文件 返回布尔值表示Run 操作成功还是失败, 成 功 返 同 CTbool 启动通信管理器服务 无 Runfk CT_booITRUE,失败 返 回 CTbOOlFALSE。 返【亓】布尔值表示 SIop操作成功还是 失败,成功返回 CTbool 停止通信管理器服务 无 Stop ; CT boolTRUE,失败 返 回 CT bOOlFALSE。 C1(error 连接通信客户对象模 aClientld[in】 成 功 返 同 Ctuint类型,通信客 ConnectToMe CTui块 CT―errorOK,失 败返 nt 户对象模块号 aClientld ; 同C1jrrorFAIL。 CTerror aClientld[in】 成 功 返 回 DieconnectFromM 断开通信客户对象模 Ctuint类型,通信客 CT-_errorOK,失败返 e CTuInt 块的连接 AClientld ; 户对象模块号 同CUrrorFAIL。 C1_error sender[in】 SendMessageToM Ctuint类型,消息发 el CTuint sender, 送者 成 功 返 回 CTuint receiver, 发送消息包 CT-errorOK,失败返 C11mnlnfo+ tranlnfo(CTbooI Receiver[in】 回CT-errorFAIL。 boolFAL Ctuint类型。消息接 hflag CT SEl; 收者 1B 中山人学顺 论迁 彖铰通服务系统中语甜 邮件M矢的砹汁’。实虮 tranlnfo[inl Cttranlnfo’类型,发 送的消息包 hflag[in】 Ctbool类型( sender【out] Ctuint类型,消息发 送者 C1(error GetMessageFrom Receiver[in】 成 功 返 同 Me《 CTuint*从通管理器提取消息 Ctuint类犁,消息接 sende CTuint r, 包 CLerrorOK,失败返 收者 receiver, 回CTerrorFAIL。 Cl"tranlnfo。 tranlnfo : tranlnfo[out] Cttranlnfo+类型,发 送的消息包 Ctuint timerlD[in】 成 功 返 同 清除计时器 CTuint Ctuint类硝,计时器 timerClearI CT,errorOK,失败返 tlmerlD : lD。 回CT_errorFAIL。 value[in】 Ctuint类型,计时器 标志值 CtuInt gor[Jn】 成功返回计时器ID, timerSet CTuInt设定计时器 Ctu 返 Jnt类!151,模块号失 败 回 value,CTuintgot, CorrorFAIL。 CTuint lefttime : lemime[in】 Ctuint类型,计时时 间,ms 打开日志文件输山标 Void 无 无 TraceOn 记 关J!Ij日志文件输出标 void 无 无 TraceOff0;记 stationNO[in】 通信站点号 成 功 返 回 CtbooI 在通信管理器里增加 ip[in】 C?-boolTRUE,失败 AddStation CTuInt ,个通信站点 通信站点ip地址 返 回 const stationNo, CT_boolFALSE。 char‘ip,intport ; port[in】 通信站点的端口号 成 功 返 回 CTbooI 重新读取通信管理器 CT_boolTRUE,失败 ReIoadPro订Ie 1;的配置文件 无 返 回 CT_boolFALSE。 19 家投通服务系统中语丹邮件叫 关的啦计1』实现 3(1(3通信客户模块 TCTModuie 类设计 部模块之间的接口,同时也是与通信管理服务器沟通的统一接口。类的方法见下 表。 表3―1―3TCTModule方法说明 函数声明 函数功能 参数说明 返回值 a,D[inl 通信客户对象模块 号,aid与通信站点 号一起组成通信模块 TCTModule CTuint 唯一识别号。 构 造 一 个 aid,char*aName, TCTModule通信客aName【inl 无 TCommManager 通信客户对象的日,占 户对象 ‘aCommManager ; 文件名 aCommManager[in】 通信管理器对象 取通信模块的 返回通信客户模块的 HANDLE 无 handle GetHandle : handle 返回CT_boolTRUE 表示模块已连接到通 CTboof 取得通信客户模块的 信管理器,返回 无 isConnected ;连接状态 CT_(booIFALSE表 C 示未连接到通信管理 器。 取得通信模块号,通 信模块号由模块 GoR和通信站点号 组成,通信模块号由 返回通信客户模块的 CTuint 无 GetlD0; 宏 模块号 MAKEMODULEGo R stationNO,Modul eNO 产生。 char? 取得通信模块的日志 无 回通信客户模块的日 中山人学坝I:论史 家校姬雌务系统中语 一邮件叫关的啦汁。J实现 GetName0: 文竹 ,占文件名 取得通信模块的站点 编号,通信站点编号 CTuInt 返回通信客户模块的 和通信模块编号一起 无 GetStationN00; 站点编号 可咀生成通信模块的 唯一识别号码。 receiver[in】 消息接收者, receiver是一个32 位的位域,receiver 由消息接收站点号和 消息接收模块号组成 的唯一识别号;其中 Cterror 发送消息,通信客户 receiver的高12位 SendMessage CTui 是通信站点号,低8 模块发送消息的统一 成 功 返 同 nt receiver( 1: 7 是模块号。 接口,SendMessage CT_boolTRUE,失败 CTtranlnfo, tranlnfo[in】 将tranlnfo消息包写 返 回 CTbool tranlnfo( 消息包 入通信管理器的发送 CTboolFALSE hflag CT_boolFALS hflag[inl E : 消息队列。 发送消息标记符,如 果 等 于 CT boolTRUE并且 发送给自己,将消息 包插到队列最前面。 Run 启动通信模块, 在通信客户模块工作 CTbool 之前必须先启动透信 无 无 Run void ; 客户模块服务,连接 到通信管理器中。 C1_error Stop 停止通信模 无 无 Stop void ; 块。 timerlD[in】 C1_uint 计时器ID,由 timerClear 清除计 timerClear CTuint 无 时器 timerSet返同的一个 timerlDl; 计时器序号 CTuInt Value[in】 timerSet 启动一个 CTuint 启动计时器时附带的 无 tlmerSetI 模块计时器,当计时 数值,可以片j作计时 value( CTuint 器类别标示。 21 中山人学f『!j 11论文 家校通心务系统中语寸 邮件酬关的设计’_实现 Iefttime ; 器超时,产生一个 Lefttime[in】 EvtPublic_Suntel _T 计时器超时的时间间 imeOut事件消息。 隔,毫秒为单位,当 lefttime超时候,通信 管理器会产生一个 timeout事什通知模 块。 sender[in】 消息发送者,sender 是消息发送源,是一 个32位的数字, 通知通信模块有消息 sender由消息接收 站点号和消息接收模 virtuaICTbooI 收 到 块号组成的唯一识别 HandleMessage C 无 时(CommManager号;其中sender的 Tuint sende r, CTtranlnfo& 高12位是通信站点 会自动调用这个函 tranlnfo ; 号,低8位是模块 数( GOR。 Tranlnfo[in】 消息包 通知通信模块通信模 virtuaIC"rerror OnConnectedfVoId 块已经连接到通信管 无 无 ; 理器 通知通信模块通信模 virtuaI void OnDiscOnnec“vOi块已经从通信管理器 无 无 d ; 断开连接 3(2语音文件格式转换模块详细设计 NCT公司开发的,能实现语音文件的读、写、修改、语音格式设置、语音格 式 WAY 转换等功能。他能支持语音格式包括:Uncompressed PCM、Compressed and WAV GSM,ADPCM,DSP 1,2 NC_『AudioFiIe2组件提供的组件初始化、组件销毁、打开语音文件、语音文件格 式设置、语音文件格式转换、创建新的语音文件等方法,并对外部提供Vox2Asf 家校通服务系统中语曲IIIll件H关的世汁‘』实现 和Asf2Vox两个方法。 3(2(1语音格式转换类 TAudioConvert 定义 类TaudioConvert定义如下 classTAudioConvert public: TAudioConvert0; vi rtual―TAudioConvert0; int t Asf2Vox bstrAsfFileName ; int Vox2Asf _bstr_tVoxFileName private: lAudioFile2PtrFileln; IAudioFile2Ptr FileOut; HRESULT hr; ErrorCOnstants err; : 3(2。2类方法详细设计 的组件初始化、组件销毁、打开语音文件、语音文件格式设鼍、语音文件格式转 换、创建新的语音文件等方法,并对外部提供Vox2Asf和Asf2Vox两个方法。 表3―2―2―1函数Asf2Vox详细设计 J函数名 ASf2Vox函数返回值 Int:0成功;(1:失败 l函数功能 将指定的ASF格式的语音文件转换为VOX格式的语音文件 l函数参数 一bstr―tAsfFileName:输入参数,待转换的ASF语音文件文件名 中山人学坝t论文 采校通服磐系统中晤哥邮件刚关的&计’J实现 表3―2―2―2函数Vox2Asf详细设计 函数名 Vox2Asf函数返回值 Int:0成功;(1:失败 函数功能 将指定的VOX格式的语音文件转换为ASF格式的语音文件 函数参数 VoxFileName;输入参数,待转换的VOX语音文件文件名 一bstr―t 中山人学顺l‘沦正 采校通服务系统巾语汁d呲件嘲关的畦汁oo实规 3(3语音邮件模块详细设计 1封象,能实现语音邮件的接收和发送功能。1IMAP4对象实现了协议,使用他能 接收支持IMAP4协议的邮件服务器上的邮件。SMTP对象实现了SMTP协议, 使用他能向支持SMTP协议的邮件服务器发送邮件。语音邮件类 连接邮件服务器、发送邮件、接收所有邮件的邮件头、接收所有邮件的邮件头、 接收指定邮件和删除指定邮件等方法,并对外部提供发送邮件SendMail、连接 指定邮件GetAMailAttachment等方法。 p山k学蛔|_论义 采校通服务系统中语曲邮件网关的设计??』实观 ion 定义 3(3(1语音邮件类 TIMAP4Connect 类TIMAP4Connection的定义如下 classTIMAP4Connection public: TIMAP4Connection0; virtual。TIMAP4Connection0; long szMailServer,PSZszAccount,PSZ ConnectToServer PSZ szPassword ; longDisconnect ; longGetAIIMaUHeader _bstr_t&strHeaders ; longGetAIIUnseenMailHeader bstrt&strHeaders ; GetAMa bstrt strAttPath( long JlAttachment intintMaillD,-bstr_t &strAttFileName ; intMaillD ; longDeleteAMail Iong longNOoPO; long SendMail _bstr_t szMailServer,――bstr―― tszFrom(((bstr_t szRecipient,_bstr_lszSubjeot,_bstr_tszAttFileName ; private: HRESULT hr; IEMlMAP4Ptr plMAP4; IEasyMailSMTPObjPtrpSMTP; ,f7 : 3(3(2类TIMAP4Connection方法详细设计 化、‘组件销毁、连接邮件服务器、发送邮件、接收所有邮件的邮件头、接收所有 邮件的邮件头、接收指定邮件和删除指定邮件等方法,并对外部提供发送邮件 中IIj人’学坝Ij论文 永枝通服务系统中语爵州件叫工的没计’,实现 设计如下。 3(3(2(1方法ConnectToServer详细设计 表3―3―2―1函数ConnectToServer详细设计 I函数名 ConnectToServer函数返同值 Int:0成功;非0:失败 函数功能 根据指定的自口件账号、密码连接剑指定的邮件服务器 函数参数 PSZszMailServer,PSZ 什服务器名、邮件账号、登录密码 nResult pINAP4一 Connect szHailServer t“ 连接邮件服务器 一:五 ?、, 、、芝竺二兰一’ nResuIt pIIIAP4一 Login szAccount,szPasswo rd :,,登录邮件服务器 ―?釜 』 nitesult pI砒P4- SelectlIBilbox ’InBox。 :,, 进入收件幕 ――JI , 、 【J丘回nResult 函数流程图: 、一―, 3(3(2(2方法SendMail详细设计 表3―3―2―2函数SendMail详细设计 函数名 SendMail函数返回值 tnt:0成功:非 0:失败 函数功能 发送邮件 函数参数 PSZ 参数,分别是邮件服务器名、发件人地址、收件人地址、土题、附件文件名 中山人学坝I论卫 永忮通服井系统中语由邮件州关的醴计’J实现 3(3(2(3方法GetAMailAttachment详细设计 表3―3―2―3函数GetAMailAttachment详细设计 函数名 GetAMailAttachment 函数返回值 Int:0成功;非0:失败 函数功能 接收指定的m日什 函数参数 附什文件名 中山人学f叭f。论业 永校通服务系统中语tMIf佴M关的设汁2』实现 3(3(2(4方法GetAIIMailHeader详细设计 表3,3―2―3函数GetAIIMailHeader详细没计 中“J人学颅Ij论空 家校通服务系统L J语哥邮件明关的设汁4J填珧 函数功能 接收所肓邮件的邮竹头 函数参数 strHeaders;输入参数,所有邮件的邮件头 函数流程图: I―――― nResult pIJnP4 o,o ,,接收指定的邮件 0 plessage IEi叫SGMessagePtr pimP4一 Messsge:,,设置 一磊::::2斋、,, 发送邮件造项 一 ?,Res,ult一 ,,一7 : J Fr。m:,,设置发 送邮件选项J 一 pEnvelopes p 设置发送邮件 ? 垃 1f ( 飓嘎 + ’l’:设置 i 发送邮件选项 一 设置发送邮件选项 + , ――一。L―――一 l'R pnt 罾骨谱曲件诜 0 铲一””4I 一: :设 』 置发送邮件进项 + ?’:设置 发送邮件选项 ,一: j:, ―?竺!二一一’ 一 ,设置发送邮件选项 工 一 I。0 设 置发送邮件选项 一一L, 一一一一 D„„一口、, ,,芝芝:二兰!一一 ,。 、 ,7 、 f返回lIResult1 f 退回o 1 , , , 、、、(((((((((((,,――,,_, 、、。――――――――――――――――――一一,’ 永&通服务系绩中语曲邮佴叫关的设计一,实埘 第4章结束语 本文主要论述了语音邮件网关的设计与实现。语音邮件嘲关主要功能是完成 自动语音应答 tVR 模块对邮件的处理请求,包括发送邮件、接收邮件、删除邮 件等,并返回相应的处理信息给IVR。另外,语音邮件网关还要完成浯音文件格 式的转换。 在实现语音邮件网关时,运用了组件化编程技术对imap4、smtp邮件协议 的封装和语音格式转换模块的封装。这样不仅减轻编程的工作量、有利于代码的 可重用性,同时提高了系统的健壮性、可扩展性、安全性。 结合系统的实际情况在UDP协议基础上进行了改进,使其更适用于该系统 的特点。因为系统的通信模块采用基于UDP的通讯协议,是基于帧的通信,相 较于TCP具有一定优势,如速度快,更为直接有效,在可操作性、维护性、容 错性方面的能力强等。但是UDP协议在可靠性和流量控制方面存在不足,因此, 专门设计一套基于UDP的通信协议来实现基于UDP的可靠通信及弱连接特性。 主要是保证收发帧的有序性;保证数据同步;利用发送帧确认消息 即捎带机制 : 超时重拨;流量控制 滑动窗口协议 :通过重发队列 该队列主要保存发送出 去而未被确认的PDU 实现通信的流量控制,防止通信拥塞。 31 中山人学嘶!I‘论立 采枝通服务系统rfl语i?lj件惴关的设计1I蜜现 参考文献 „【美]Dale Rogerson译:杨秀章COM技术内幕一微软组件对象模犁 【2J粤 耀祖刘永初刘鉴澄编著计藓机网络技术与麻用北京:机械』二业出版社(2002 【3】RFC821一SMTP 【4】RFCl939-POP3 Stevens 【5】【荚lW(Richard TCP―IP详解,卷2:实现 OMG(OMG-Unified 【6J ModelingLanguageSpecification(vl5(http:U(omg,org,uml of asa6as『sfor assurance 【7】R(Bache(MMullerburg(Measurestestability quality Software Journal,1990,5 2 :86―92 Engineering Incremental ofconcurrent 【8】P(VKoppol,R(H(Carver,K(-C,raiintegrationtesting IEEETransactionsonSoftware programs Engineering,2002,28 6 :607-623 H(Carver,K(-C(Tai(Use of [9】R ofsequencingconstram括forspecification― basedtesting TransactionsonSoftware concurrentprograms、IEEE 【1 object-oriented 0】K(H(Chang(S,S(Liao(S,B(Seidman,andR(Chapman(Testing formal totestscenario of and programs:,巾mspecification generation(JournalSystems Software,1998(42:141―151 Desharnais,Marc Khedri(All of 【11】Jules Frappier,RidhaMill(Integration TransactiononSoftware SequentialScenarios(#EEEEngineenng,September1998,24 9 Link BehaviourBasedonUseCases FrOhlich,Johannes 【12】Peter ModellingDynamic of Week 1999, ProceedingsQualityEurope,Brussels,November and 1994 Erickson,C 【13】Jorgensen(P Object-orientedintegrationtestingCACM, Sept 37 9 :30―38
/
本文档为【家校通服务系统中语音邮件网关的设计与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索