聊天会话启动和获取会话列表的方法及系统
技术领域
本发明涉及聊天会话,尤其涉及一种聊天会话启动和获取会话列表的方法及系统。
背景技术
面对信息通信产业周期的演进以及消费者模式的变迁大潮,面对互联网的骨灰级创新模式以及新媒体的广泛传播、甚至是IT厂商、内容整合者与消费电子厂商向运营领域的渗透,电信运营商正在采取一种积极的融合、开放的态度,努力尝试开放其电信能力,集思广益,发挥第三方企业与个人的创新能力,打造丰富的增值应用;另一方面,借用这种电信服务的二次分发渠道,促进基本电信服务的销售。尤其是终端与软件厂商在在线应用商店市场烽烟四起之时,运营商必须要利用电信能力(可靠的通信服务;用户数据;情境;认证;计费等)打造一条新的差异化的道路。
1998年Parlay组织成立致力于为电话网络开发API(应用编程接口)。借助这些API,第三方机构可以创建自己的应用。Parlay组织在这方面做了统一的标准化工作,制定了基于CORBA(公共对象资源代理架构)的Parlay/OSA(开放服务架构)API,对各种电信能力的使用进行编程方面的统一工作。另外Parlay/OSAAPI也获得了ETSI(欧洲电信标准协会)与3GPP(第三代移动通信合作伙伴计划标准组织)共同协助。在3GPP中,Parlay被当成开放服务架构(OSA)的一部分。ParlayX是Parlay、3GPP和OMA(开放移动联盟)颁发的基于SOAP(简单对象访问协议)Web服务的API标准规范。ParlayREST(面向ParlayX的RESTful约束),是OMA最新颁发的一套API标准规范,旨在为OMA中的ParlayXWeb服务规范(子)集指定RESTWeb服务约束。
在Web2.0领域,支持Ajax(异步JavaScript脚本和XML可扩展标签语言)技术的API相对应用比较广泛,风格为REST(REpresentationalStateTransfer,表象化状态转变)。REST不是一种新技术,也不是一种标准,而是一组设计原则;与基于SOAP的Web服务(如ParlayX)相比,RESTAPI更加轻量级,具有更优良的开发者友好性,便于Web应用的开发和Mashup。因此越来越多的Web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的(维基百科)。
GSMA(全球移动系统协会)RCS(富通信套件)是基于现有IMS(IP多媒体子系统)网络设施和开发协议搭建出来的提供可互操作的丰富通信功能的业务包,主要包括增强型地址簿、增强型呼叫、增强型融合消息等业务,使用户可以对自己的呈现(如个人图片、留言、推荐链接以及状态)进行更新,也可以在手机的通讯录中实时看到好友的呈现情况,并实现短信、彩信、聊天(即时消息)、文件传输等多种通信需求。RCS是包括运营商、设备商和手机终端厂商共同支持的统一的技术及实现标准,因此它不但容易培养消费者较为一致的使用习惯,而且可以实现不同国家、不同运营商的互联互通。后续阶段,RCS将进一步引入社交网络、开放式RESTAPI应用编程接口、与互联网集成应用商店等内容。RCSREST风格API的目标用户是典型的Web开发商、第三方开发者、业务提供商,通过API可以将电信运营商的RCS业务能力和IMS网络能力开放,更适合Web2.0Widget轻量级应用与Mashup的开发,迎合Web应用的发展趋势。
目前,电信运营商短信、彩信的业务能力已经可以通过OMA(开放移动联盟)制定的ParlayREST2.0协议标准开放,而聊天业务能力还没有制定相应的协议标准开放,用户还不能够调用电信能力来进行聊天会话启动和获取会话列表的相关控制。
发明内容
有鉴于此,本发明的一个目的在于提供一种聊天会话启动的方法及系统,以解决用户不能调用电信能力来聊天会话启动的问题。
为了解决上述问题,本发明提供了一种聊天会话启动的方法,该方法基于电信网络域提供的表象化状态转变(REST)应用编程接口(API)实现,包括:
客户端向服务器发送启动聊天会话请求消息,消息中携带使用的动作和资源的信息,以及请求启动聊天会话的信息,所述资源用资源统一资源位置符(URL)标示;
所述服务器收到启动聊天会话请求消息后,启动聊天会话,向所述客户端返回启动聊天会话响应消息,携带聊天会话的信息。
优选地,上述方法具有以下特点:
所述动作为HTTP的布置(POST)动作,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符。
优选地,上述方法具有以下特点:
所述启动聊天会话请求消息或启动聊天会话响应消息使用的格式为可扩展标记语言(XML)或Java脚本对象符号(JSON)。
优选地,上述方法具有以下特点:
所述服务器收到启动聊天会话请求消息后,启动一对一聊天会话或群组聊天会话。
优选地,上述方法具有以下特点:
所述请求启动聊天会话的信息中包含以下信息中的至少一种:聊天会话的主题、聊天会话的参与者信息、群组地址。
优选地,上述方法具有以下特点:
所述启动聊天会话请求消息中聊天会话的参与者信息中包含以下信息中的至少一种:参与者地址、参与者姓名、源端参与者的消息会话转播协议(MSRP)客户端路径信息。
优选地,上述方法具有以下特点:
当所述启动聊天会话响应消息为成功时,所述聊天会话的信息包含以下信息中的至少一种:聊天会话的资源URL、聊天会话标示符、聊天会话的参与者信息、聊天会话的状态、聊天会话的模式。
优选地,上述方法具有以下特点:
所述启动聊天会话响应消息中聊天会话的参与者信息中包含以下信息中的至少一种:参与者地址、参与者姓名、参与者状态、参与者启动时间、参与者的资源URL、参与者的标示符、源端参与者的MSRP客户端路径信息、源端参与者的MSRP服务器路径信息。
优选地,上述方法具有以下特点:客户端发送启动聊天会话请求消息之前,按以下方式生成所述启动聊天会话请求消息:
以HTTP的布置(POST)动作为使用的动作,以源端参与者的所有聊天会话为使用的资源,生成消息头,其中,标示所述资源的URL中包含聊天会话的源端参与者用户标示符;
根据聊天会话的主题、聊天会话的参与者、群组地址中的至少一种,生成聊天会话信息的数据结构,作为消息体;
根据所述消息头和消息体生成启动聊天会话请求消息。
优选地,上述方法具有以下特点:
所述服务器成功启动聊天会话,所述服务器返回启动聊天会话响应消息之前,按以下方式生成所述启动聊天会话响应消息;
根据服务器路径、源端参与者用户标示符和聊天会话标示符生成所述输出聊天消息的资源URL,在HTTP表示“已建立”的响应符后添加用该资源URL表示的位置(Location)信息,生成消息头;
根据聊天会话的资源URL、聊天会话标示符、一个或多个聊天会话的参与者信息、聊天会话的状态、聊天会话的模式中的至少一种,生成聊天会话信息的数据结构,作为消息体;
根据所述消息头和消息体生成启动聊天会话响应消息。
为了解决上述问题,本发明提供了一种基于电信网络域提供的表象化状态转变(REST)应用编程接口(API)聊天会话启动的系统,包括:
客户端中的消息生成装置,用于生成启动聊天会话请求消息;
客户端中的消息发送装置,用于向服务器发送所述启动聊天会话请求消息;
服务器中的消息处理装置,用于在收到启动聊天会话请求消息后,进行解析,启动聊天会话;
服务器中的消息生成装置,用于生成启动聊天会话响应消息;
服务器中的消息发送装置,用于向所述客户端返回启动聊天会话响应消息。
优选地,上述系统具有以下特点:
所述客户端中的消息生成装置又包括:
消息头生成子装置,用于以HTTP的布置(POST)动作为使用的动作,以源端参与者的所有聊天会话为使用的资源,生成消息头,其中,标示所述资源的URL中包含聊天会话的源端参与者用户标示符;
消息体生成子装置,用于根据聊天会话的主题、聊天会话的参与者、群组地址中的至少一种,生成聊天会话信息的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成启动聊天会话请求消息。
优选地,上述系统具有以下特点:
所述服务器中的消息生成装置又包括:
消息头生成子装置,用于根据服务器路径、源端参与者用户标示符和聊天会话标示符生成所述输出聊天消息的资源URL,在HTTP表示“已建立”的响应符后添加用该资源URL表示的位置(Location)信息,生成消息头;
消息体生成子装置,用于根据聊天会话的资源URL、聊天会话标示符、一个或多个聊天会话的参与者信息、聊天会话的状态、聊天会话的模式中的至少一种,生成聊天会话信息的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成启动聊天会话响应消息。
本发明大大方便了Web开发商、第三方开发者或业务提供商等以REST风格的API灵活地对即时消息业务引擎进行聊天会话启动的相关控制。本发明所适用的用户可以是基于互联网服务、WEB服务的任何有控制权限的即时消息参与者。
有鉴于此,本发明的一个目的在于提供一种获取会话列表的方法及系统,以解决用户不能调用电信能力获取聊天会话的会话列表的问题。
为了解决上述问题,本发明提供了一种获取聊天会话列表的方法,该方法基于电信网络域提供的表象化状态转变(REST)应用编程接口(API)实现,包括:
客户端向服务器发送获取聊天会话列表请求消息,消息中携带使用的动作和资源的信息,所述资源用资源统一资源位置符(URL)标示;
所述服务器收到获取聊天会话列表请求消息后,向所述客户端返回获取聊天会话列表响应消息,携带一个或多个聊天会话信息。
优选地,上述方法具有以下特点:
所述动作为HTTP的获取(GET)动作,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符。
优选地,上述方法具有以下特点:
所述获取聊天会话列表响应消息的消息体使用的格式为可扩展标记语言(XML)或Java脚本对象符号(JSON)。
优选地,上述方法具有以下特点:
所述聊天会话信息中包含以下信息中的至少一种:聊天会话的资源URL、聊天会话标示符、聊天会话的参与者信息、聊天会话的状态、聊天会话的模式、聊天会话的主题。
优选地,上述方法具有以下特点:
所述聊天会话的参与者信息中包含以下信息中的至少一种:参与者地址、参与者姓名、参与者状态、参与者启动时间、参与者的资源URL、参与者的标示符、源端参与者的MSRP客户端路径信息、源端参与者的MSRP服务器路径信息。
优选地,上述方法具有以下特点:
客户端发送获取聊天会话列表请求消息之前,按以下方式生成所述获取聊天会话列表请求消息:
以HTTP的获取(GET)动作为使用的动作,以源端参与者的所有聊天会话为使用的资源,生成消息头,其中,标示所述资源的URL中包含聊天会话的源端参与者用户标示符;
根据所述消息头生成获取聊天会话列表请求消息。
优选地,上述方法具有以下特点:
所述服务器返回获取聊天会话列表响应消息之前,按以下方式生成所述响应消息;
根据HTTP表示“成功”的响应符,生成消息头;
根据聊天会话的资源URL、聊天会话标示符、聊天会话的参与者信息、聊天会话的状态、聊天会话的模式、聊天会话的主题中的至少一种,为每个聊天会话生成聊天会话信息的数据结构;
根据生成的一个或多个聊天会话信息的数据结构,以及源端参与者的聊天会话列表资源URL中的至少一种,生成聊天会话信息列表的数据结构,作为消息体;
根据所述消息头和消息体生成获取聊天会话列表响应消息。
为了解决上述问题,本发明提供了一种基于电信网络域提供的表象化状态转变(REST)应用编程接口(API)获取聊天会话列表的系统,包括:
客户端中的消息生成装置,用于生成获取聊天会话列表请求消息;
客户端中的消息发送装置,用于向服务器发送所述获取聊天会话列表请求消息;
服务器中的消息生成装置,用于在收到获取聊天会话列表请求消息后,生成获取聊天会话列表响应消息;
服务器中的消息发送装置,用于向所述客户端返回获取聊天会话列表响应消息。
优选地,上述系统具有以下特点:
所述客户端中的消息生成装置又包括:
消息头生成子装置,用于以HTTP的获取(GET)动作为使用的动作,以源端参与者的所有聊天会话为使用的资源,生成消息头,其中,标示所述资源的URL中包含聊天会话的源端参与者用户标示符;
消息生成子装置,用于根据所述消息头生成获取聊天会话列表请求消息。
优选地,上述系统具有以下特点:
所述服务器中的消息生成装置又包括:
消息头生成子装置,用于根据HTTP表示“成功”的响应符,生成消息头;
消息体生成子装置,用于根据聊天会话的资源URL、聊天会话标示符、聊天会话的参与者信息、聊天会话的状态、聊天会话的模式、聊天会话的主题中的至少一种,为每个聊天会话生成聊天会话信息的数据结构;以及,根据生成的一个或多个聊天会话信息的数据结构,以及源端参与者的聊天会话列表资源URL中的至少一种,生成聊天会话信息列表的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成获取聊天会话列表响应消息。
本发明大大方便了Web开发商、第三方开发者或业务提供商等以REST风格的API灵活地对即时消息业务引擎获取聊天会话列表的相关控制。本发明所适用的用户可以是基于互联网服务、WEB服务的任何有控制权限的即时消息参与者。
附图说明
图1为本发明实施例开放电信能力接口的系统结构的示意图;
图2为本发明实施例一聊天会话启动的方法流程图;
图3为本发明实施例二获取聊天会话列表方法流程图;
图4为本发明客户端和服务器之间的聊天会话启动、获取聊天会话列表的操作示意流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
实施例一
图1示出了本实施例开放电信能力接口的系统结构。如图所示,电信网络域包含IMS核心网和业务层,业务层包含短信业务服务器、彩信业务服务器、聊天会话业务服务器以及其他业务服务器等各种业务网络设备,但是,一种服务器也可以用于多种业务。这些服务器向Web开发商、第三方开发者、业务提供商等提供开放的RESTAPI,Web开发商、第三方开发者、业务提供商等用户的客户端可以使用RESTAPI访问电信网络域,调用电信网络域的RCS业务能力和IMS网络能力,实现电信业务的Web2.0Widget轻量级应用与Mashup的开发。
本实施例中,Web开发商、第三方开发者、业务提供商等用户开发的应用程序可以通过客户端,使用本实施例提供的RESTAPI对聊天会话业务服务器进行聊天会话启动、获取聊天会话列表的相关控制;各实施例中的服务器均可以为聊天会话业务服务器,如电信网络域中的即时消息业务引擎。客户端可以位于业务提供商的网络设备中,也可以位于终端用户设备如移动终端、固定终端等中。本发明适用的用户也不限于上述类型,可以是基于互联网服务、WEB服务的任何有控制权限的聊天会话参与者。
本实施例中RESTAPI使用的资源、动作和数据结构的相关定义如下:
统一资源位置符(URL)中,serverRoot表示服务器路径URI,apiVersion表示API版本,Chat表示聊天会话,Originating表示源端,OriginatingID表示源端参与者的标示符。
上述RESTAPI使用的数据结构类型定义如下:
数据结构类型Type:ChatSessionList聊天会话列表
数据结构类型Type:ChatSessionInformation聊天会话信息
数据结构类型Type:ChatParticipantInformation聊天会话参与者信息
枚举Enumeration:ChatStatus聊天状态
Enumeration枚举值 |
Description描述 |
ChatBuilt |
The chat is built and used会话已建立并使用中 |
ChatTerminated |
The chat is terminated会话已结束 |
ChatInviting |
The chat is inviting会话邀请进行中 |
枚举Enumeration:ChatMode聊天模式
枚举Enumeration:ChatParticipantStatus聊天会话参与者状态
枚举Enumeration:ChatParticipantTerminationCause聊天会话参与者结束原因
图2为本实施例基于RESTAPI聊天会话启动的方法流程图,包括以下步骤:
步骤S201:客户端向服务器发送启动聊天会话请求消息,消息中携带使用的动作和资源的信息,以及请求启动聊天会话的信息,所述资源用资源统一资源位置符(URL)标示;
本实施例的启动聊天会话请求消息中,消息头中包括使用的动作、资源,消息体中包括聊天会话信息的数据结构。
其中,所述动作为HTTP的布置(POST)动作,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符。
客户端可以通过以下方式生成该消息:
以HTTP的布置(POST)动作为使用的动作,以源端参与者的所有聊天会话为使用的资源,生成消息头,其中,标示所述资源的URL中包含聊天会话的源端参与者用户标示符;
根据聊天会话的主题、聊天会话的参与者、群组地址中的至少一种,生成聊天会话信息的数据结构,作为消息体;
根据所述消息头和消息体生成启动聊天会话请求消息。
所述启动聊天会话请求消息中聊天会话的参与者信息中包含以下信息中的至少一种:参与者地址、参与者姓名、源端参与者的MSRP客户端路径信息。
各实施例涉及的几个消息中的消息体,也可以采用XML,也可以采用其他专用格式如Java脚本对象符号(JSON)。
下面用一个示例来说明一下生成的启动聊天会话请求消息。
假定源端参与者为源端参与者为用户MaxMuster(SIP:user1example.com),该用户启动新的聊天会话,参与者包括MaxMuster(SIP:user1example.com)和PeterE.Xample(SIP:user2example.com),主题为example1,MaxMuster的MSRP客户端路径信息msrp://MaxMuster.example.com:7777/iau39soe2843z;tcp。
POST.../{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessionsHTTP/1.1
Content-Type:application/xml
Accept:application/xml
Content-Length:1234
Host:example.com:80
<?xmlversion=″1.0″encoding=″UTF-8″?>
<chat:chatSessionInformationxmlns:chat=″urn:oma:xml:rest:chat:l″>
<participant>
<participantAddress>SIP:user1example.com</participantAddress>
<participantName>MaxMuster</participantName>
<MSRPClientPath>msrp://Max
Muster.example.com:7777/iau39soe2843z;tcp</MSRPClientPath>
</participant>
<participant>
<participantAddress>SIP:user2example.com</participantAddress>
<participantName>PeterE.Xample</participantName>
</participant>
<subject>example1</subject>
<clientCorrelator>104567</clientCorrelator>
</chat:chatSessionInformation>
步骤S202:服务器启动聊天会话,向所述客户端返回启动聊天会话响应消息,携带聊天会话的信息。
所述服务器收到启动聊天会话请求消息后,可启动一对一聊天会话或群组聊天会话。
所述服务器成功启动聊天会话,返回启动聊天会话响应消息之前,可按以下方式生成所述启动聊天会话响应消息;
根据服务器路径、源端参与者用户标示符和聊天会话标示符生成所述输出聊天消息的资源URL,在HTTP表示“已建立”的响应符后添加用该资源URL表示的位置(Location)信息,生成消息头;
根据聊天会话的资源URL、聊天会话标示符、一个或多个聊天会话的参与者信息、聊天会话的状态、聊天会话的模式中的至少一种,生成聊天会话信息的数据结构,作为消息体;
根据所述消息头和消息体生成启动聊天会话响应消息。
其中,所述启动聊天会话响应消息中聊天会话的参与者信息中包含以下信息中的至少一种:参与者地址、参与者姓名、参与者状态、参与者启动时间、参与者的资源URL、参与者的标示符、源端参与者的MSRP客户端路径信息、源端参与者的MSRP服务器路径信息。
当源端参与者状态为聊天会话参与者已连接时(即和服务器已建立连接),上述信息中包含所述源端参与者的MSRP(消息会话转播协议)客户端路径信息和所述源端参与者的MSRP服务器路径信息。
下面以聊天会话创建成功为例进行说明,假定聊天会话标示符为{chatSessionId1},聊天会话的状态为会话邀请进行中,聊天会话的模式为一对一聊天会话;用户MaxMuster(SIP:user1example.com)的状态为聊天会话参与者已连接,标示符为{participantId1},MSRP服务器路径信息msrp://Server.example.com:4000/amFDknQZ7OIi;tcp;用户PeterE.Xample(SIP:user2example.com)的状态为聊天会话参与者邀请进行中。
HTTP/1.1201Created
Content-Type:application/xml
Location:
http://{serverRoot}/{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessions/{chatSessionIdl}
Content-Length:1234
Date:Mon,28Jun201017:51:59GMT
<?xmlversion=″1.0″encoding=″UTF-8″?>
<chat:chatSessionInformationxmlns:chat=″urn:oma:xml:rest:chat:l″>
<participant>
<participantAddress>SIP:user1example.com</participantAddress>
<participantName>MaxMuster</participantName>
<participantStatus>ChatParticipantConnected</participantStatus>
<startTime>2010-06-28T17:50:51</startTime>
<MSRPClientPath>msrp://MaxMuster.example.com:7777/iau39soe2843z;tcp</MSRPClientPath>
<MSRPServerPath>msrp://Server.example.com:4000/amFDknQZ7OIi;tcp</MSRPServerPath>
<resourceURL>
http://{serverRoot}/{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessions/{chatSessionId1}/p
articipants/{participantId1}
</resourceURL>
</participant>
<participant>
<participantAddress>SIP:user2example.com</participantAddress>
<participantName>PeterE.Xample</participantName>
<participantStatus>ChatParticipantInviting</participantStatus>
</participant>
<chatStatus>ChatInviting</chatStatus>
<ChatMode>1-1chat</ChatMode>
<subject>example1</subject>
<clientCorrelator>104567</clientCorrelator>
<resourceURL>http://{serverRoot}/{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessions/{ch
atSessionId1}</resourceURL>
</chat:chatSessionInformation>
实施例二
本实施例是基于电信网络域提供的RESTAPI获取聊天会话列表的实施例,所基于的系统与实施例一相同,资源、动作和数据结构的相关定义请参照实施例一中的说明。
图3为本实施例基于RESTAPI获取聊天会话列表的流程图,包括以下步骤:
步骤S301:客户端向服务器发送获取聊天会话列表请求消息,消息中携带使用的动作和资源的信息,所述资源用资源统一资源位置符(URL)标示;
本实施例的获取聊天会话列表请求消息中,消息头中包括使用的动作和资源,可以不携带消息体。
其中,所述动作为HTTP的获取(GET)动作,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符。
客户端可以通过以下方式生成该消息:
以HTTP的获取(GET)动作为使用的动作,以源端参与者的所有聊天会话为使用的资源,生成消息头,其中,标示所述资源的URL中包含聊天会话的源端参与者用户标示符;
根据所述消息头生成获取聊天会话列表请求消息。
下面用一个示例来说明一下生成的获取聊天会话列表请求消息。
假定源端参与者为用户MaxMuster(SIP:user1example.com),该请求为获取该用户的所有聊天会话。
GET.../{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessionsHTTP/1.1
Accept:application/xml
Host:example.com:80
步骤S302:服务器向客户端返回获取聊天会话列表响应消息,携带一个或多个聊天会话信息。
所述服务器返回获取聊天会话列表响应消息之前,可以按以下方式生成所述响应消息;
根据HTTP表示“成功”的响应符,生成消息头;
根据聊天会话的资源URL、聊天会话标示符、聊天会话的参与者信息、聊天会话的状态、聊天会话的模式、聊天会话的主题中的至少一种,为每个聊天会话生成聊天会话信息的数据结构;
根据生成的一个或多个聊天会话信息的数据结构,以及源端参与者的聊天会话列表资源URL中的至少一种,生成聊天会话信息列表的数据结构,作为消息体;
根据所述消息头和消息体生成获取聊天会话列表响应消息。
其中,所述聊天会话的参与者信息中包含以下信息中的至少一种:参与者地址、参与者姓名、参与者状态、参与者启动时间、参与者的资源URL、参与者的标示符、源端参与者的MSRP客户端路径信息、源端参与者的MSRP服务器路径信息。
下面用一个示例来说明一下生成的获取聊天会话列表响应消息。
用户MaxMuster(SIP:user1example.com)获取聊天会话列表成功,有2个聊天会话。
其中聊天会话1标示符为{chatSessionId1},聊天会话的状态为会话已建立并使用中,聊天会话的模式为一对一聊天会话,主题为example1;用户MaxMuster(SIP:user1example.com)的状态为聊天会话参与者已连接,标示符为{participantId1};用户PeterE.Xample(SIP:user2example.com)的状态为聊天会话参与者初始化,标示符为{participantId2}。
其中聊天会话2标示符为{chatSessionId2},聊天会话的状态为会话已建立并使用中,聊天会话的模式为群组聊天会话,主题为example2;用户MaXMuster(SIP:user1example.com)的状态为聊天会话参与者已连接,标示符为{participantId1};其他用户为MaryE.Xample(SIP:user3example.com)标示符为{participantId3},JohnE.Xample(SIP:user3example.com)标示符为{participantId4},AliceE.Xample.example.com(SIP:user5example.com)标示符为{participantId5}。
HTTP/1.1200OK
Content-Type:application/xml
Content-Length:1234
Date:Mon,28Jun201017:51:59GMT
<?xmlversion=″1.0″encoding=″UTF-8″?>
<chat:chatSessionListxmlns:chat=″urn:oma:xml:rest:chat:l″>
<chatSession>
<participant>
<participantAddress>SIP:user1example.com</participantAddress>
<participantName>MaxMuster</participantName>
<participantStatus>ChatParticipantConnected</participantStatus>
<startTime>2010-06-28T17:50:51</startTime>
<MSRPClientPath>msrp://Max
Muster.example.com:7777/iau39soe2843z;tcp</MSRPClientPath>
<MSRPServerPath>msrp://Server.example.com:4000/amFDknQZ7OIi;tcp</MSRPServerPath>
<resourceURL>
http://{serverRoot}/{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessions/{chatSessionId1}/p
articipants/{participantId1}
</resourceURL>
</participant>
<participant>
<participantAddress>SIP:user2example.com</participantAddress>
<participantName>PeterE.Xample</participantName>
<participantStatus>ChatParticipantInitial</participantStatus>
<startTime>2010-06-28T17:50:51</startTime>
<resourceURL>
http://{serverRoot}/{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessions/{chatSessionId1}/p
articipants/{participantId2}
</resourceURL>
</participant>
<chatStatus>ChatBuilt</chatStatus>
<ChatMode>1-1chat</ChatMode>
<subject>example1</subject>
<clientCorrelator>104567</clientCorrelator>
<resourceURL>http://{serverRoot}/{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessions/{ch
atSessionId1}</resourceURL>
</chatSession>
<chatSession>
<GroupAddress>sip:list-serviceexample.com</GroupAddress>
<participant>
<participantAddress>SIP:user1example.com</participantAddress>
<participantName>MaxMuster</participantName>
<participantStatus>ChatParticipantConnected</participantStatus>
<startTime>2010-06-28T17:50:51</startTime>
<MSRPClientPath>msrp://MaxMuster.example.com:7778/iau56soe1343x;tcp
</MSRPClientPath>
<MSRPServerPath>msrp://Server.example.com:4000/Mgsn8xfcpnvU;tcp</MSRPServerPath>
<resourceURL>
http://{serverRoot}/{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessions/{chatSessionId2}/p
articipants/{participantId1}
</resourceURL>
</participant>
<participant>
<participantAddress>SIP:user3example.com</participantAddress>
<participantName>MaryE.Xample</participantName>
<participantStatus>ChatParticipantConnected</participantStatus>
<startTime>2010-06-28T17:50:51</startTime>
<resourceURL>
http://{serverRoot}/{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessions/{chatSessionId2}/p
articipants/{participantId3}
</resourceURL>
</participant>
<participant>
<participantAddress>SIP:user4example.com</participantAddress>
<participantName>JohnE.Xample</participantName>
<participantStatus>ChatParticipantConnected</participantStatus>
<startTime>2010-06-28T17:51:51</startTime>
<resourceURL>
http://{serverRoot}/{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessions/{chatSessionId2}/p
articipants/{participantId4}
</resourceURL>
</participant>
<participant>
<participantAddress>SIP:user5example.com</participantAddress>
<participantName>AliceE.Xample</participantName>
<participantStatus>ChatParticipantConnected</participantStatus>
<startTime>2010-06-28T17:51:51</startTime>
<resourceURL>
http://{serverRoot}/{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessions/{chatSessionId2}/p
articipants/{participantId5}
</resourceURL>
</participant>
<chatStatus>ChatBuilt</chatStatus>
<ChatMode>groupchat</ChatMode>
<subject>example2</subject>
<clientCorrelator>204567</clientCorrelator>
<resourceURL>http://{serverRoot}/{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessions/{ch
atSessionId2}</resourceURL>
</chatSession>
<resourceURL>http://{serverRoot}/{apiVersion}/Chat/Originating/SIP:user1example.com/chatSessions</re
sourceURL>
</chat:chatSessionList>
图4为综合上述实施例,客户端和服务器之间的聊天会话启动、获取聊天会话列表的操作示意流程图。
用户通过客户端向服务器请求启动聊天会话,携带会话主题;服务器启动创建新的聊天会话,并返回启动聊天会话响应,响应中携带新的聊天会话资源,并包含聊天会话标示符,包括如下步骤:
客户端生成启动聊天会话请求消息;
客户端向服务器发送启动聊天会话请求消息;
服务器收到启动聊天会话请求消息后,进行解析,启动聊天会话;
服务器生成启动聊天会话响应消息;
服务器向客户端返回启动聊天会话响应消息。
聊天会话建立成功后,用户聊天会话进行中;
用户通过客户端向服务器请求获取聊天会话列表;服务器获取聊天会话列表,并返回获取聊天会话列表响应给用户,包括如下步骤:
客户端生成获取聊天会话列表请求消息;
客户端向服务器发送获取聊天会话列表请求消息;
服务器收到获取聊天会话列表请求消息后,获取聊天会话列表;
服务器生成获取聊天会话列表响应消息;
服务器向客户端返回获取聊天会话列表响应消息。
上述各个消息的内容和生成方法请参见上文中的描述,不再重复。
本发明实施例的基于电信网络域提供的RESTAPI聊天会话启动的系统,包括:
客户端中的消息生成装置,用于生成启动聊天会话请求消息;
客户端中的消息发送装置,用于向服务器发送所述启动聊天会话请求消息;
服务器中的消息处理装置,用于在收到启动聊天会话请求消息后,进行解析,启动聊天会话;
服务器中的消息生成装置,用于生成启动聊天会话响应消息;
服务器中的消息发送装置,用于向所述客户端返回启动聊天会话响应消息。
其中,优选地,所述客户端中的消息生成装置又包括:
消息头生成子装置,用于以HTTP的布置(POST)动作为使用的动作,以源端参与者的所有聊天会话为使用的资源,生成消息头,其中,标示所述资源的URL中包含聊天会话的源端参与者用户标示符;
消息体生成子装置,用于根据聊天会话的主题、聊天会话的参与者、群组地址中的至少一种,生成聊天会话信息的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成启动聊天会话请求消息。
其中,优选地,所述服务器中的消息生成装置又包括:
消息头生成子装置,用于根据服务器路径、源端参与者用户标示符和聊天会话标示符生成所述输出聊天消息的资源URL,在HTTP表示“已建立”的响应符后添加用该资源URL表示的位置(Location)信息,生成消息头;
消息体生成子装置,用于根据聊天会话的资源URL、聊天会话标示符、一个或多个聊天会话的参与者信息、聊天会话的状态、聊天会话的模式中的至少一种,生成聊天会话信息的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成启动聊天会话响应消息。
本发明实施例的基于电信网络域提供的RESTAPI获取聊天会话列表的系统,包括:
客户端中的消息生成装置,用于生成获取聊天会话列表请求消息;
客户端中的消息发送装置,用于向服务器发送所述获取聊天会话列表请求消息;
服务器中的消息生成装置,用于在收到获取聊天会话列表请求消息后,生成获取聊天会话列表响应消息;
服务器中的消息发送装置,用于向所述客户端返回获取聊天会话列表响应消息。
其中,优选地,所述客户端中的消息生成装置又包括:
消息头生成子装置,用于以HTTP的获取(GET)动作为使用的动作,以源端参与者的所有聊天会话为使用的资源,生成消息头,其中,标示所述资源的URL中包含聊天会话的源端参与者用户标示符;
消息生成子装置,用于根据所述消息头生成获取聊天会话列表请求消息。
其中,优选地,所述服务器中的消息生成装置又包括:
消息头生成子装置,用于根据HTTP表示“成功”的响应符,生成消息头;
消息体生成子装置,用于根据聊天会话的资源URL、聊天会话标示符、聊天会话的参与者信息、聊天会话的状态、聊天会话的模式、聊天会话的主题中的至少一种,为每个聊天会话生成聊天会话信息的数据结构;以及,根据生成的一个或多个聊天会话信息的数据结构,以及源端参与者的聊天会话列表资源URL中的至少一种,生成聊天会话信息列表的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成获取聊天会话列表响应消息。
上述方案中,具体说明了聊天会话启动和获取聊天会话列表的开放电信能力接口,各个消息的内容即可以满足聊天会话业务的需要,又符合现有的开放电信能力的相关规范。大大方便了Web开发商、第三方开发者或业务提供商等以REST风格的API灵活地对服务器进行聊天会话启动和获取聊天会话列表的相关控制。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。