会话历史记录的存储处理和查询方法、系统和装置转让专利

申请号 : CN200710195808.X

文献号 : CN101453483B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 贾江涛王浩邓蓉

申请人 : 华为技术有限公司

摘要 :

本发明公开了一种会话历史记录的存储处理方法,包括以下步骤:接收来自用户侧第一服务器的请求消息;判断所述请求消息中是否包含有存储指示;如果所述请求消息中包含有所述存储指示,则根据存储策略判断是否对所要保存的会话历史记录进行存储。本发明实施例通过对会话历史记录的存储进行统一管理,使得对于一个会话的历史记录信息就只保存在第二服务器侧相应的存储装置中,而避免了现有技术存储在各第一服务器侧的网络存储装置而导致网络存储空间的浪费和存储的信息冗余的缺陷。

权利要求 :

1.一种会话历史记录的存储处理方法,其特征在于,包括以下步骤:第二服务器接收来自用户侧第一服务器的请求消息;

判断所述请求消息中是否包含有存储指示;

如果所述请求消息中包含有所述存储指示,则根据存储策略判断是否需要对所要保存的会话历史记录进行存储,若需要,则存储;

在所述对所要保存的会话的历史记录进行存储之后,还包括:

向所述第一服务器返回拒绝消息,拒绝来自所述第一服务器以存储者角色加入会话的请求。

2.如权利要求1所述会话历史记录的存储处理方法,其特征在于,所述存储策略为第二服务器对会话历史记录的存储控制策略,通过所述存储策略决定是对全部或部分会话历史记录进行统一存储。

3.如权利要求1所述会话历史记录的存储处理方法,其特征在于,对所要保存的会话的历史记录进行存储具体为:邀请第三方存储装置对所要保存的会话的历史记录进行存储。

4.如权利要求3所述会话历史记录的存储处理方法,其特征在于,在邀请第三方存储装置对所要保存的会话的历史记录进行存储之后,还包括:所述第三方存储装置保存所述会话的会话历史记录及会话状态信息,所述第三方存储装置根据所述会话状态信息对已保存的会话历史记录进行访问控制。

5.如权利要求1所述会话历史记录的存储处理方法,其特征在于,在接收来自用户侧第一服务器的请求消息之前,还包括:所述第一服务器根据用户的指示或所述第一服务器上的策略文件决定是否邀请或生成一个以存储角色加入会话的请求消息,加入会话的所述请求消息中包含有表示存储角色加入会话的存储指示。

6.如权利要求3所述会话历史记录的存储处理方法,其特征在于,在邀请第三方存储装置对所要保存会话的历史记录进行存储之后,还包括:接收所述第三方存储装置发送的存储所述会话历史记录的保存地址。

7.如权利要求6所述会话历史记录的存储处理方法,其特征在于,在接收所述第三方存储装置发送的存储所述会话历史记录的保存地址之后,还包括:将接收到的所述会话历史记录的保存地址发送给所述第一服务器;

所述第一服务器将所述保存地址存储在本地、所述第一服务器侧的网络存储装置或用户的偏好配置实体上。

8.如权利要求7所述会话历史记录的存储处理方法,其特征在于,在所述第一服务器将所述保存地址存储之后,还包括所述第一服务器将所述保存地址发送给所述用户。

9.如权利要求1所述会话历史记录的存储处理方法,其特征在于,所述方法还包括:所述第一服务器在所述用户退出会话后,记录所述用户参与会话的状态信息,将用户参与会话状态信息记录在本地、所述第一服务器侧的网络存储装置或用户的偏好配置实体上。

10.如权利要求3所述会话历史记录的存储处理方法,其特征在于,所述方法还包括:在检测到所述会话的会话状态信息发生变化后,将变化后的会话状态信息发送给所述第三方存储装置。

11.如权利要求3所述会话历史记录的存储处理方法,其特征在于,所述方法还包括:在接收来自所述第三方存储装置的退出消息后,

或,在向所述第三方存储装置发送退出消息时,将会话状态信息发送给所述第三方存储装置。

12.如权利要求11所述会话历史记录的存储处理方法,其特征在于,在接收来自所述第三方存储装置的退出消息后,还包括:将所述第三方存储装置退出的消息通知会话中的各个用户。

13.如权利要求1-12任一项所述会话历史记录的存储处理方法,其特征在于,上述方法基于会话初始协议SIP协议。

14.如权利要求3-13任一项所述会话历史记录的存储处理方法,其特征在于,所述第一服务器为参与功能服务器,第二服务器为控制功能服务器,所述第三方存储装置为增值服务提供者VASP、网络存储实体或存储服务器。

15.一种会话历史记录的存储系统,其特征在于,包括第二服务器和至少一个第一服务器,所述第一服务器,用于根据用户的指示或所述第一服务器上的策略文件决定是否生成携带存储指示的请求消息,所述存储指示表示所述第一服务器邀请或生成一个存储者加入会话,并向所述第二服务器发送所述请求消息;

所述第二服务器,用于接收来自所述第一服务器的请求消息,并判断所述请求消息中是否包含有存储指示,如果所述请求中包含有所述存储指示,则根据存储策略判断是否对所要保存的会话历史记录进行存储,若需要,则存储;在所述对所要保存的会话的历史记录进行存储之后,还包括:向所述第一服务器返回拒绝消息,拒绝来自所述第一服务器以存储者角色加入会话的请求。

16.如权利要求15所述会话历史记录的存储系统,其特征在于,还包括第三方存储装置,所述第二服务器在判断所述请求消息包含有所述存储指示后,邀请所述第三方存储装置对所要保存会话的历史记录进行存储;

所述第三方存储装置,用于在收到所述第二服务器的邀请后,保存所要保存的会话的会话历史记录。

17.如权利要求16所述会话历史记录的存储系统,其特征在于,所述第三方存储装置还保存有会话状态信息,并根据所述会话状态信息对已保存的会话历史记录进行访问控制。

18.如权利要求16或17所述会话历史记录的存储系统,其特征在于,所述第一服务器为参与功能服务器,所述第二服务器为控制功能服务器,所述第三方存储装置为VASP、网络存储实体或存储服务器。

19.一种控制功能服务器,其特征在于,包括接收模块、指示判断模块和存储处理模块,所述接收模块,用于接收请求消息;

所述指示判断模块,用于判断接收到的所述请求消息中是否包含有存储指示,所述存储指示表示发送所述请求消息的参与者是以一个存储者角色请求加入会话;

所述存储处理模块,用于在所述指示判断模块判断所述请求消息中包含有所述存储指示时,根据存储策略判断是否对所要保存的会话历史记录进行存储,若需要,则存储;

在所述对所要保存的会话的历史记录进行存储之后,还包括:

向所述第一服务器返回拒绝消息,拒绝来自所述第一服务器以存储者角色加入会话的请求。

20.如权利要求19所述控制功能服务器,其特征在于,所述存储处理模块包括交互实体子模块,用于在所述指示判断模块判断所述请求消息中包含有所述存储指示时,邀请第三方存储装置对所要保存的会话的历史记录进行存储,并在记录过程中与所述第三方存储装置进行交互。

21.如权利要求19所述控制功能服务器,其特征在于,还包括会话状态信息发送模块,用于在会话的状态信息发生变化或所述第三方存储装置退出存储后将会话状态信息发送给所述第三方存储装置。

22.如权利要求19所述控制功能服务器,其特征在于,还包括地址接收模块和地址下发模块,所述地址接收模块,用于接收所述第三方存储装置发送的所述会话历史记录的保存地址;

所述地址下发模块,用于将所述地址接收模块接收到的所述保存地址下发给参与功能服务器。

23.一种存储装置,其特征在于,包括邀请接收模块,存储模块和访问控制模块,所述邀请接收模块,用于接收控制功能服务器发送的请求消息,所述请求消息邀请所述存储装置对所要保存的会话的历史记录进行存储;

所述存储模块,用于对会话的历史记录和会话状态信息进行存储;

所述访问控制模块,用于根据保存的会话状态信息对已保存的会话历史记录进行访问控制。

说明书 :

会话历史记录的存储处理和查询方法、系统和装置

技术领域

[0001] 本发明涉及通信技术领域,特别是涉及一种会话历史记录的存储处理和查询方法、系统和装置。

背景技术

[0002] OMA(Open Mobile Alliance,开放移动联盟)是制定移动通信系统标准的国际组织,其中包括即时消息IM、以及融合IP消息CPM等基于SIP协议消息业务规范的研究和标准化工作。一般用户都会有自己的网络存储,部署在消息系统的网络侧,把用户的消息和会话历史记录等内容存储在网络存储中,便于用户对会话历史记录的存取访问。同时网络存储也针对存储的内容提供用户访问权限管理等能力。
[0003] 现有的消息系统会保存用户的会话历史记录到网络存储设备上,其中用户的会话历史记录包括文本消息、video(视频)和audio(音频)等信息,以便于后期的用户对通信历史信息的查阅和管理。在一对一会话中,会话双方用户A和用户B在会话过程中,选择保存会话记录到各自的网络存储上,此时用户A侧的网络存储器中保存着A和B双方的会话历史,用户B侧的网络存储器中也同样保存着A和B双方的会话历史,且保存的信息内容一样。
[0004] 同样在群组会话中,当需要保持会话记录时,参与群组会话的各个用户都会在各自的网络存储器上存储群组会话相关的会话历史,且保持的会话历史记录内容一样。用户和服务器之间建立会话,由参与功能服务器和网络存储交互,实现会话内容的记录,然后参与功能服务器发送消息到控制功能服务器,由控制功能服务器发送消息到目的地。如图1所示,为现有技术会话历史记录的存储流程示意图,用户1与用户2进行会话,以用户1向用户2发送消息为例,包括以下步骤:
[0005] 步骤S101,用户1向用户2发送消息,首先发送消息到参与功能服务器1; [0006] 步骤S102,参与功能服务器1和网络存储1交互,记录该用户1发送的消息; [0007] 步骤S103,然后参与功能服务器1将该消息转发到控制功能服务器; [0008] 步骤S104,控制功能服务器收到该消息后,将其发送给用户2侧的参与功能服务器2;
[0009] 步骤S105,参与功能服务器2和网络存储2交互,记录该用户1发送的消息; [0010] 步骤S106,参与功能服务器2将该消息发送到用户2。
[0011] 在实现本发明实施例过程中,发明人发现现有技术中至少存在如下问题:从图1中可以看出,现有技术主要通过与用户相关的参与功能服务器进行历史记录的存储,并且由参与功能服务器将历史记录存储在相关的网络存储装置中。这样对于两个用户参加的会话来说,在会话过程中就会在用户1侧和用户2侧的网络存储装置(网络存储1和网络存储2)中均保存有相同的会话历史记录,不仅造成存储资源的浪费,并且对于同一个会话的会话历史,各个参与者网络存储器上的会话信息一样,还会造成网络上存储的信息冗余。特别是对于群组会话中上述技术缺陷更加严重。
[0012] 发明内容
[0013] 本发明实施例要解决的技术问题是提供一种会话历史记录的存储处理和查询方法、系统和装置,能够对于属于同一个会话的历史记录保存在一个网络存储装置中,从而解决现有技术中会话的各方在网络存储空间上记录会话历史信息所造成浪费网络存储空间和存储的信息冗余的技术缺陷。
[0014] 为达到上述目的,本发明实施例一方面提出一种会话历史记录的存储处理方法,包括以下步骤:
[0015] 第二服务器接收来自用户侧第一服务器的请求消息;
[0016] 判断所述请求消息中是否包含有存储指示;
[0017] 如果所述请求消息中包含有所述存储指示,则根据存储策略判断是否对 所要保存的会话历史记录进行存储,若需要,则存储;
[0018] 在所述对所要保存的会话的历史记录进行存储之后,还包括: [0019] 向所述第一服务器返回拒绝消息,拒绝来自所述第一服务器以存储者角色加入会话的请求。
[0020] 本发明实施例另一方面还提出一种会话历史记录查询方法,包括以下步骤: [0021] 接收用户发送的查询信息,所述查询信息包括所述用户要查询会话历史记录的保存地址及所述用户的标识;
[0022] 向第二服务器发送查询请求,所述查询请求携带有所述查询信息; [0023] 接收所述第二服务器返回的查询结果,并将所述查询结果发送给所述用户。 [0024] 本发明实施例还提出一种会话历史记录查询方法,包括以下步骤: [0025] 向第一服务器发送查询信息,所述查询信息包括用户终端要查询会话历史记录的保存地址及所述用户终端的标识;
[0026] 接收第二服务器通过所述第一服务器返回的查询结果。
[0027] 本发明实施例还提出一种会话历史记录的存储系统,包括第二服务器和至少一个第一服务器,
[0028] 所述第一服务器,用于根据用户的指示或所述第一服务器上的策略文件决定是否生成携带存储指示的请求消息,所述存储指示表示所述第一服务器邀请或生成一个存储者加入会话,并向所述第二服务器发送所述请求消息;
[0029] 所述第二服务器,用于判断所述请求消息中是否包含有存储指示,如果所述请求中包含有所述存储指示,则根据存储策略判断是否对所要保存的会话历史记录进行存储,若需要,则存储;在所述对所要保存的会话的历史记录进行存储之后,还包括:向所述第一服务器返回拒绝消息,拒绝来自所述第一服务器以存储者角色加入会话的请求。 [0030] 本发明实施例还提出一种参与功能服务器,包括策略文件保存模块、判断模块和会话加入模块,
[0031] 所述策略文件保存模块,用于保存策略文件;
[0032] 所述判断模块,用于根据用户的指示或保存的策略文件判断是否需要保存会话的历史记录;
[0033] 所述会话加入模块,用于在所述判断模块判断需要保存会话的历史记录时,生成携带存储指示的请求消息,所述存储指示表示所述参与功能服务器 要邀请或生成一个存储者加入会话,并向所述控制功能服务器发送所述请求消息。
[0034] 本发明实施例还提出一种控制功能服务器,包括接收模块、指示判断模块和存储处理模块,
[0035] 所述接收模块,用于接收请求消息;
[0036] 所述指示判断模块,用于判断接收到的所述请求消息中是否包含有存储指示,所述存储指示表示发送所述请求消息的参与者是以一个存储者角色请求加入会话; [0037] 所述存储处理模块,用于在所述指示判断模块判断所述请求消息中包含有所述存储指示时,根据存储策略判断是否对所要保存的会话历史记录进行存储。 [0038] 本发明实施例还提出一种存储装置,包括邀请接收模块,存储模块和访问控制模块,
[0039] 所述邀请接收模块,用于接收控制功能服务器发送的请求消息,所述请求消息邀请所述存储装置对所要保存的会话的历史记录进行存储;
[0040] 所述存储模块,用于对会话的历史记录和会话状态信息进行存储; [0041] 所述访问控制模块,用于根据保存的会话状态信息对已保存的会话历史记录进行访问控制。
[0042] 本发明实施例还提出一种用户终端,包括查询信息发送模块和查询结果接收模块,
[0043] 所述查询信息发送模块,用于向参与功能服务器发送查询信息,所述查询信息包括所述用户要查询会话历史记录的保存地址及所述用户的标识;
[0044] 所述查询结果接收模块,用于接收控制功能服务器通过所述参与功能服务器返回的查询结果。
[0045] 本发明实施例的技术方案具有以下优点,因为采用对会话历史记录的存储进行统一管理,使得对于一个会话的历史记录信息就只保存在第二服务器(如控制功能服务器)侧相应的存储装置或第二服务器自身中,而避免了现有技术存储在各参与功能服务器侧的网络存储装置而导致的浪费网络存储空 间和存储的信息冗余的缺陷。从而提高了存储空间的利用率和减少了信息的冗余,从而节省网络资源。

附图说明

[0046] 图1为现有技术会话历史记录的存储流程示意图;
[0047] 图2为本发明实施例一的会话历史记录的存储处理方法流程图; [0048] 图3为本发明实施例二的会话历史记录的存储处理方法流程图; [0049] 图4为本发明实施例三的会话历史记录的存储处理方法流程图; [0050] 图5为本发明实施例用户主动发起BYE的流程;
[0051] 图6为本发明实施例控制功能服务器向用户发送BYE消息的流程; [0052] 图7为本发明实施例四的会话历史记录的存储处理方法流程图; [0053] 图8为本发明实施例五的会话历史记录的存储处理方法流程图; [0054] 图9为本发明实施例六的会话历史记录的查询方法流程图;
[0055] 图10为本发明实施例七的会话历史记录的存储系统的结构图。 具体实施方式
[0056] 下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述: [0057] 本发明实施例通过对会话历史记录的存储进行统一管理,使得会话内所有的历史记录由第二服务器控制第三方存储装置进行统一保存或由第二服务器控制将会话历史记录存储在本地,并将保存的地址通知给各个用户侧的第一服务器,这样第一服务器只需保存相应的保存地址即可,无需像现有技术一样每个第一服务器都需要保存其用户的会话历史记录。
[0058] 如图2所示,为本发明实施例一的会话历史记录的存储处理方法流程图,该实施例包括以下步骤:
[0059] 步骤S201,第一服务器向第二服务器发送保存会话历史的请求。其中第一服务器可视为参与功能服务器,第二服务器可视为控制功能服务器。记录会话历史的请求可由用户指示,也可由第一服务器根据自身的策略文件决定。
[0060] 步骤S202,第二服务器收到第一服务器的保存会话历史记录的请求后, 进一步根据第二服务器上的存储策略判断是否要对会话历史记录进行存储,该存储策略为第二服务器对会话历史记录的存储控制策略,可以是对全部的会话历史记录进行统一存储,也可以是针对用户特性仅对部分会话历史记录进行统一存储。如设置存储策略为全部存储,即对于所有提出保存请求的第一服务器都由第二服务器统一对会话历史记录进行保存;如果设置存储策略为部分存储,如根据地域进行划分,一个会话中可能包括北京、上海和深圳三个地方的用户,也可以通过第二服务器控制北京和上海两地的第一服务器不对会话进行保存,而由第二服务器取代两地的第一服务器进行会话的保存,这样也能够达到节省存储资源,避免网络存储空间浪费的技术目的。具体为第二服务器接收到第一服务器保存会话历史记录的请求后,进一步根据第二服务器上的存储策略判断该第一服务器是否属于北京或上海两地,如果该第一服务器属于北京或上海两地,则第二服务器取代所述第一服务器对会话历史记录进行存储,并向该第一服务器返回拒绝消息,拒绝该第一服务器作为存储者加入到会话中;如果该第一服务器属于深圳,不属于北京或上海,则第二控制器接受该第一服务器的保存请求,允许该第一服务器作为存储者加入会话对会话历史记录进行存储,即依然由第一服务器对用户的会话历史记录进行保存。这样通过上述实施例,第二服务器能够对属于北京或上海两地的用户的会话历史纪录进行统一集中存储,从而达到节省网络存储资源的目的。第二服务器对会话历史记录统一存储可以是将会话历史记录存储在第二服务器本地,或通过第二服务器启动第三方存储装置,由第三方存储装置负责记录该会话的历史记录。
[0061] 当然通过地域划分仅为本发明实施例的一种方案,也可根据用户的等级进行划分,将等级高的用户的会话状态信息进行统一保存,并通过第三方存储装置设置较高的访问权限,满足高等级用户对会话历史记录存储的安全需求。
[0062] 其中,作为本发明实施例的优选方案第三方存储装置可由VASP(ValueAdded Service Provider,增值服务提供者)提供,也可由网络存储实体或存储服务器提供。其中第三方存储装置不仅保存有所述会话的会话历史记录还保 存有该会话的状态信息,会话状态信息包括如用户加入会话的时间,用户离开会话的时间等信息,这样第三方存储装置就能够根据这些会话状态信息对已存储的会话历史记录进行控制访问。 [0063] 例如,用户如果想访问其参与会话的历史信息,则第三方存储装置就会根据该用户对应的状态信息为其选择能够访问的历史时间段,即该用户只能访问其加入会话至离开会话时间段的会话历史记录。
[0064] 步骤S203,第二服务器向第一服务器返回拒绝消息,通知第一服务器已由第三方存储装置保存了该会话的历史记录,拒绝第一服务器邀请或生成的参与者(存储者)加入该会话保存该会话的历史记录。
[0065] 在上述实施例中主要由第二服务器控制第三方存储装置对会话历史记录进行统一保存,本发明下述实施例将具体以控制功能服务器和参与功能服务器为例进行描述,在此需要说明的是,以控制功能服务器和参与功能服务器为例进行描述为本发明实施例较优的实施方式,但并不能因此认为本发明实施例仅能应用于控制功能服务器和参与功能服务器。
[0066] 如图3所示,为本发明实施例二的会话历史记录的存储处理方法流程图,在该实施例中以用户加入群组会话为例,其中在该实施例中省略了部分响应和信令经过SIP/IP Core的过程,上述经过SIP/IP Core的过程在实际的信令流中是存在的。该实施例包括以下步骤:
[0067] 步骤S301,用户1向参与功能服务器1发起一个加入群组会话的INVITE请求,并在INVITE请求中携带要记录会话历史的指示,具体消息格式如下:
[0068] INVITE sip:SessionABC@example.com SIP/2.0
[0069] Via:SIP/2.0/TCP user1.example.com;branch=z9hG4bKhjhs8ass83 [0070] Max-Forwards:70
[0071] To:sip:sessionABC@example.com
[0072] From:user1;tag=32331
[0073] Call-ID:d432fa84b4c76e66710
[0074] CSeq:1 INVITE
[0075] Contact:
[0076] Accept:application/sdp,message/sipfrag
[0077] Require:record-history
[0078] Content-Type:multipart/mixed;boundary=″boundary 1″ [0079] Content-Length:...
[0080] --boundary 1
[0081] Content-type:application/service-settings+xml
[0082] Content-disposition:record-allowed
[0083] <?xml version=″1.0″encoding=″UTF-8″?>
[0084]
[0085]
[0086] TRUE [0087]
[0088]
[0089] --boundary 1
[0090] Content-Type:application/sdp
[0091] SDP not shown
[0092] --boundary 1--
[0093] 在上述INVITE请求Require头中的record-history标识表示用户指示需要对会话历史记录进行保存,并在上述INVITE请求的消息体中携带相应的设置信息。 [0094] 步骤S302,参与功能服务器收到请求,解析用户是否要求记录会话历史并在确定用户要求记录会话历史时启动记录会话历史的处理流程。其中解析用户是否要求记录会话历史通过Require头中存在record-history标识,和 INVITE请求中携带的设置判断。下面就介绍参与功能服务器启动记录会话历史的处理过程,如图4所示,参与功能服务器接收到用户的请求中启动会话历史记录的指示后,根据该用户指示决定是否生成携带存储指示的请求消息,当然参与功能服务器也可根据自身存储的本地策略决定是否生成携带存储指示的请求消息。该存储指示表示第一服务器要邀请或生成一个记录会话的参与者(存储者)加入会话,并向第二服务器发送加入会话记录会话历史的请求。控制功能服务器启动第三方存储服务,作为优选方式可以邀请VASP加入会话来负责存储会话历史内容,同时在请求消息中携带会话的状态信息;VASP加入会话后,控制功能服务器发送4XX消息,告诉参与功能服务器已经有VASP负责存储会话历史记录,并在响应消息中携带存储会话信息的保存地址,由参与功能服务器收到响应消息后,负责保存记录会话历史的保存地址。该实施例包括以下步骤:
[0095] 步骤S401,在参与功能服务器确定需要记录会话历史后,向控制功能服务器发起记录会话的请求消息,该请求消息可以为INVITE请求或REFER消息,其中以在INVITE请求中携带存储会话历史的指示为例,具体的消息格式如下:
[0096] INVITE sip:sessionABC@example.com SIP/2.0
[0097] Via:SIP/2.0/TCP pserver1.example.com;branch=z9hG4bKhjas83 [0098] Max-Forwards:70
[0099] To:sip:sessionABC@example.com
[0100] From:sip:history@server1.example.com;tag=4931
[0101] Call-ID:32fa8476e66710
[0102] CSeq:1 INVITE
[0103] Contact:;+g.network-storage [0104] Content-Type:application/sdp
[0105] Content-Length:...
[0106] SDP not shown
[0107] 其中,记录会话的INVITE请求中的存储指示可以在Contact头中携带, 这里用+g.network-storage来告诉控制功能服务器该请求消息的发送者参与功能服务器是要以一个记录会话角色的参与者加入会话,存储会话的历史记录。存储指示也可以在Require头中指示,告诉控制功能服务器需要启动存储来记录会话历史,如Require:network-storage。
[0108] 步骤S402,控制功能服务器检测存储服务是否已经启动,如果没有启动,继续下面的步骤S403;如果已经启动,直接进行步骤S405。
[0109] 步骤S403,控制功能服务器发送INVITE请求给VASP(第三方存储装置),该INVITE请求携带有存储指示,邀请VASP负责存储会话历史记录,在消息中包含会话状态信息。VASP保存会话历史记录的同时,也保存会话状态信息。其中,能够根据会话的状态信息实现对存储的会话历史记录的访问控制,消息格式如下所示:
[0110] INVITE sip:vasp@example.com SIP/2.0
[0111] Via:SIP/2.0/TCP server.example.com;branch=z9hG4bKhjass83 [0112] Max-Forwards:70
[0113] To:sip:vasp@example.com
[0114] From:sip:server.example.com;tag=3231
[0115] Call-ID:32fa8476710
[0116] CSeq:23 INVITE
[0117] Contact:;+g.network-storage [0118] Content-Type:multipart/mixed;boundary=″boundary1″
[0119] Content-Length:...
[0120] --boundary 1
[0121] Content-Type:application/sdp
[0122] SDP not shown
[0123] --boundary l
[0124] Content-Type:application/session-state-info+xml
[0125] <?xml version=″1.0″encoding=″UTF-8″?>
[0126]
[0127] xmlns=″urn:ietf:params:xml:ns:session-state-info″ [0128] entity=″sip:sessionABC@example.com″
[0129] state=″full″version=″1″>
[0130]
[0131] shopping
[0132]
[0133]
[0134] 4
[0135]
[0136]
[0137] [0138] [0139] connected
[0140]
[0141] 2007-09-21T21:12:00Z
[0142]
[0143]
[0144]
[0145] [0146]
[0147] disconnected
[0148]
[0149] 2007-09-21T20:50:00Z
[0150]
[0151]
[0152] 2007-09-21T21:10:00Z
[0153]
[0154]
[0155]
[0156]
[0157]
[0158] --boundary1--
[0159] 其中,消息头Content-Type中的内容application/session-state-info+xml表示所描述的内容为会话状态信息;中的内容表示参与会话的用户信息;中的内容表示与用户相关的状态信息,用户接入的终端信息中的内容表示用户加入会话的时间;中的内容表示用户离开会话的时间,便于VASP可以根据用户参与会话的状态,只允许用户访问用户参与会话时间段内的内容。
[0160] 步骤S404,VASP接受控制功能服务器的邀请并返回200 OK消息。其中,200 OK消息中携带存储会话历史的保存地址,发给控制功能服务器。以记录会话历史的地址为:http://mailserver.example.com/storage/d908273ksjdfahjkh为例,响应消息格式如下:
[0161] SIP/2.0 200 OK
[0162] Via:SIP/2.0/TCP server.example.com;branch=z9hG4bKh jass83 [0163] Max-Forwards:70
[0164] To:sip:vasp@example.com;tag=39456
[0165] From:sip:history@serverl.example.com;tag=3231
[0166] Call-ID:32fa8476710
[0167] CSeq:23 INVITE
[0168] Content-Type:application/history-record+xml
[0169] Content-Length:...
[0170] <?xml version=″1.0″encoding=″UTF-8″?>
[0171] [0172]
[0173] 2007-10-20T21:13:00.0Z
[0174] d908273ksjdfahjkh
[0175] ”http://mailserver.example.com/storage/d908273ksjdf [0176] ahjkh”
[0177]
[0178]
[0179] 其中,消息头Content-Type中的内容application/history-record+xml表示消息体中携带的内容为存储的会话历史记录的信息,表示会话历史在存储设备上的有效期;中的内容表示记录本次会话历史的消息表示;中的内容表示会话历史记录存储的位置信息。
[0180] 步骤S405,如果控制功能服务器收到第三方存储装置返回的200 OK消息,则确定第三方存储装置对该会话的存储服务已启动,则发送响应消息4XX消息给参与功能服务器,告诉参与功能服务器已经由VASP负责存储会话历史记录,其中消息中携带存储本次会话历史的服务器保存地址。以488 NotAcceptable Here为例,消息格式如下: [0181] SIP/2.0 488 Not Acceptable Here
[0182] Via:SIP/2.0/TCP server1.example.com;branch=z9hG4bKhjass83 [0183] Max-Forwards:70
[0184] To:sessionABC@example.com;tag=3879
[0185] From:sip:history@server1.example.com;tag=4931
[0186] Call-ID:32fa8476e66710
[0187] CSeq:1 INVITE
[0188] Content-Type:application/history-record+xml
[0189] Content-Length:...
[0190] <?xml version=″1.0″encoding=″UTF-8″?>
[0191] [0192]
[0193] 2007-10-20T21:13:00.0Z
[0194] d908273ksjdfahjkh
[0195] ”http://mailserver.example.com/storage/d908273ksjdf [0196] ahjkh”
[0197]
[0198]
[0199] 步骤S406,参与功能服务器收到响应消息后,解析消息中携带的记录会话历史的地址信息,并记录存储会话历史的地址信息。保存的信息可以被记录在本地存储装置上,也可以被记录在对应的用户网络存储装置上,也可以被记录在用户的preferences(偏好配置)实体上。存储的内容包括记录会话历史的地址、会话历史id、到期信息等,也可以包括相关的会话状态信息,如用户加入会话的时间和用户离开会话的时间等。存储的消息以xml形式表示如下:
[0200] <?xml version=″1.0″encoding=″UTF-8″?>
[0201] [0202]
[0203] 2007-10-20T21:13:00.0Z
[0204] d908273ksjdfahjkh
[0205] ”http://mailserver.example.com/storage/d908273ksjdfahjk
[0206] h”
[0207]
[0208]
[0209] 2007-09-21T21:00:00Z
[0210]
[0211]
[0212] 其中,date的值表示记录会话历史的日期,表示有效期,到期后记录将被删除;用来标识这次会话历史的唯一标识;中的内容表示存储会话历史记录的位置,通过该uri可以访问到会话历史记录;中的内容记录用户参与会话的时间。
[0213] 其中,上述实施例中由用户通过INVITE请求指示参与功能服务器对会话历史记录进行保存,然而本发明实施例参与功能服务器还可以根据自身的策略文件存储指示来确定是否对会话历史记录进行保存,策略文件如下所示。
[0214] 其中XML表示的格式如下:
[0215] <?xml version=″1.0″encoding=″UTF-8″?>
[0216] [0217]
[0218] TRUE [0219]
[0220]
[0221] 步骤S303-步骤S304,参与功能服务器转发INVITE请求到控制功能服务器,允许所述用户加入会话。
[0222] 步骤S305-步骤S306,控制功能服务器响应200 OK消息给用户,表示用户加入会话成功。
[0223] 其中,在用户加入会话后的会话过程中,用户也可以通过re-INVITE消息或INFO消息来告诉参与功能服务器关闭记录会话历史,在消息头Require中携带+g.network-storage=false来告诉参与功能服务器不再记录会话历史;也可以在消息体中携带,用FALSE表示不再记录会话历史,XML表示的格式如下:
[0224] <?xml version=″1.0″encoding=″UTF-8″?>
[0225] [0226]
[0227] FALSE [0228]
[0229]
[0230] 在本发明实施例中还公开了用户离开会话后的相应的存储流程,用户离开会话主要分为用户主动离开及控制功能服务器通知所述用户离开两种方式,分别如图5和图6所示。图5为本发明实施例用户主动发起BYE的流程;用户向参与功能服务器发送BYE(退出)消息,参与功能服务器收到BYE消息后,保存用户参与会话的状态信息,并向控制功能服务器转发BYE消息。图6为本发明实施例控制功能服务器向用户发送BYE消息的过程;控制功能服务器向参与功能服务器发送BYE消息,参与功能服务器收到BYE消息后,保存会话的状态信息,并向用户转发BYE消息。针对上述两种方式,提出了如图7所示的本发明实施例四的会话历史记录的存储处理方法流程图,包括以下步骤:
[0231] 步骤S701,参与功能服务器收到BYE消息,该BYE消息可能来自于用户,表示有参与者要退出会话,当然也可能来自于控制功能服务器。
[0232] 步骤S702,参与功能服务器收到BYE消息后,保存用户参与会话的状态信息,包括用户加入会话的时间和离开会话的时间。参与功能服务器把该用户加入会话和离开会话的信息保存在记录会话历史记录的地方,和本次会话历史记录在一起。可以被记录在本地存储装置上,也可以被记录在对应的用户网络存储装置上,也可以被记录在用户的preferences(偏好配置)实体上。记录的信息如下:
[0233] <?xml version=″1.0″encoding=″UTF-8″?>
[0234] [0235]
[0236] 2007-10-20T21:13:00.0Z
[0237] d908273ksjdfahjkh
[0238] ”http://mailserver.example.con/storage/d908273ksjdfahj
[0239] kh”
[0240]
[0241]
[0242] 2007-09-21T21:00:00Z
[0243]
[0244]
[0245] 2007-09-21T22:00:00Z
[0246]
[0247]
[0248] 其中,中的内容表示用户离开会话的时间,通过用户在会话中的时间,可以确定用户能够访问的会话历史记录的内容。
[0249] 步骤S703,参与功能服务器向用户或控制功能服务器转发BYE消息。记录会话历史地址信息除了可以记录在上述的位置之外,也可以以消息的形式把记录会话历史的地址信息通知给参与用户,由用户存储在终端上,在消息体中携带会话历史记录的地址。这里以MESSAGE消息通知用户为例,格式如下:
[0250] MESSAGE sip:user1@example.com SIP/2.0
[0251] Via:SIP/2.0/TCP pserver.example.com;branch=z9hG4bK776sgke [0252] Max-Forwards:70
[0253] From:sip:pserver.example.com;tag=49583
[0254] To:sip:user1@example.com
[0255] Call-ID:2316546kjy
[0256] CSeq:1 MESSAGE
[0257] Content-Type:application/vnd.cmp.histroy-record-info+xml [0258] Content-Length:...
[0259] <?xml version=″1.0″encoding=″UTF-8″?>
[0260] [0261]
[0262] 2007-10-20T21:13:00.0Z
[0263] d908273ksjdfahjkh
[0264] ”http://mailserver.example.com/storage/d908273k [0265] sjdfahjkh”
[0266]
[0267]
[0268] 其中,Content-Type中的application/vnd.cmp.histroy-record-info+xml表示消息体的内容为历史记录的信息内容,消息体中包括:历史记录的地址、消息的标识和有效期等信息。
[0269] 如图8所示,为本发明实施例五的会话历史记录的存储处理方法流程图,该实施例主要在于在会话状态信息发生变化后,如新的用户加入会话或者原来的用户退出会话,控制功能服务器需要会话状态信息通知VASP,在会话过程中可以通过re-INVITE消息或者INFO消息并在消息体携带会话状态信息给VASP,当VASP接收到消息时,更新VASP中存储的会话状态信息。本发明实施例提出了一种简洁的方式,即在会话结束时,在控制功能服务器发向VASP的BYE消息中携带会话状态信息;如果是VASP主动向控制功能服务器发起BYE消息,那么在控制功能服务器向VASP的响应消息中携带会话状态信息,如在200 OK消息中,并且优选地,在VASP主动退出对该会话的保存后控制功能服务器还需要通知该会话内的所有用户。这里以由控制功能服务器向VASP发送BYE消息为例,包括以下步骤: [0270] 步骤S801,控制功能服务器向VASP发送BYE消息,表示结束结束记录会话历史,其中在消息中携带会话的状态信息,具体消息如下:
[0271] BYE sip:vasp@example.com SIP/2.0
[0272] Via:SIP/2.0/TCP server.example.com;branch=z9hG4bKhjass83 [0273] Max-Forwards:70
[0274] To:sip:vasp@example.com;tag=39456
[0275] From:sip:server.example.com;tag=3231
[0276] Call-ID:32fa8476710
[0277] CSeq:1 BYE
[0278] Content-Type:application/session-state-info+xml
[0279] Content-Length:...
[0280] <?xml version=″1.0″encoding=″UTF-8″?>
[0281]
[0282] xmlns=urn:ietf:params:xml:ns:session-state-info″ [0283] entity=″sip:sessionABC@example.com″
[0284] state=″full″version=″1″>
[0285]
[0286] shopping
[0287]
[0288]
[0289] 4
[0290]
[0291]
[0292] [0293] [0294] disconnected
[0295]
[0296] 2007-09-21T21:12:00Z
[0297]
[0298]
[0299] 2007-09-21T22:10:00Z
[0300]
[0301]
[0302]
[0303] [0304] [0305]
[0306] 2007-09-21T20:50:00Z
[0307]
[0308]
[0309] 2007-09-21T21:10:00Z
[0310]
[0311]
[0312]
[0313]
[0314]
[0315] 其中,消息头Content-Type中的内容application/session-state-info+xml表示携带的内容为会话的状态信息,包括会话的参与人数,每个参与者的信息,包括用户加入会话的信息和离开会话的时间信息。 [0316] 步骤S802,VASP收到BYE消息,记录消息中的会话状态信息,即记录在BYE消息中携带的会话状态信息,application/session-state-info+xml中指 示的内容。 [0317] 步骤S803,VASP发送200 OK响应到控制功能服务器。
[0318] 需要说明的是在上述实施例中还可使用SUBSCRIBE和NOTIFY的机制来通知VASP会话状态信息,VASP用SUBSCRIBE消息向控制功能服务器订阅会话的状态消息,当会话状态发生改变时,控制功能服务器用NOTIFY消息通知VASP会话状态信息,然后VASP记录会话状态信息。
[0319] 通过上述实施例的会话历史记录存储方法,能够避免造成浪费网络存储空间和存储的信息冗余的弊端,能够提高存储空间的利用率和减少了信息的冗余度。 [0320] 如图9所示,为本发明实施例六用户查询会话历史记录流程图,对于存储在第三方存储上的会话历史记录,用户可以根据终端上的存储该会话历史记录的保存地址,在查询会话历史记录的请求消息中携带上需查询记录对应的保存地址信息,通过参与功能服务器和控制功能服务器到第三方存储上获取相应的会话历史记录。该实施例以用户和第三方存储装置已建立会话为例,包括以下步骤:
[0321] 步骤S901,用户向参与功能服务器发送查询请求,该查询请求携带相应的查询信息,查询信息主要包括用户要查询会话历史记录的保存地址及用户的标识,如用户的URI(Universal Resource Identifier,通用资源标志符)等。
[0322] 步骤S902,参与功能服务器根据用户的查询请求,生成请求消息,该请求消息也携带有用户要查询会话历史记录的保存地址及用户的标识(如用户的URI)。其中,由于在第三方存储装置中可能没有保存有会话状态信息,因此可选地,在该请求消息中还携带有该用户在当时参与会话的状态信息,如用户参与会话的开始时间和用户退出会话的时间。 [0323] 步骤S903,参与功能服务器发送请求消息到控制功能服务器。 [0324] 步骤S904,控制功能服务器转发该请求消息到第三方存储装置。 [0325] 步骤S905,第三方存储装置根据用户上报的查询信息确定用户所要查询的会话历史记录,以及会话历史记录中的时间信息,确定用户访问权限,并生成查询结果,该查询结果为用户能够访问的记录信息或者记录内容。其中, 用于确定用户访问权限的会话状态信息可来自于步骤S902中参与功能服务器添加的,也可以是第三方存储装置自身保存的。根据会话状态信息确定用户访问权限,例如:第三方存储装置根据会话状态信息中的用户参与会话的时间信息(用户参加的起始时间至用户退出会话的时间)生成一个访问时间段,由于保存的会话历史记录的每条信息都有相应的时间戳,表示存储该信息的时间,因此上述时间戳在访问时间段内的信息都是该用户有权访问的记录内容,根据该记录内容生成相应的查询结果。
[0326] 步骤S906,第三方存储装置将上述查询结果发送给控制功能服务器。 [0327] 步骤S907,控制功能服务器将收到的查询结果转发给参与功能服务器。 [0328] 步骤S908,参与功能服务器将该查询结果发送给用户。
[0329] 需要说明的是,在上述实施例根据用户加入会话的时间确定用户的访问权限,当然还可以根据用户的等级或其他用户特性确定该用户的访问权限,或者对用户不设置任何访问权限,该用户可以访问所有保存的会话历史记录。
[0330] 如图10所示,为本发明实施例七的会话历史记录的存储系统的结构图,该系统包括用户终端、第一服务器和第二服务器。在该实施例中以第一服务器为参与功能服务器1、第二服务器为控制功能服务器2。为例进行描述。该系统,包括控制功能服务器2和至少一个参与功能服务器1和该参与功能服务器1对应的用户终端3,参与功能服务器1用于根据用户终端3的指示或参与功能服务器1上的策略文件决定是否生成携带存储指示的请求消息,存储指示表示参与功能服务器1邀请或生成一个存储者加入会话,并向控制功能服务器2发送请求消息;控制功能服务器2用于接收来自参与功能服务器1的请求消息,并判断请求消息中是否包含有存储指示,如果请求中包含有存储指示,则进一步根据存储策略判断是否对所要保存的会话历史记录进行存储,如果是则对所要保存的会话的历史记录进行存储。
[0331] 其中,还包括第三方存储装置4,控制功能服务器2在判断所述请求消息包含有存储指示后,邀请所述第三方存储装置4对所要保存会话的历史记录进行存储;第三方存储装置4用于在收到所述第二服务器的邀请后,保存所要保存的会话的会话历史记录,该第三方存储装置4为VASP、网络存储实体 或存储服务器。
[0332] 其中,第三方存储装置4还保存有会话状态信息,并根据所述会话状态信息对已保存的会话历史记录进行访问控制,如根据用户加入会话的时间或用户的等级等特性确定用户的访问权限,或者对用户不设置任何访问权限,该用户可以访问所有保存的会话历史记录。
[0333] 其中,参与功能服务器1包括策略文件保存模块11、判断模块12和会话加入模块13,策略文件保存模块11用于保存策略文件;判断模块12用于根据用户终端3的指示或保存的策略文件判断是否需要保存会话的历史记录;会话加入模块13用于在判断模块12判断需要保存会话的历史记录时,生成携带存储指示的请求消息,其中存储指示表示参与功能服务器1要邀请或生成一个存储者加入会话,并向控制功能服务器2发送所述请求消息。 [0334] 其中,参与功能服务器1还包括保存模块14,用于在收到控制功能服务器2发送的会话历史记录的保存地址后,保存所述保存地址。
[0335] 其中,参与功能服务器1还包括查询信息接收模块15,查询请求发送模块16和查询结果转发模块17,查询信息接收模块15用于接收用户终端3发送的查询信息,查询信息包括用户终端3要查询历史记录的保存地址及用户终端3的标识;查询请求发送模块16用于向控制功能服务器2发送查询请求,该查询请求携带有接收到的查询信息;查询结果转发模块17用于接收控制功能服务器2返回的查询结果,并将查询结果转发给用户终端3。 [0336] 其中,参与功能服务器1还包括会话状态信息添加模块18,用于在查询请求发送模块16向控制功能服务器2发送的查询请求中,添加参与功能服务器1记录的会话状态信息。
[0337] 其中,控制功能服务器2包括接收模块21、指示判断模块22和存储处理模块23,接收模块21用于接收请求消息;指示判断模块22用于判断接收到的所述请求消息中是否包含有存储指示,所述存储指示表示发送所述请求消息的参与者是以一个存储者角色请求加入会话;存储处理模块23用于在指示判断模块22判断所述请求消息中包含有所述存储指示时,进一步根据控制功能服务器2的存储策略判断是否对所要保存的会话历史记录进行存储,如果 判断对所要保存的会话的历史记录进行存储,如果是则对所要保存的会话的历史记录进行存储。
[0338] 其中,存储处理模块23包括交互实体子模块231,用于在指示判断模块22判断请求消息中包含有所述存储指示时,邀请第三方存储装置4对所要保存的会话的历史记录进行存储,并在记录过程中与第三方存储装置4进行交互。
[0339] 其中,控制功能服务器2还包括会话状态信息发送模块24,用于在会话的状态信息发生变化或所述第三方存储装置退出存储后将会话状态信息发送给所述第三方存储装置4。
[0340] 其中,控制功能服务器2还包括地址接收模块25和地址下发模块26,地址接收模块25用于接收第三方存储装置4发送的会话历史记录的保存地址;地址下发模块26用于将地址接收模块25接收到的保存地址下发给参与功能服务器1。
[0341] 其中,第三方存储装置4包括邀请接收模块41,存储模块42和访问控制模块43,邀请接收模块41用于接收控制功能服务器2发送的请求消息,该请求消息邀请第三方存储装置4对所要保存的会话的历史记录进行存储;存储模块42用于对会话的历史记录和会话状态信息进行存储;访问控制模块43用于根据保存的会话状态信息对已保存的会话历史记录进行访问控制。
[0342] 其中,用户终端3包括查询信息发送模块31和查询结果接收模块32,查询信息发送模块31用于向参与功能服务器1发送查询信息,所述查询信息包括用户要查询会话历史记录的保存地址及用户的标识;查询结果接收模块32用于接收控制功能服务器2通过参与功能服务器1返回的查询结果。
[0343] 本发明上述实施例通过采用控制功能服务器对会话历史记录的存储进行统一管理,使得对于一个会话的历史记录信息就只保存在控制功能服务器侧相应的第三方存储装置中,而避免了现有技术存储在各参与功能服务器侧的网络存储装置而导致的浪费网络存储空间和存储的信息冗余的缺陷。
[0344] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以全部通过硬件用链路检测包自动建立的方式来实现,当然也可以全部 用软件配置表实现;也可以部分用硬件自动建立,部分用软件配置实现,但所述全硬件自动建立方式可以达到很高的实时性,是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,引擎,或者网络设备等)执行本发明各个实施例所述的方法。
[0345] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。