融合消息业务中实现会谈历史记录的方法及装置的制作方法

文档序号:7721217阅读:98来源:国知局
专利名称:融合消息业务中实现会谈历史记录的方法及装置的制作方法
技术领域
本发明涉及融合的IP消息(CPM, Converged IP Messaging)业务技术,尤指一种 融合消息业务中实现会谈历史记录的方法及装置。
背景技术
目前已有的消息业务中,只有即时消息(M)业务具有会谈历史记录功能,基于 SIMPLE的即时消息通信(OMA SIMPLE M)业务规范中对IM业务的会谈历史记录功能 (Conversation History Function)进行了定义。 IM业务的媒体通信类型比较单一,主要是进行离散媒体的消息通信。IM的消息通 信模式包括寻呼模式、大消息模式和会话模式三种类型。其中, 寻呼模式是指IM客户端通过会话初始协议消息(SIP MESSAGE)请求直接发送和
接收即时消息,适用于像短信或者带确认信息的公告这样单独的简短消息通信; 大消息模式是指使用消息会话中继协议(MSRP, Messaging Session
RelayProtocol)发送单条包含大数据量信息的M,比如携带多媒体内容时。为了使用MSRP
协议来传送数据,所以需要建立SIP会话; 会话模式是指通过会话初始协议邀请(SIP INVITE)请求发起MSRP信道协商,所
有IM通过MSRP信道传送,会话模式不仅限于适合于文本内容的交互式会话,比如一对一会
话、聊天组或者由某个网络主持的会议,单个用户也可以随时加入和离开会话。 为了实现IM业务中的会谈历史记录功能,IM服务器中的会谈历史记录功能需要
同时位于信令平面和媒体平面上,并执行如下处理逻辑 (1)每收到一个需要存储的SIP MESSAGE或者MSRP会话,IM服务器中的会谈历 史记录功能检查是否有足够的资源以存储SIP消息;如果没有,则不记录SIP MESSAGE或 者MSRP会话,并发送系统消息给用户以指示没有足够的空间存储历史记录,结束;如果有 足够资源,则转入(4); (2)每收到一个存储到其所服务的IM用户的MSRP SEND (作为大消息模式消息的 一部分),会谈历史记录功能检查是否有足够的资源以存储大消息(Large消息),如果没 有,则停止记录Large消息并丢弃原来已经收到的Large消息,然后发送系统消息给用户以 指示没有足够的空间来存储历史记录,结束;如果有足够资源,则转入(4);
(3)每收到一个存储到其所服务的IM用户的MSRP SEND(作为IM会话的一部分), 会谈历史记录功能检查是否有足够的资源以存储MSRP SEND消息;如果没有,则
停止记录该消息;如果该MSRP SEND消息是大消息交互中的一个分片,则会谈历 史记录功能应当使用MSRP 413应答拒绝此消息及该大消息的其它分片,并发送系统消息 给用户以指示没有足够的空间来存储历史记录,结束;如果SEND是会话交互的一部分,则 保持已被存储的会话部分,会谈历史记录功能发送BYE请求到主持会议的IM服务器,以退 出会议,并发送系统消息给用户以指示没有足够的空间来存储历史记录,结束。
如果有足够资源,则转入(5);
6
(4)在SIP MESSAGE请求的情形下,存储完整的消息(包含消息头和消息体);
(5)在MSRP会话的情形下,存储历史记录会话建立消息(INVITE和2000K)的所有 相关头域From、 To、 P_Asserted_Identity、 Subject、 Date。 上述处理逻辑中,需要为每个被存储的消息分配一个唯一的历史记录索引(URI 格式,例如1234@mailserver, example, com);对于大消息模式,存储完整的MSRP SEND请求 (包含所有头域,IM服务器接收消息时的时间戳和完整的消息内容);对于会话模式,存储 每个完整的MSRP SEND请求(包含所有头域,IM服务器接收消息时的时间戳和完整的消息 内容),以及SIP BYE请求的相关头域。 而且,现有在对IM业务中的会谈历史记录中,历史记录存储在IM服务器存储实体 中的IM用户账簿;而元数据存储在IM XDMS中。 通过上述处理逻辑,IM服务器实现了对会谈历史的记录功能,将会谈过程中交互
的即时消息,无论是寻呼模式、大消息模式还是会话模式,都完整地记录了下来。 IM业务的通信媒体类型比较单一,会谈中交互的只是以即时消息为载体的离散型
媒体(如文字、图片、音频/视频片段等),涉及到的信令消息类型以及会话状态信息类型
的种类也较少,因此,IM服务器在执行会谈历史记录功能时,基本上都是采用将完整的一条
SIP MESSAGE消息或者一条完整的MSRPSEND消息进行保存,或者将SIP INVITE/SIP 2000K
等消息的相关头域进行存储等方法。 IM业务中是将会谈历史记录的实际内容存储在IM服务器中,而将会谈历史记录 相关的元数据另外存储在IM XML文档管理服务器(X匿S)中,这种将元数据与会谈历史记 录内容本身分开存储的方式,使得IM客户端在获取会谈历史记录功能时还需要首先使用 XCAP协议访问IM XDMS获取到相应的信息,再根据这些信息通过SIP协议访问IM服务器获 取会谈历史记录的实际内容,使得会谈历史记录的管理、操作变得复杂化了 。
随着网络技术的演进,在通信网络上提供的消息通信业务呈现出一种融合的趋 势,为此,OMA组织提供了一种融合的IP消息使能者(CPM使能者,Converged IP Messaging Enabler) ,CPM使能者可以跨越不同的接入网,架构在统一的IP核心网之上,以支持终端用 户的一对一、一对多以及与应用之间的各种媒体类型(如文本、图片、音频/视频片段、二进 制文件、音频/视频流)间的通信。 在融合的消息通信环境中,CPM使能者以CPM会谈为单位向用户提供CPM业务,使 之进行信息交互,用户在通信过程中希望网络侧记录和存储自身所参与的CPM会谈的历史 交互信息,从而实现在需要时,能够通过向网络侧服务器发送请求访问到自身曾参与过的 CPM会谈的历史交互记录信息,以真实地重现用户曾参与的会谈的全过程;并且,还能够对 网络侧服务器上存储的属于该用户自身的会谈历史记录信息进行管理。
本文中,为CPM用户提供存储CPM会谈历史记录的功能的服务器称为CPM消息存 储服务器,而CPM消息存储客户端通过访问CPM消息存储服务器对属于该CPM用户的CPM 会谈历史记录及相关的内容进行访问和管理,并通过对从网络侧获取的会谈历史记录信息 进行解析,向CPM用户展示会谈的视图和内容。 CPM会谈描述了通信各方之间利用CPM使能者功能实体进行信息交互的行为,CPM 会谈由任意数目的会话外交互的CPM消息、CPM文件传输和CPM会话组成。其中,CPM消息 是可以包含多个离散即不连续媒体(如文本、图片、音频片段、视频片段等)的信息体;CPM
7文件传输是参与者之间进行一个或多个携带有多媒体内容的文件的传输过程,接收方用户 必须在接收被传输文件的任何数据之前显示地确认接收过程;CPM会话是两个或多个参与 者之间持续一段时间的逻辑连接,可用于参与方实时地交换连续性媒体,也可用于交换离 散媒体。CPM消息交互、CPM文件传输可以在CPM会话内进行、也可以在CPM会话外进行。一 般认为,每个CPM会谈在特定时间内只包含一个CPM会话。用户可以并行参与多个CPM会 谈。 CPM会谈历史记录是CPM会谈的存储表示。被授权责任人可以获取并存储他们在 CPM会谈过程中交换的信息,并将这些信息作为CPM会谈历史记录存储到CPM业务提供商提 供的CPM消息存储服务器中。此时,CPM会话外交互的一条CPM消息被存储为一条CPM消 息记录,CPM会话外进行的CPM文件传输被存储为一份CPM文件传输历史记录,而一个CPM 会话则被存储为一份CPM会话历史记录(包括会话内CPM消息、会话内CPM文件传输以及 会话内交互的连续媒体片段等数据)。因此,从存储表示意义上看,CPM会谈历史记录可以 描述为CPM消息记录、CPM文件传输历史记录和CPM会话历史记录的集合。
在CPM业务中,由于提供的是融合的消息业务,涉及的通信媒体类型更为丰富,除 了离散型媒体之外,还能够提供基于IP的语音流和视频流通信即CPM会话。CPM会话又 可以分为I-ICPM会话和CPM群组会话,在群组会话中,由于参与者可以被移除、邀请、主动 加入、主动离开等多种会话状态变化事件的发生,涉及到包括SIP INVITE、SIP REFER、 SIP 2000K、 SIP BYE等多种SIP信令的交互,且这些SIP消息在不同的会话上下文环境下代表 不同的语义,如果还采用现有IM业务中的会谈历史记录功能,仅仅将这些交互信息完整地 保存下来,是无法真实地记录整个会话的状态变化信息的。 比如,对于消息记录,如果仅采用IM业务中的会谈历史记录功能,只是完整地存 储一条SIP MESSAGE或者MSRP SEND,那么,CPM消息存储客户端以及CPM消息存储服务器 在解析这些会谈历史记录内容时,还需要理解这些通信协议消息的格式等细节,也就是说, 直接将现有IM业务中的会谈历史记录功能应用到CPM业务中,通用性、可扩展性差。
IM的会谈历史记录采用的处理逻辑是,每当IM服务器接收到一条即时消息就开 始执行记录过程,并没有考虑到如果这条消息发送失败(接收方并没有成功接收)的情况 下,会谈历史记录应该如何更新(例如,删除这条发送失败的消息记录或者是添加发送失 败的记录信息)。总之,IM业务的会谈历史记录功能是一个比较简单的功能原型,并没有考 虑完整的处理逻辑;而在融合的消息通信业务中,为用户提供完整的会谈历史记录是作为 CPM业务的一个非常重要的特色,要求会谈历史记录功能具有更完善的处理逻辑。比如,在 CPM业务中,会谈历史记录功能以及相关的元数据可以统一存储在消息存储服务器上,消息 存储客户端和CPM参与功能均通过IMAP4协议访问消息存储服务器,所以,传统的IM业务 的会谈历史记录功能的处理逻辑并不能直接重用到CPM业务中,基于CPM业务提供融合消 息业务的本质,以及它特有的协议架构特点,需要为CPM业务的会谈历史记录功能定义新 的、适合其特点的处理逻辑。

发明内容
有鉴于此,本发明的主要目的在于提供一种融合消息业务中实现会谈历史记录的 方法及装置,实现融合消息业务环境中消息、文件传输和会话交互历史的记录功能。
为达到上述目的,本发明的技术方案是这样实现的
—种融合消息业务中实现会谈历史记录的方法,包括 融合的IP消息CPM参与功能接收到一条消息,并检测出用户已开启会谈历史记录 功能,根据接收到的消息的协议类型,解析接收到的消息并按照解析结果执行会谈历史记 录功能。 所述接收到的消息的协议类型为SIP协议消息,所述解析接收到的消息并按照解 析结果执行会谈历史记录功能包括 调用SIP协议栈对接收到的SIP协议消息进行解析,当解析出为SIP INVITE,进 行SIP INVITE消息处理;当解析出为SIP BYE,进行SIP BYE消息处理;当解析出为SIP REFER,进行SIP REFER消息处理;当解析出为SIP MESSAGE,进行SIP MESSAGE消息处理。
所述接收到的消息的协议类型为MSRP协议消息,所述解析接收到的消息并按照 解析结果执行会谈历史记录功能包括 调用MSRP协议栈对接收到的MSRP协议消息进行解析,当解析出为MSRPSEND,进行 MSRP SEND消息处理。 如果接收到连续性媒体流数据包,且检测出开启CPM会话记录功能,该方法还包 括 所述CPM参与功能记录参与会话各方的连续性媒体流,并启用媒体混合功能,将 参与CPM会话各方的媒体流进行混合,保存混合后的媒体流数据; 当CPM会话结束后,所述CPM参与功能提取本地缓存的混合后的媒体流数据包,按 照会话历史记录存储格式的需求进行编码,然后将该媒体流对象编码封装进CPM会话历史 记录对象中。 所述SIP INVITE消息处理包括 当所述CPM参与功能将该SIP INVITE消息缓存在本地,等待接收到接收方返回的 成功或失败的应答消息并缓存; 所述CPM参与功能检查该SIP INVITE消息的Acc印t-Contact头域和Contact头 域中携带的CPM特征标签,对CPM特征标签指示的为CPM大消息传输而建立的临时SIP会 话建立请求消息,或为CPM文件传输建立的临时SIP会话建立请求消息,或与CPM会话事件 相关的SIP会话建立请求消息分别进行相应处理。 对所述为CPM大消息传输而建立的临时SIP会话建立请求消息的处理包括
当判断出所述是为CPM会话内的大消息传输而建立的临时SIP会话建立请求消 息,则,通过计算和比对Dialog-ID来寻找该CPM大消息所属的CPM会话,找到对应的CPM 会话的会话历史记录对象,从INVITE消息中提取相关信息进行记录;根据INVITE请求的相 关成功或失败的应答消息,在CPM会话历史记录对象中进行记录;在指定的MSRP媒体通道 的端口等待接收MSRP SEND消息; 当判断出所述是为CPM会话外的大消息传输而建立的临时SIP会话建立请求消 息,则, 在根据应答消息判断出该SIP临时会话建立成功后,所述CPM参与功能新建一个 CPM消息记录对象,并按照CPM消息统一存储格式的规定,从该SIPINVITE请求消息中提取 出相关的信息进行记录;在指定的MSRP媒体通道的端口等待接收MSRP SEND消息。
对所述为CPM文件传输建立的临时SIP会话建立请求消息的处理包括
在判断出是为CPM会话内的文件传输而建立的临时SIP会话建立请求消息,则,通 过计算和比对Dialog-ID来寻找该CPM文件所属的CPM会话,找到对应的CPM会话的会话 历史记录对象,从INVITE消息中提取相关信息进行记录;根据INVITE请求的相关成功或失 败的应答消息,在CPM会话历史记录对象中进行记录;在指定的MSRP媒体通道的端口等待 接收MSRP SEND消息; 当判断出是为CPM会话外的文件传输而建立的临时SIP会话建立请求消息,且根 据应答消息判断出该SIP临时会话建立成功,则, 所述CPM参与功能新建一个CPM文件传输历史记录对象,并按照CPM文件传输历
史记录的统一存储格式的规定,从该SIP INVITE请求消息中提取出相关的信息进行记录;
在指定的MSRP媒体通道的端口等待接收MSRP SEND消息。 对所述与CPM会话事件相关的SIP会话建立请求消息的处理包括 当判断出与CPM会话事件相关的SIP会话建立请求消息是为建立一个新的CPM会
话而发起的会话建立请求消息,则,所述CPM参与功能在本地存储空间中创建一个新的CPM
会话历史记录对象;按照CPM会话历史记录的存储格式的规定,从该SIP INVITE消息中提
取出相关的信息并记录;根据对该INVITE消息返回的成功或失败的应答消息,对该CPM会
话创建事件的结果进行记录,也作为该CPM会话历史记录对象的一部分; 当判断出与CPM会话事件相关的SIP会话建立请求消息是某个CPM用户为申请加
入一个正在进行的CPM会话而发起的会话加入请求消息,则,通过Request-URI中指示的
CPM会话标识符找到相应的CPM会话历史记录对象;按照会话历史记录存储格式的规定,从
该SIP INVITE消息中提取出相关的信息并记录;根据对该INVITE消息返回的成功或失败
的应答消息,对该请求加入CPM会话事件的结果进行记录,也作为该CPM会话历史记录对象
的一部分。 该方法进一步包括检查SIP INVITE请求消息的Request-URI, 如果Request-URI的值是一个CPM会话标识,则所述SIP INVITE请求消息是某个
CPM用户为申请加入一个正在进行的CPM会话而发起的会话加入请求消息; 如果Request-URI的值是CPM控制功能的地址,且To头域中的tag参数为空,则
所述SIP INVITE请求消息是为正在进行的Ad-hoc群组CPM会话而发起的会话建立请求消
息; 如果Request-URI的值是CPM用户的地址,且To头域中的tag参数为空,则所述 SIP INVITE请求消息是为建立新的I-ICPM会话而发起的会话建立请求消息;
如果Request-URI的值是CPM群组的地址,且To头域中的tag参数为空,则所述 SIP INVITE请求消息是为建立新的预定义群组CPM会话而发起的会话建立请求消息。
所述SIP BYE消息处理包括 所述CPM参与功能将所述SIP BYE消息缓存在本地,等待接收到接收方返回的成 功或失败的应答消息并缓存后,根据应答消息判断出该SIP BYE消息发送成功时,解析该 SIP BYE消息, 如果该SIP BYE消息为CPM用户离开会话,或整个CPM会话结束,或为传输CPM大 消息的临时SIP会话结束且为会话内大消息传输过程结束,或为传输CPM文件的临时SIP
10会话结束且为会话内大消息传输过程结束,则找到相应的CPM会话历史记录对象; 如果该SIP BYE消息为传输CPM大消息的临时SIP会话结束且为会话外大消息传
输过程结束,则找到相应的CPM消息记录对象; 如果该SIP BYE消息为传输CPM文件的临时SIP会话结束且为会话外文件传输过 程结束,则找到相应的CPM文件传输历史记录对象; 在上述获得记录对象后,均根据判断的结果更新相关的CPM会话历史记录对象、 CPM消息记录对象或CPM文件传输历史记录对象。
所述SIP REFER消息处理包括 所述CPM参与功能将所述SIP REFER消息缓存在本地,等待接收到接收方返回的 成功或失败的应答消息并缓存后,根据应答消息判断出该SIP REFER消息发送成功,通过 Request-URI中携带的CPM会话标识符的值,获取该SIPREFER消息Refer-To头域中method 参数的值 如果method参数的值是BYE,则在CPM会话历史记录对象中写入移除用户的会话 状态事件,并从该SIP REFER消息中提取相关的信息进行记录; 如果method参数的值是INVITE,则在CPM会话历史记录对象中写入邀请用户加入 的会话状态事件,并从该SIP REFER消息中提取相关的信息进行记录。
所述SIP MESSAGE消息处理包括 所述CPM参与功能将所述SIP MESSAGE消息缓存在本地,等待接收到接收方返回 的成功或失败的应答消息并缓存后,根据应答消息判断出该SIPMESSAGE消息发送成功;解 析所述SIP MESSAGE消息, 如果SIP MESSAGE消息的To头域中携带有tag参数,则判断出该SIPMESSAGE消 息是CPM会话内消息,则,找到该SIP MESSAGE消息匹配的CPM会话,从该SIP MESSAGE请 求消息中提取相关的信息写入到对应的CPM会话历史记录对象中;并根据对该MESSAGE消 息返回的成功或失败的应答消息,对该CPM消息发送的结果进行记录,也作为该CPM会话历 史记录对象的一部分; 如果SIP MESSAGE消息的To头域中tag参数为空,则判断出是一个CPM会话外消
息,则,根据对该SIP MESSAGE消息的应答消息判断出成功发送后,所述CPM参与功能将新
建一个CPM消息记录对象,并按照CPM消息的存储格式的规定,从该SIP MESSAGE请求消息
中提取出相关的信息进行记录。 所述MSRP SEND消息处理包括 所述当CPM参与功能将所述MSRP SEND消息缓存在本地,等待接收到接收方返回 的成功或失败的应答消息并缓存后,如果收到成功应答消息, 解析所述MSRP SEND消息,如果所述MSRP SEND消息没有进行分片,通过MSRP SEND消息的接收端口号找到对应的会谈历史记录对象,并根据所述MSRP SEND消息对应的 CPM消息记录过程、或CPM文件传输记录过程、或CPM会话历史记录过程进行相应处理;
如果所述MSRP SEND消息是一个分片,进一步判断是否该分片是最后一个分片,且 是最后一个分片,将同属于一个大消息的各个MSRP SEND消息分片组装起来,形成一条完整 的MSRP SEND大消息;通过MSRP SEND消息的接收端口号找到对应的会谈历史记录对象,并 根据所述MSRP SEND消息对应的CPM消息记录过程、或CPM文件传输记录过程、或CPM会话历史记录过程进行相应处理。 所述对应CPM消息记录过程的处理为取得所述MSRP SEND消息中的内容,作为会 话外传输的CPM大消息的内容,封装到对应的CPM消息记录对象中,形成最终的CPM消息记 录对象; 所述对应CPM文件传输记录过程的处理为取得所述MSRP SEND消息中的内容,作 为会话外传输的CPM文件的内容,封装到对应的CPM文件传输历史记录对象中,形成最终的 CPM文件传输历史记录对象; 所述对应CPM会话历史记录过程的处理为取得所述MSRP SEND消息中的内容,作
为CPM会话内传输的大消息或文件,封装到对应的CPM会话历史记录对象中,并进行更新。 所述CPM参与功能作为SIP B2BUA将自身插入在信令和媒体通道上。 —种融合消息业务中实现会谈历史记录的装置,至少包括接收模块、判断模块、记
录模块,其中, 接收模块,用于接收消息并输出记录模块,通知判断模块; 判断模块,用于收到来自接收模块的通知,检测用户是否开启会谈历史记录功能, 在开启时,向记录模块发送记录通知; 记录模块,用于接收到记录通知,根据接收到的消息的协议类型,解析接收到的消 息并按照解析结果执行会谈历史记录功能。 所述接收到的消息的协议类型为SIP协议消息时,所述记录模块具体用于,
调用SIP协议栈对接收到的SIP协议消息进行解析,当解析出为SIP INVITE,进 行SIP INVITE消息处理;当解析出为SIP BYE,进行SIP BYE消息处理;当解析出为SIP REFER,进行SIP REFER消息处理;当解析出为SIP MESSAGE,进行SIP MESSAGE消息处理。
所述接收到的消息的协议类型为MSRP协议消息时,所述记录模块具体用于,
调用MSRP协议栈对接收到的MSRP协议消息进行解析,当解析出为MSRPSEND,进行 MSRP SEND消息处理。 所述接收到的消息为连续性媒体流数据包,且所述判断模块检测出开启CPM会话 记录功能,该装置还包括处理模块,用于, 记录参与会话各方的连续性媒体流,并启用媒体混合功能,将参与CPM会话各方 的媒体流进行混合,保存混合后的媒体流数据; 当CPM会话结束后,提取本地缓存的混合后的媒体流数据包,按照会话历史记录 存储格式的需求进行编码,然后将该媒体流对象编码封装进CPM会话历史记录对象中。
所述装置设置在CPM会谈历史记录功能中。 从上述本发明提供的技术方案可以看出,包括CPM参与功能接收到一条消息,并 检测出用户已开启会谈历史记录功能,根据接收到的消息的协议类型,解析接收到的消息 并按照解析结果执行会谈历史记录功能。通过本发明CPM参与功能的会谈历史记录功能的 处理逻辑,实现了融合消息业务环境中消息、文件传输和会话交互历史的记录功能。


图1为CPM会谈与CPM消息、CPM文件传输、CPM会话的关系,以及CPM会谈历史记 录与CPM消息记录、CPM文件传输历史记录、CPM会话历史记录之间的关系的示意 图2为本发明实现会谈历史记录的方法的流程示意图; 图3为对SIP INVITE消息进行处理的流程图; 图4为图3中步骤3031的实现流程图; 图5为图3中步骤3032的实现流程图; 图6为图3中步骤3033的实现流程图; 图7为对SIP BYE消息进行处理的流程图; 图8为对SIP REFER消息进行处理的流程图; 图9为对SIP MESSAGE消息进行处理的流程图; 图10为对MSRP SEND消息进行处理的流程图; 图11为本发明实现会谈历史记录的装置的组成示意图。
具体实施例方式
图1为CPM会谈与CPM消息、CPM文件传输、CPM会话的关系,以及CPM会谈历史记 录与CPM消息记录、CPM文件传输历史记录、CPM会话历史记录之间的关系的示意图,如图1 所示 CPM会谈历史记录功能,实际上就是对CPM会谈过程中交互的CPM消息、CPM文 件传输以及进行的CPM会话进行记录。为了实现会谈历史记录功能,需要在网络侧有一个 CPM功能实体能够在通信过程中同时位于信令平面和媒体平面上,作为背对背的用户代理 (B2BUA, Back-to-Back User Agent)接收和发送通信过程中所有的信令消息和媒体消息, 通过解析从中提取出需要记录的信息按照一定的格式进行记录将CPM会话外交互的一条 CPM消息记录为一份CPM消息记录对象、将CPM会话外传输的一个CPM文件记录为一份CPM 文件传输历史记录对象,将一次CPM会话记录为一份CPM会话历史记录对象。CPM参与功能 服务器完成上述的会谈历史记录功能,并将这些记录对象提交给CPM消息存储服务器,进 行永久存储。 CPM消息记录对象,存储的是在CPM会话外交互的一条CPM消息。CPM消息有两种 类型寻呼模式(Page-Mode)和大消息模式(Large Message Mode)。其中,寻呼模式CPM 消息是采用[RFC 3428]中定义的SIP MESSAGE方法通过SIP信令平面来传送,也就是说, 寻呼模式的CPM消息的大小有限制,即不能超过1300字节,如果超过,则消息的内容就不会 放入SIP MESSAGE消息体中,而是使用大消息模式的CPM消息来发送。大消息模式CPM消 息是通过MSRP协议([RFC 4975])来发送单条包含大数据量信息的CPM消息(比如携带多 媒体内容时),如果需要,还可以进行分段传送,所以,在发送大消息模式的CPM消息之前, 首先要在通信的各方之间通过SIP INVITE请求建立临时SIP会话以协商建立MSRP媒体通 道,当临时SIP会话建立成功之后,才能够通过MSRP SEND请求发送实际的消息内容。在该 大消息传送结束之后,该临时SIP会话将被立即拆除。 CPM文件传输历史记录对象,存储的是在CPM会话外传输的一个可能携带多媒体 内容的CPM文件,比如一个文本文档、一个图片、一个音频文件、视频文件或一个应用程序 等等。CPM文件的传输过程与大消息模式的CPM消息的发送过程类似,也是首先在发送方 与文件的接收方之间通过SIP INVITE请求建立临时SIP会话以协商建立MSRP媒体通道。 接收方需要显示地接受或者拒绝该CPM文件的传输请求。如果临时SIP会话建立成功,则使用MSRP SEND请求消息发送CPM文件的实际内容(根据需要,还可以分段传送)。在CPM 文件传送结束之后,该临时SIP会话将被立即拆除。 CPM会话历史记录对象,存储的是一次CPM会话过程中的交互历史信息,应该包括 四类信息CPM会话状态变化信息、在CPM会话中交互的CPM消息(以及可能包含的媒体对 象)、在CPM会话中传输的CPM文件,以及在该CPM会话中交互的连续媒体流对象(如音频 /视频通话片段)。其中, CPM会话状态信息用于描述整个CPM会话从创建到结束的整个发展变化过程,包 括以下六类会话状态变化事件信息CPM会话创建事件相关信息(SIP INVITE请求消息及 相关应答消息)、CPM会话参与者离开会话事件相关信息(SIP BYE请求及相关应答消息)、 CPM会话参与者被从CPM会话中移除事件信息(SIP REFER请求及相关应答消息)、一个CPM 用户加入到CPM会话事件信息(SIP INVITE请求及相关应答消息)、邀请其他CPM会话参与 者加入该CPM会话事件信息(SIP REFER请求及相关应答消息)以及CPM会话结束事件信 息(SIP BYE请求及相关应答消息)。 可见,为了形成一份CPM会谈历史记录,CPM会谈历史记录功能需要对来自信令平 面、媒体平面的多种不同类型的消息进行处理,并根据会谈上下文环境,理解这些消息所代 表的语义,从而对会谈的过程进行记录。由于处理逻辑十分复杂,实现会谈历史记录功能 仅仅通过对现有机制的重用无法很好地实现,因此,需要在现有机制的基础上,提供一种新 的、有效的机制来实现会谈历史记录功能。 在融合的消息业务通信环境中,为了对用户参与会谈的所有通信交互过程进行记 录,本发明中,设置CPM参与功能同时位于CPM会谈的信令通道和媒体通道上,所有与CPM 会谈相关的CPM消息或CPM会话信息全部都经过CPM参与功能,CPM参与功能对这些消息 进行检查,执行相应的逻辑功能,并针对不同消息在不同的上下文环境中代表的不同语义, 完成相应的CPM消息、CPM文件传输历史和CPM会话历史的记录功能。 与CPM会谈历史记录相关的协议消息主要包括SIP INVITE请求及其相关的应 答消息、SIP REFER请求及其相关的应答消息、SIP BYE请求及其相关的应答消息、SIP MESSAGE请求及其相关的应答消息、MSRP SEND及其相关的应答消息。这些消息在不同的上 下文环境中,通过携带不同的头域内容来完成不同的功能,比如SIP INVITE消息可以是发 起一个CPM会话,也可以是为发送大消息模式的CPM消息而建立MSRP通道,还可以是为某 个CPM用户申请加入一个正在进行的CPM会话发起会话建立过程,所以本发明中,通过针对 不同的消息所携带的相关头域的判断来获知该消息的实际语义,并据此完成相关的消息记 录或会话历史记录功能。 为了执行会谈历史记录功能,CPM参与功能还将自身同时插入到CPM会谈的信令 和媒体通道上并执行B2BUA功能。对于信令平面,每当接收到一条信令消息,CPM参与功能 首先执行应有的CPM业务处理逻辑之后,判断用户是否开启了会谈历史记录功能,如果用 户开启了会谈记录功能,则CPM参与功能需要根据会谈上下文,判断收到这条消息在会谈 过程中代表的实际语义,并对相关的消息记录对象或会话历史记录对象进行更新。如果用 户没有开启会谈历史记录功能,则CPM参与功能根据CPM业务的处理逻辑转发这条信令消 息。对于用户平面,一旦用户开启了会谈记录功能,CPM参与功能就需要对相关媒体通道上 传输的媒体流进行缓存记录,并在会话结束之后,将缓存的媒体流封装进会话历史记录对象中,形成一份完整的会话历史记录对象。 下面结合实施例对本发明的方案进行详细描述。 图2为本发明实现会谈历史记录的方法的流程示意图,如图2所示,包括 步骤200 201 :CPM参与功能接收到一条消息,检测用户是否开启会谈历史记录
功能,如果已开启,开始执行会谈历史记录功能,进入步骤202 ;否则进入步骤207。 步骤202 :检查接收到的消息的协议类型,如果是SIP协议消息,进入步骤203 ;如
果是MSRP协议消息,进入步骤205。 步骤203步骤2044 :调用SIP协议栈进行解析,当解析出为SIP INVITE时,进入 步骤2041对其进行具体分析,结束;当解析出为SIP BYE时,进入步骤2042对其进行具体 分析,结束;当解析出为SIP REFER时,进入步骤2043对其进行具体分析,结束;当解析出为 SIP MESSAGE时,进入步骤2044对其进行具体分析,结束。 步骤205 步骤206 :调用MSRP协议栈进行解析,当解析出为MSRP SEND时,对其
进行具体分析,结束。 步骤207 :转发接收到的消息。 如果开启CPM会谈历史记录功能,并接收到连续性媒体流数据包,则CPM参与功能 记录参与会话各方的连续性媒体流,并启用媒体混合功能,将参与CPM会话各方的媒体流 进行混合,保存混合后的媒体流数据。当CPM会话结束后,CPM参与功能提取本地缓存的混 合后的媒体流数据包,按照会话历史记录存储格式的需求进行编码,然后将该媒体流对象 编码封装进CPM会话历史记录对象中。 由于融合消息业务通信环境中的会谈历史记录功能的处理逻辑十分复杂,且现有 的消息业务中并没有成熟的会谈历史机制可以借鉴,本发明技术方案弥补了对融合消息业 务通信环境中的会谈历史记录功能的处理逻辑这一空白。 针对本发明方法还提供一种融合消息业务中实现会谈历史记录的装置,如图11 所示,可设置在CPM会谈历史记录功能中,至少包括接收模块、判断模块、记录模块,其中,
接收模块,用于接收消息并输出记录模块,通知判断模块; 判断模块,用于收到来自接收模块的通知,检测用户是否开启会谈历史记录功能, 在开启时,向记录模块发送记录通知; 记录模块,用于接收到记录通知,根据接收到的消息的协议类型,解析接收到的消 息并按照解析结果执行会谈历史记录功能。 当接收到的消息的协议类型为SIP协议消息时,所述记录模块具体用于,调用SIP 协议栈对接收到的SIP协议消息进行解析,当解析出为SIP INVITE,进行SIP INVITE消息 处理;当解析出为SIP BYE,进行SIP BYE消息处理;当解析出为SIP REFER,进行SIP REFER 消息处理;当解析出为SIP MESSAGE,进行SIPMESSAGE消息处理。 当所述接收到的消息的协议类型为MSRP协议消息时,所述记录模块具体用于,调 用MSRP协议栈对接收到的MSRP协议消息进行解析,当解析出为MSRPSEND,进行MSRP SEND 消息处理。 当所述接收到的消息为连续性媒体流数据包,且所述判断模块检测出开启CPM会 话记录功能,该装置还包括处理模块,该处理模块用于,记录参与会话各方的连续性媒体 流,并启用媒体混合功能,将参与CPM会话各方的媒体流进行混合,保存混合后的媒体流数结束后,提取本地缓存的混合后的媒体流数据包,按照会话历史记录存储格
式的需求进行编码,然后将该媒体流对象编码封装进CPM会话历史记录对象中。 下面将分别针对上述五种在CPM会话中将会出现的与会话状态相关的请求消息
进行具体分析,重点关注CPM参与功能的历史记录功能相关的处理逻辑,也就是说默认CPM
参与功能已经验证这些消息的合法性,并完成了相关的CPM业务处理逻辑之后,并在CPM
用户开启了会谈历史记录功能的前提下,如何完成CPM会话历史的记录功能相关的处理逻辑。 图3为对SIP INVITE进行处理的流程图,如图3所示,包括 步骤300 步骤301 :当CPM参与功能接收到一条SIP INVITE消息时,首先将该
SIP INVITE消息缓存在本地,等待接收到接收方返回的成功或失败的应答消息并缓存后,
开始执行会谈历史信息记录功能。 步骤302 步骤3033 :CPM参与功能检查Acc印t-Contact头域和Contact头域中 携带的CPM特征标签,如果CPM特征标签指示这是一个为CPM大消息传输而建立的临时SIP 会话建立请求消息,则执行步骤3031 ;如果CPM特征标签指示这是一个为CPM文件传输而 建立临时SIP会话的建立请求消息,则执行步骤3032 ;如果CPM特征标签指示这是一个与 CPM会话事件相关的SIP会话建立请求消息,则执行步骤3033。
图4为图3中步骤3031的实现流程图,如图4所示,包括 步骤400 :判断是为CPM会话内的大消息传输而建立临时SIP会话的建立请求消 息,还是一个CPM会话外的大消息传输而建立临时SIP会话的建立请求消息,如果是CPM会 话内的大消息,则进入步骤404,否则进入步骤401 。 本步骤中,判断的方法是检查SIP INVITE消息的To头域是否携带tag参数,如 果携带有tag参数,则表明为CPM会话内的大消息传输而建立临时SIP会话的建立请求消 息;如果没有携带tag参数,则表明为CPM会话外的大消息传输而建立临时SIP会话的建立 请求消息。 步骤401 :根据应答消息判断该SIP临时会话是否建立成功,如果成功,进入步骤 402 ;否则进入步骤403。 本步骤中,根据接收到的该INVITE消息相应的应答消息(SIP 2000K或失败应答) 进行判断,如果接收到的是SIP 2000K应答消息,则表明该SIP会话建立成功,如果接收到 的是失败应答,则表明该SIP会话建立失败。 步骤402 :CPM参与功能新建一个CPM消息记录对象,并按照CPM消息的统一存储 格式的规定,从该SIP INVITE请求消息中提取出相关的信息(From头域、To头域等)进行 记录。之后进入步骤407。 步骤403 :不进行任何记录。CPM参与功能抛弃该INVITE消息,不做记录,并返回
失败应答消息。结束。 步骤404 406 :通过计算和比对Dialog-ID来寻找该CPM大消息所属的CPM会 话,找到对应的CPM会话的会话历史记录对象,从INVITE消息中提取相关信息进行记录;根 据INVITE请求的相关成功或失败的应答消息,在CPM会话历史记录对象中进行记录。之后 进入步骤407。 本步骤具体包括按照[RFC 3261]中的相关描述计算Dialog-ID (即取得
16Call-ID头域、From头域中tag参数、To头域中tag参数的值),并和CPM参与功能保存的 各个正在进行的CPM会话状态参数中的Dialog-ID进行比对,找到这条CPM会话内的大消 息所属的CPM会话;找到匹配的CPM会话对应的CPM会话历史记录对象,并从该SIP INVITE 请求消息中提取相关的信息写入到对应的CPM会话历史记录对象中;根据对该INVITE消息 返回的成功或失败的应答消息,对该SIP会话建立成功或失败的结果进行记录,也作为该 CPM会话历史记录对象的一部分。 步骤407 :在指定的MSRP媒体通道的端口等待接收MSRP SEND消息。
本步骤中,为了进行会谈历史记录,CPM参与功能需要作为B2BUA将自己插入到信 令和媒体通道上,即CPM参与功能将分别代表接收方与发送方协商媒体通道端口,以实现 将自己插入到媒体通道上。故CPM参与功能将在协商好的MSRP通信端口上等待接收MSRP SEND消息,以接收CPM大消息。 图5为图3中步骤3032的实现流程图,如图5所示,包括 步骤500 :判断是为CPM会话内的文件传输而建立临时SIP会话的建立请求消息, 还是为一个CPM会话外的文件传输而建立临时SIP会话的建立请求消息,如果是CPM会话 内的文件传输,则进入步骤504,否则进入步骤501 。 本步骤中,判断的方法是检查SIP INVITE消息的To头域是否携带tag参数,如 果携带有tag参数,则表明为CPM会话内的文件传输而建立临时SIP会话的建立请求消息; 如果没有携带tag参数,则表明为CPM会话外的文件传输而建立临时SIP会话的建立请求 消息。 步骤501 :根据应答消息判断该SIP临时会话是否建立成功,如果成功,进入步骤 502 ;否则进入步骤503。 本步骤中,根据接收到的该INVITE消息相应的应答消息(SIP 2000K或失败应答) 进行判断,如果接收到的是SIP 2000K应答消息,则表明该SIP会话建立成功,如果接收到 的是失败应答,则表明该SIP会话建立失败。 步骤502 :CPM参与功能新建一个CPM文件传输历史记录对象,并按照CPM文件传 输历史记录的统一存储格式的规定,从该SIP INVITE请求消息中提取出相关的信息(From 头域、To头域等)进行记录。之后进入步骤507。 步骤503 :不进行任何记录。CPM参与功能抛弃该INVITE消息,不做记录,并返回
失败应答消息。结束。 步骤504 步骤506 :通过计算和比对Dialog-ID来寻找该CPM文件传输所属的 CPM会话,找到对应的CPM会话的会话历史记录对象,从INVITE消息中提取相关信息进行 记录;根据INVITE请求的相关成功或失败的应答消息,在CPM会话历史记录对象中进行记 录。之后进入步骤507。 本步骤具体包括按照[RFC 3261]中的相关描述计算Dialog-ID (即取得 Call-ID头域、From头域中tag参数、To头域中tag参数的值),并和CPM参与功能保存的 各个正在进行的CPM会话状态参数中的Dialog-ID进行比对,找到这条CPM文件传输所属 的CPM会话;找到匹配的CPM会话对应的CPM会话历史记录对象,并从该SIP INVITE请求 消息中提取相关的信息写入到对应的CPM会话历史记录对象中;根据对该INVITE消息返回 的成功或失败的应答消息,对该SIP会话建立成功或失败的结果进行记录,也作为该CPM会话历史记录对象的一部分。 步骤507 :在指定的MSRP媒体通道的端口等待接收MSRP SEND消息。
本步骤中,为了进行会谈历史记录,CPM参与功能需要作为B2BUA将自己插入到信令和媒体通道上,即CPM参与功能将分别代表接收方与发送方协商媒体通道端口,以实现将自己插入到媒体通道上。故CPM参与功能将在协商好的MSRP通信端口上等待接收MSRPSEND消息,以接收CPM文件。 图6为图3中步骤3033的实现流程图,如图4所示,包括 步骤600 :判断与CPM会话事件相关的SIP会话建立请求消息是一个为建立一个新的CPM会话而发起的会话建立请求消息,还是一个某个CPM用户为申请加入一个正在进行的CPM会话而发起的会话加入请求消息,如果是前者,则进入步骤605 ;如果是后者,进入步骤601。 本步骤中,判断的方法是检查SIP INVITE消息的To头域是否携带tag参数,如果携带有tag参数,则表明与CPM会话事件相关的SIP会话建立请求消息,是一个为建立一个新的CPM会话而发起的会话建立请求消息;如果没有携带tag参数(即为空),则表明与CPM会话事件相关的SIP会话建立请求消息,是一个某个CPM用户为申请加入一个正在进行的CPM会话而发起的会话加入请求消息。 进一步地,检查SIP INVITE请求消息的Request-URI, 如果Request-URI的值是一个CPM会话标识,则表明SIP INVITE请求消息是某个CPM用户为申请加入一个正在进行的CPM会话而发起的会话加入请求消息;
如果Request-URI的值是CPM控制功能的地址,且To头域中的tag参数为空,则表明该SIP INVITE请求消息是为正在进行的Ad-hoc群组CPM会话而发起的会话建立请求消息; 如果Request-URI的值是CPM用户的地址,且To头域中的tag参数为空,则表明该SIP INVITE请求消息是为建立新的I-ICPM会话而发起的会话建立请求消息;
如果Request-URI的值是CPM群组的地址,且To头域中的tag参数为空,则表明该SIP INVITE请求消息是为建立新的预定义群组CPM会话而发起的会话建立请求消息。
步骤601 步骤604 :是某个CPM用户为申请加入一个正在进行的CPM会话而发起的会话请求消息,通过Request-URI中指示的CPM会话标识符找到相应的CPM会话历史记录对象;按照会话历史记录存储格式的规定,从该SIPINVITE消息中提取出相关的信息并记录;根据对该INVITE消息返回的成功或失败的应答消息,对该请求加入CPM会话事件的结果进行记录,也作为该CPM会话历史记录对象的一部分。结束。 步骤605 步骤607 :是为建立新的CPM会话而发起的会话建立请求消息,CPM参与功能在本地存储空间中创建一个新的CPM会话历史记录对象;按照CPM会话历史记录的存储格式的规定,从该SIP INVITE消息中提取出相关的信息并记录;根据对该INVITE消息返回的成功或失败的应答消息,对该CPM会话创建事件的结果进行记录,也作为该CPM会话历史记录对象的一部分。 图7为对SIP BYE消息进行处理的流程图,如图7所示,包括 步骤700 步骤701 :当CPM参与功能接收到一条SIP BYE消息时,首先将该SIP
BYE消息缓存在本地,并等待接收到接收方返回的成功或失败的应答消息并缓存后,开始执行会谈历史信息记录功能。 步骤702 :根据应答消息判断该SIP BYE消息是否发送成功,如果收到的是SIP2000K应答消息,表明SIP BYE消息传送成功,则继续执行步骤703 ;如果收到的是SIP失败应答消息,表明该SIP BYE消息传送失败,执行步骤714。 步骤703 步骤709 :解析该SIP BYE消息,通过计算Dialog-ID找到与该SIP BYE消息相关联的SIP会话,获得该SIP会话代表的语义,如果该SIP BYE消息的含义是
CPM用户离开会话,或整个CPM会话结束,或为传输CPM大消息的临时SIP会话结束且为会话内大消息传输过程结束,或为传输CPM文件的临时SIP会话结束且为会话内大消息传输过程结束,那么进入步骤712 ; 如果为传输CPM大消息的临时SIP会话结束且为会话外大消息传输过程结束,则进入步骤710 ; 如果为传输CPM文件的临时SIP会话结束且为会话外文件传输过程结束,则进入步骤711。 步骤710 :找到相应的CPM消息记录对象,并进入步骤713。 步骤711 :找到相应的CPM文件传输历史记录对象,并进入步骤713。 步骤712 :找到相应的CPM会话历史记录对象,并进入步骤713。 步骤713 :根据判断的结果更新相关的CPM会话历史记录对象、CPM消息记录对象
或CPM文件传输历史记录对象。如果整个CPM会话结束,则CPM参与功能将缓存的CPM会
话过程中交互的连续性媒体也按照统一存储格式封装进相关的CPM会话历史记录对象中,
最终完成这份CPM会话历史记录对象的组装工作,并将其提交给消息存储服务器。结束。 步骤714 :丢弃该SIP BYE消息,并返回失败应答消息。 图8为对SIP REFER消息进行处理的流程图,如图8所示,包括 步骤800 步骤801 :当CPM参与功能接收到一条SIP REFER消息时,首先将该SIP
REFER消息缓存在本地,并等待接收到接收方返回的成功或失败的应答消息并缓存后,开始
执行会谈历史信息记录功能。 步骤802 :根据应答消息判断该SIP REFER消息是否发送成功,如果收到的是SIP2000K应答消息,表明该SIP REFER消息传送成功,进入步骤803 ;如果收到的是SIP失败应答消息,表明该SIP REFER消息传送失败,进入步骤808。 步骤803 步骤807 :解析该SIP REFER消息,通过Request-URI中携带的CPM会话标识符的值,获取该SIP REFER消息Refer-To头域中"method"参数的值
如果"method"参数的值是"BYE",表示该SIP REFER消息希望将某些用户从指定的CPM会话中移除,则在CPM会话历史记录对象中写入一个"移除用户"的会话状态事件,并从该SIP REFER消息中提取相关的信息进行记录;结束。 如果"method"参数的值是"INVITE",表示该SIP REFER消息希望邀请某些用户加入到指定的CPM会话中,则在CPM会话历史记录对象中写入一个"邀请用户加入"的会话状态事件,并从该SIP REFER消息中提取相关的信息进行记录。结束。
步骤808 :丢弃该消息,并返回失败应答消息。 图9为对SIP MESSAGE消息进行处理的流程图,如图9所示,包括 步骤900 步骤901 :当CPM参与功能接收到一条SIP MESSAGE消息时,首先将该
19SIP MESSAGE消息缓存在本地,等待接收到接收方返回的成功或失败的应答消息并缓存后,开始执行会谈历史信息记录功能。 同样,根据应答消息判断该SIP MESSAGE消息是否发送成功,如果收到的是SIP2000K应答消息,表明该SIP MESSAGE消息传送成功,进入步骤902 ;如果收到的是SIP失败应答消息,表明该SIP MESSAGE消息传送失败,则丢弃该消息,并返回失败应答消息。
步骤902 :解析SIP MESSAGE消息的To头域中是否携带tag参数,如果携带有tag参数,则判断出该SIP MESSAGE消息是一个CPM会话内消息,执行步骤903 ;如果tag参数为空,则判断出是一个CPM会话外消息,执行步骤907。 步骤903 步骤906 :该SIP MESSAGE消息是一个CPM会话内的CPM消息,则按照[RFC 3261]中的相关描述计算Dialog-ID (即取得Call-ID头域、From头域中tag参数、To头域中tag参数的值),并和CPM参与功能保存的各个正在进行的CPM会话状态参数中的Dialog-ID进行比对,找到这条CPM消息所属的那个CPM会话 如果找到匹配的CPM会话,则从该SIP MESSAGE请求消息中提取相关的信息写入到对应的CPM会话历史记录对象中;并根据对该CPM消息返回的成功或失败的应答消息,对该CPM消息发送的结果进行记录,也作为该CPM会话历史记录对象的一部分;结束。
如果没有找到匹配的CPM会话,则返回错误信息,结束。 步骤907 步骤911 :该SIP MESSAGE消息是一个CPM会话外的CPM消息,根据对该SIP MESSAGE消息的应答消息判断消息是否成功发送 如果该消息成功发送,则CPM参与功能将新建一个CPM消息记录对象,并按照CPM
消息的存储格式的规定,从该SIP MESSAGE请求消息中提取出相关的信息进行记录;如果
该消息发送失败,则CPM参与功能不进行任何记录,抛弃该消息,并返回错误应答。 图10为对MSRP SEND消息进行处理的流程图,如图10所示,包括 步骤1000 步骤1001 :当CPM参与功能接收到一条MSRP SEND消息时,首先将该
MSRP SEND消息缓存在本地,等待接收到接收方返回的成功或失败的应答消息并缓存后,开
始执行会谈历史信息记录功能。 步骤1002 :根据应答消息判断该MSRP SEND消息是否发送成功,如果收到的是MSRP 2000K应答消息,表明该MSRP SEND消息传送成功,进入步骤1003 ;如果收到的是MSRP失败应答消息,表明该MSRP SEND消息传送失败,进入步骤1012。 步骤1003 步骤1004 :解析MSRP SEND消息,根据[RFC 4975]中定义的流程,通过检查"Byte-Range"头域的值来判断该MSRP SEND消息是否被分段传输,如果是分段传输,则该MSRP SEND消息是一个分片,进一步判断是否该分片是最后一个分片,如果是最后一个分片,表明收完所有分片,则进入步骤1005 ;如果不是最后一个分片,则进入步骤1011。 如果该MSRP SEND消息没有进行分片,则该MSRP SEND消息不是分段传输,贝U,直接进入步骤1006。 步骤1005 :将同属于一个大消息的各个MSRP SEND消息分片组装起来,形成一条完整的MSRP SEND大消息。 步骤1006 :通过MSRP SEND消息的接收端口号找到对应的会谈历史记录对象。
步骤1007 :判断该MSRP SEND消息对应的是CPM消息记录过程、还是CPM文件传输记录过程、或是CPM会话历史记录过程。如果MSRP SEND传输的是CPM会话外大消息,则进入步骤1008 ;如果MSRP SEND传输的是CPM会话外文件,则进入步骤1009 ;如果MSRP SEND传输的是会话内的CPM大消息或CPM文件,则进入步骤1010。 步骤1008 :取得MSRP SEND消息中的内容,作为会话外传输的CPM大消息的内容,
封装到对应的CPM消息记录对象中,形成最终的CPM消息记录对象;结束。 步骤1009 :取得MSRP SEND消息中的内容,作为会话外传输的CPM文件的内容,封
装到对应的CPM文件传输历史记录对象中,形成最终的CPM文件传输历史记录对象;结束。 步骤1010 :取得MSRP SEND消息中的内容,作为CPM会话内传输的大消息或文件,
封装到对应的CPM会话历史记录对象中,对其进行更新;结束。 步骤1011 :继续等待剩余的MSRP SEND消息的其他分片,返回步骤1000。 步骤1012 :丢弃该消息,并返回失败应答消息。
通过本发明方法,可以看到 (1) —旦CPM参与功能激活会谈历史记录功能,则CPM参与功能将同时位于信令通道和媒体通道上,对与会谈状态相关的消息进行分类处理。CPM在信令平面上对SIPINVITE、SIP REFER、SIP MESSAGE、SIP 2000K以及SIP失败应答消息等进行相应处理,并根据上下文环境,判断该消息所代表的含义,从相关的请求消息和应答消息中提取出关键信息以统一的格式进行记录,而不是仅仅将这些消息原封不动地存储下来。
(2)对于SIP INVITE消息,由于可能代表发送CPM大消息、传输CPM文件或建立CPM会话三种不同的会谈事件,因此,本发明CPM参与功能通过解析INVITE消息"Acc印ted-Contact"头域携带的CPM特征标签,来判断属于哪一种事件发生,以决定应该进行CPM消息记录或CPM文件传输记录或进行CPM会话历史记录。 (3)CPM参与功能等待获得接收方返回的应答消息后,再执行会谈历史记录功能,如果消息成功发送,执行相应的记录功能;如果消息发送失败且是会话外的消息,就直接丢弃;如果消息发送失败且是会话相关的消息,则获取其代表的语义在会话历史记录中进行记录。 (4) CPM参与功能接收到SIP 2000K应答消息后,确定该成功应答消息代表的实际语义,若指示大消息传输媒体通道建立成功,则CPM参与功能启动MSRP媒体平面,并准备接收MSRP SEND消息并进行记录;若指示CPM文件传输媒体通道建立成功,则CPM参与功能启动相应的媒体平面,准备接收MSRP SEND消息并进行记录;若指示CPM会话建立成功,则CPM参与功能启动相应的连续媒体流平面,准备接受连续性媒体流并将参与会话的各方的媒体流进行混合后记录。 (5)CPM参与功能接收到SIP REFER消息后,在判断出是添加用户操作还是移除用户操作后,再记录相应的会话状态变化信息。 (6)CPM参与功能接收到SIP BYE消息后,确定BYE消息代表的语义如果是CPM会话结束,则CPM参与功能为该会话缓存的所有内容封装成完整的一份会话历史记录;如果是会话外的CPM大消息或CPM文件传输结束,则CPM参与功能将相关的内容封装成一份完整的CPM消息记录或CPM文件传输历史记录;如果是会话内的CPM消息或CPM文件传输结束,或CPM用户离开会话,则对相应CPM会话的会话状态信息进行更新。
通过本发明CPM参与功能的会谈历史记录功能的处理逻辑,实现了融合消息业务环境中消息和会话交互历史的记录功能。 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
一种融合消息业务中实现会谈历史记录的方法,其特征在于,包括融合的IP消息CPM参与功能接收到一条消息,并检测出用户已开启会谈历史记录功能,根据接收到的消息的协议类型,解析接收到的消息并按照解析结果执行会谈历史记录功能。
2. 根据权利要求1所述的方法,其特征在于,所述接收到的消息的协议类型为SIP协议消息,所述解析接收到的消息并按照解析结果执行会谈历史记录功能包括调用SIP协议栈对接收到的SIP协议消息进行解析,当解析出为SIP INVITE,进行SIPINVITE消息处理;当解析出为SIP BYE,进行SIP BYE消息处理;当解析出为SIP REFER,进行SIP REFER消息处理;当解析出为SIP MESSAGE,进行SIP MESSAGE消息处理。
3. 根据权利要求1所述的方法,其特征在于,所述接收到的消息的协议类型为MSRP协议消息,所述解析接收到的消息并按照解析结果执行会谈历史记录功能包括调用MSRP协议栈对接收到的MSRP协议消息进行解析,当解析出为MSRPSEND,进行MSRPSEND消息处理。
4. 根据权利要求1、2或3所述的方法,其特征在于,如果接收到连续性媒体流数据包,且检测出开启CPM会话记录功能,该方法还包括所述CPM参与功能记录参与会话各方的连续性媒体流,并启用媒体混合功能,将参与CPM会话各方的媒体流进行混合,保存混合后的媒体流数据;当CPM会话结束后,所述CPM参与功能提取本地缓存的混合后的媒体流数据包,按照会话历史记录存储格式的需求进行编码,然后将该媒体流对象编码封装进CPM会话历史记录对象中。
5. 根据权利要求2所述的方法,其特征在于,所述SIP INVITE消息处理包括当所述CPM参与功能将该SIP INVITE消息缓存在本地,等待接收到接收方返回的成功或失败的应答消息并缓存;所述CPM参与功能检查该SIP INVITE消息的Acc印t-Contact头域和Contact头域中携带的CPM特征标签,对CPM特征标签指示的为CPM大消息传输而建立的临时SIP会话建立请求消息,或为CPM文件传输建立的临时SIP会话建立请求消息,或与CPM会话事件相关的SIP会话建立请求消息分别进行相应处理。
6. 根据权利要求5所述的方法,其特征在于,对所述为CPM大消息传输而建立的临时SIP会话建立请求消息的处理包括当判断出所述是为CPM会话内的大消息传输而建立的临时SIP会话建立请求消息,则,通过计算和比对Dialog-ID来寻找该CPM大消息所属的CPM会话,找到对应的CPM会话的会话历史记录对象,从INVITE消息中提取相关信息进行记录;根据INVITE请求的相关成功或失败的应答消息,在CPM会话历史记录对象中进行记录;在指定的MSRP媒体通道的端口等待接收MSRP SEND消息;当判断出所述是为CPM会话外的大消息传输而建立的临时SIP会话建立请求消息,则,在根据应答消息判断出该SIP临时会话建立成功后,所述CPM参与功能新建一个CPM消息记录对象,并按照CPM消息统一存储格式的规定,从该SIPINVITE请求消息中提取出相关的信息进行记录;在指定的MSRP媒体通道的端口等待接收MSRP SEND消息。
7. 根据权利要求5所述的方法,其特征在于,对所述为CPM文件传输建立的临时SIP会话建立请求消息的处理包括在判断出是为CPM会话内的文件传输而建立的临时SIP会话建立请求消息,则,通过计算和比对Dialog-ID来寻找该CPM文件所属的CPM会话,找到对应的CPM会话的会话历史 记录对象,从INVITE消息中提取相关信息进行记录;根据INVITE请求的相关成功或失败的 应答消息,在CPM会话历史记录对象中进行记录;在指定的MSRP媒体通道的端口等待接收 MSRP SEND消息;当判断出是为CPM会话外的文件传输而建立的临时SIP会话建立请求消息,且根据应 答消息判断出该SIP临时会话建立成功,则,所述CPM参与功能新建一个CPM文件传输历史记录对象,并按照CPM文件传输历史记 录的统一存储格式的规定,从该SIP INVITE请求消息中提取出相关的信息进行记录;在指 定的MSRP媒体通道的端口等待接收MSRP SEND消息。
8. 根据权利要求5所述的方法,其特征在于,对所述与CPM会话事件相关的SIP会话建 立请求消息的处理包括当判断出与CPM会话事件相关的SIP会话建立请求消息是为建立一个新的CPM会话而 发起的会话建立请求消息,则,所述CPM参与功能在本地存储空间中创建一个新的CPM会话 历史记录对象;按照CPM会话历史记录的存储格式的规定,从该SIP INVITE消息中提取出 相关的信息并记录;根据对该INVITE消息返回的成功或失败的应答消息,对该CPM会话创 建事件的结果进行记录,也作为该CPM会话历史记录对象的一部分;当判断出与CPM会话事件相关的SIP会话建立请求消息是某个CPM用户为申请加入一 个正在进行的CPM会话而发起的会话加入请求消息,则,通过Request-URI中指示的CPM会 话标识符找到相应的CPM会话历史记录对象;按照会话历史记录存储格式的规定,从该SIP INVITE消息中提取出相关的信息并记录;根据对该INVITE消息返回的成功或失败的应答 消息,对该请求加入CPM会话事件的结果进行记录,也作为该CPM会话历史记录对象的一部 分。
9. 根据权利要求8所述的方法,其特征在于,该方法进一步包括检查SIP INVITE请 求消息的Request-URI,如果Request-URI的值是一个CPM会话标识,则所述SIP INVITE请求消息是某个CPM 用户为申请加入一个正在进行的CPM会话而发起的会话加入请求消息;如果Request-URI的值是CPM控制功能的地址,且To头域中的tag参数为空,则所述 SIP INVITE请求消息是为正在进行的Ad-hoc群组CPM会话而发起的会话建立请求消息;如果Request-URI的值是CPM用户的地址,且To头域中的tag参数为空,则所述SIP INVITE请求消息是为建立新的1-1 CPM会话而发起的会话建立请求消息;如果Request-URI的值是CPM群组的地址,且To头域中的tag参数为空,则所述SIP INVITE请求消息是为建立新的预定义群组CPM会话而发起的会话建立请求消息。
10. 根据权利要求2所述的方法,其特征在于,所述SIP BYE消息处理包括所述CPM参与功能将所述SIP BYE消息缓存在本地,等待接收到接收方返回的成功或 失败的应答消息并缓存后,根据应答消息判断出该SIP BYE消息发送成功时,解析该SIP BYE消息,如果该SIP BYE消息为CPM用户离开会话,或整个CPM会话结束,或为传输CPM大消息的临时SIP会话结束且为会话内大消息传输过程结束,或为传输CPM文件的临时SIP会话 结束且为会话内大消息传输过程结束,则找到相应的CPM会话历史记录对象;如果该SIP BYE消息为传输CPM大消息的临时SIP会话结束且为会话外大消息传输过 程结束,则找到相应的CPM消息记录对象;如果该SIP BYE消息为传输CPM文件的临时SIP会话结束且为会话外文件传输过程结 束,则找到相应的CPM文件传输历史记录对象;在上述获得记录对象后,均根据判断的结果更新相关的CPM会话历史记录对象、CPM消 息记录对象或CPM文件传输历史记录对象。
11. 根据权利要求2所述的方法,其特征在于,所述SIP REFER消息处理包括所述CPM参与功能将所述SIP REFER消息缓存在本地,等待接收到接收方返回的成 功或失败的应答消息并缓存后,根据应答消息判断出该SIP REFER消息发送成功,通过 Request-URI中携带的CPM会话标识符的值,获取该SIPREFER消息Refer-To头域中method 参数的值如果method参数的值是BYE,则在CPM会话历史记录对象中写入移除用户的会话状态 事件,并从该SIP REFER消息中提取相关的信息进行记录;如果method参数的值是INVITE,则在CPM会话历史记录对象中写入邀请用户加入的会 话状态事件,并从该SIP REFER消息中提取相关的信息进行记录。
12. 根据权利要求2所述的方法,其特征在于,所述SIP MESSAGE消息处理包括 所述CPM参与功能将所述SIP MESSAGE消息缓存在本地,等待接收到接收方返回的成功或失败的应答消息并缓存后,根据应答消息判断出该SIPMESSAGE消息发送成功;解析所 述SIP MESSAGE消息,如果SIP MESSAGE消息的To头域中携带有tag参数,则判断出该SIPMESSAGE消息是 CPM会话内消息,则,找到该SIP MESSAGE消息匹配的CPM会话,从该SIP MESSAGE请求消息 中提取相关的信息写入到对应的CPM会话历史记录对象中;并根据对该MESSAGE消息返回 的成功或失败的应答消息,对该CPM消息发送的结果进行记录,也作为该CPM会话历史记录 对象的一部分;如果SIP MESSAGE消息的To头域中tag参数为空,则判断出是一个CPM会话外消息, 则,根据对该SIP MESSAGE消息的应答消息判断出成功发送后,所述CPM参与功能将新建一 个CPM消息记录对象,并按照CPM消息的存储格式的规定,从该SIP MESSAGE请求消息中提 取出相关的信息进行记录。
13. 根据权利要求2所述的方法,其特征在于,所述MSRP SEND消息处理包括 所述当CPM参与功能将所述MSRP SEND消息缓存在本地,等待接收到接收方返回的成功或失败的应答消息并缓存后,如果收到成功应答消息,解析所述MSRP SEND消息,如果所述MSRP SEND消息没有进行分片,通过MSRP SEND消 息的接收端口号找到对应的会谈历史记录对象,并根据所述MSRP SEND消息对应的CPM消 息记录过程、或CPM文件传输记录过程、或CPM会话历史记录过程进行相应处理;如果所述MSRP SEND消息是一个分片,进一步判断是否该分片是最后一个分片,且是 最后一个分片,将同属于一个大消息的各个MSRP SEND消息分片组装起来,形成一条完整的 MSRP SEND大消息;通过MSRP SEND消息的接收端口号找到对应的会谈历史记录对象,并根据所述MSRP SEND消息对应的CPM消息记录过程、或CPM文件传输记录过程、或CPM会话历 史记录过程进行相应处理。
14. 根据权利要求13所述的方法,其特征在于,所述对应CPM消息记录过程的处理为 取得所述MSRP SEND消息中的内容,作为会话外传输的CPM大消息的内容,封装到对应的 CPM消息记录对象中,形成最终的CPM消息记录对象;所述对应CPM文件传输记录过程的处理为取得所述MSRP SEND消息中的内容,作为会 话外传输的CPM文件的内容,封装到对应的CPM文件传输历史记录对象中,形成最终的CPM 文件传输历史记录对象;所述对应CPM会话历史记录过程的处理为取得所述MSRP SEND消息中的内容,作为 CPM会话内传输的大消息或文件,封装到对应的CPM会话历史记录对象中,并进行更新。
15. 根据权利要求1 14任一项所述的方法,其特征在于,所述CPM参与功能作为SIP B2BUA将自身插入在信令和媒体通道上。
16. —种融合消息业务中实现会谈历史记录的装置,其特征在于,至少包括接收模块、 判断模块、记录模块,其中,接收模块,用于接收消息并输出记录模块,通知判断模块;判断模块,用于收到来自接收模块的通知,检测用户是否开启会谈历史记录功能,在开 启时,向记录模块发送记录通知;记录模块,用于接收到记录通知,根据接收到的消息的协议类型,解析接收到的消息并 按照解析结果执行会谈历史记录功能。
17. 根据权利要求16所述的装置,其特征在于,所述接收到的消息的协议类型为SIP协 议消息时,所述记录模块具体用于,调用SIP协议栈对接收到的SIP协议消息进行解析,当解析出为SIP INVITE,进行SIP INVITE消息处理;当解析出为SIP BYE,进行SIP BYE消息处理;当解析出为SIP REFER,进 行SIP REFER消息处理;当解析出为SIP MESSAGE,进行SIP MESSAGE消息处理。
18. 根据权利要求16所述的装置,其特征在于,所述接收到的消息的协议类型为MSRP 协议消息时,所述记录模块具体用于,调用MSRP协议栈对接收到的MSRP协议消息进行解析,当解析出为MSRPSEND,进行MSRP SEND消息处理。
19. 根据权利要求16 18任一项所述的装置,其特征在于,所述接收到的消息为连续 性媒体流数据包,且所述判断模块检测出开启CPM会话记录功能,该装置还包括处理模块, 用于,记录参与会话各方的连续性媒体流,并启用媒体混合功能,将参与CPM会话各方的媒 体流进行混合,保存混合后的媒体流数据;当CPM会话结束后,提取本地缓存的混合后的媒体流数据包,按照会话历史记录存储 格式的需求进行编码,然后将该媒体流对象编码封装进CPM会话历史记录对象中。
20. 根据权利要求19所述的装置,其特征在于,所述装置设置在CPM会谈历史记录功能中。
全文摘要
本发明提供了一种融合消息业务中实现会谈历史记录的方法及装置,包括CPM参与功能接收到一条消息,并检测出用户已开启会谈历史记录功能,根据接收到的消息的协议类型,解析接收到的消息并按照解析结果执行会谈历史记录功能。通过本发明CPM参与功能的会谈历史记录功能的处理逻辑,实现了融合消息业务环境中消息、文件传输和会话交互历史的记录功能。
文档编号H04L29/06GK101789910SQ20091024366
公开日2010年7月28日 申请日期2009年12月22日 优先权日2009年12月22日
发明者卢美莲, 周星, 张永旺, 曾玉冰, 李凤军, 杨栋 申请人:北京邮电大学;中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1