发明内容
有鉴于此,本发明的一个目的在于提供一种聊天会话发送输出消息的方法及系统,以解决用户不能调用电信能力来发送输出消息的问题。
为了解决上述问题,本发明提供了一种聊天会话发送输出消息的方法,该方法基于电信网络域提供的表象化状态转变(REST)应用编程接口(API)实现,包括:
客户端向服务器发送输出聊天消息的请求消息,消息中携带使用的动作和资源的信息,以及输出聊天消息的信息,所述资源用资源统一资源位置符(URL)标示;
所述服务器收到输出聊天消息的请求消息后,向所述客户端返回输出聊天消息的响应消息。
优选地,上述方法具有以下特点:
所述动作为HTTP的布置(POST)动作或设定(PUT)动作,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符和聊天会话标示符中的至少一种。
优选地,上述方法具有以下特点:
所述输出聊天消息的请求消息和/或输出聊天消息的响应消息的消息体使用的格式为可扩展标记语言(XML)或Java脚本对象符号(JSON)。
优选地,上述方法具有以下特点:
所述输出聊天消息的信息中包含以下信息中的至少一种:接收消息会话转播协议(MSRP)消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息。
优选地,上述方法具有以下特点:
当所述输出聊天消息的响应消息为成功时,所述输出聊天消息的响应消息包含以下信息中的至少一种:输出聊天消息的资源URI、输出聊天消息标示符、源端参与者用户标示符、聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息。
优选地,上述方法具有以下特点:
客户端发送输出聊天消息的请求消息之前,按以下方式生成所述请求消息:
以HTTP的布置(POST)动作或设定(PUT)动作为使用的动作,以所有输出聊天消息为使用的资源,生成消息头,其中,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符和/或聊天会话标示符;
根据接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,生成输出聊天消息的数据结构,作为消息体;
根据所述消息头和消息体生成输出聊天消息的请求消息。
优选地,上述方法具有以下特点:
所述客户端成功输出聊天消息,所述服务器返回输出聊天消息的响应消息之前,按以下方式生成所述响应消息;
根据服务器路径、源端参与者用户标示符和聊天会话标示符生成所述输出聊天消息的资源URL,在HTTP表示“已建立”的响应符后添加用该资源URL表示的位置(Location)信息,生成消息头;
根据聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,生成输出聊天消息的数据结构,作为消息体;
根据所述消息头和消息体生成输出聊天消息的响应消息。
为了解决上述问题,本发明提供了一种基于电信网络域提供的表象化状态转变(REST)应用编程接口(API)聊天会话发送输出消息的系统,包括:
客户端中的消息生成装置,用于生成输出聊天消息的请求消息;
客户端中的消息发送装置,用于向服务器发送所述输出聊天消息的请求消息;
服务器中的消息生成装置,用于在收到输出聊天消息的请求消息后,生成输出聊天消息的响应消息;
服务器中的消息发送装置,用于向所述客户端返回输出聊天消息的响应消息。
优选地,上述系统具有以下特点:
所述客户端中的消息生成装置又包括:
消息头生成子装置,用于以HTTP的布置(POST)动作或设定(PUT)动作为使用的动作,以所有输出聊天消息为使用的资源,生成消息头,其中,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符和/或聊天会话标示符;
消息体生成子装置,用于根据接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,生成输出聊天消息的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成输出聊天消息的请求消息。
优选地,上述系统具有以下特点:
所述服务器中的消息生成装置又包括:
消息头生成子装置,用于根据服务器路径、源端参与者用户标示符和聊天会话标示符生成所述输出聊天消息的资源URL,在HTTP表示“已建立”的响应符后添加用该资源URL表示的位置(Location)信息,生成消息头;
消息体生成子装置,用于根据聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,生成输出聊天消息的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成输出聊天消息的响应消息。
本发明大大方便了Web开发商、第三方开发者或业务提供商等以REST风格的API灵活地对即时消息业务引擎进行聊天会话发送输出消息的相关控制。本发明所适用的用户可以是基于互联网服务、WEB服务的任何有控制权限的即时消息参与者。
有鉴于此,本发明的一个目的在于提供一种获取输出消息列表的方法及系统,以解决用户不能调用电信能力获取聊天会话的输出消息列表的问题。
为了解决上述问题,本发明提供了一种获取输出消息列表的方法,该方法基于电信网络域提供的表象化状态转变(REST)应用编程接口(API)实现,包括:
客户端向服务器发送获取输出聊天消息列表的请求消息,携带使用的动作和资源的信息,所述资源用资源统一资源位置符(URL)标示;
所述服务器收到获取输出聊天消息列表的请求消息后,向所述客户端返回获取输出聊天消息列表的响应消息,携带一个或多个输出聊天消息。
优选地,上述方法具有以下特点:
所述动作为超文本转换协议(HTTP)的获取(GET)动作,标示所述资源的URL中包含聊天会话的源端参与者用户标示符和聊天会话标示符中的至少一种。
优选地,上述方法具有以下特点:
所述获取输出聊天消息列表的响应消息的消息体使用的格式为可扩展标记语言(XML)或Java脚本对象符号(JSON)。
优选地,上述方法具有以下特点:
所述输出聊天消息中包含以下信息中的至少一种:输出聊天消息的资源URL、输出聊天消息标示符、源端参与者用户标示符、聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息。
优选地,上述方法具有以下特点:
客户端发送获取输出聊天消息列表的请求消息之前,按以下方式生成所述请求消息:
以HTTP的获取(GET)动作为使用的动作,以所有输出聊天消息为使用的资源,生成消息头,其中,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符和/或聊天会话标示符;
根据所述消息头生成获取输出聊天消息列表的请求消息。
优选地,上述方法具有以下特点:
所述服务器成功输出聊天消息列表,所述服务器返回获取输出聊天消息列表的响应消息之前,按以下方式生成所述响应消息;
根据HTTP表示“成功”的响应符,生成消息头;
根据输出聊天消息的资源URL、输出聊天消息标示符、源端参与者用户标示符、聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,为每个输出聊天消息生成输出聊天消息的数据结构;
根据生成的一个或多个输出聊天消息信息的数据结构生成输出聊天消息列表信息的数据结构,作为消息体;
根据所述消息头和消息体生成获取输出聊天消息列表的响应消息。
为了解决上述问题,本发明提供了一种基于电信网络域提供的表象化状态转变(REST)应用编程接口(API)获取输出消息列表的系统,包括:
客户端中的消息生成装置,用于生成获取输出聊天消息列表的请求消息;
客户端中的消息发送装置,用于向服务器发送所述获取输出聊天消息列表的请求消息;
服务器中的消息生成装置,用于在收到获取输出聊天消息列表的请求消息后,生成获取输出聊天消息列表的响应消息;
服务器中的消息发送装置,用于向所述客户端返回获取输出聊天消息列表的响应消息。
优选地,上述系统具有以下特点:
所述客户端中的消息生成装置又包括:
消息头生成子装置,用于以HTTP的获取(GET)动作为使用的动作,以所有输出聊天消息为使用的资源,生成消息头,其中,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符和/或聊天会话标示符;
消息生成子装置,用于根据所述消息头生成获取输出聊天消息列表的请求消息。
优选地,上述系统具有以下特点:
所述服务器中的消息生成装置又包括:
消息头生成子装置,用于根据HTTP表示“成功”的响应符,生成消息头;
消息体生成子装置,用于根据输出聊天消息的资源URL、输出聊天消息标示符、源端参与者用户标示符、聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,为每个输出聊天消息生成输出聊天消息的数据结构;以及,根据生成的一个或多个输出聊天消息信息的数据结构,以及输出聊天消息列表信息资源URL中的至少一种,生成输出聊天消息列表信息的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成输出获取输出聊天消息列表的响应消息。
本发明大大方便了Web开发商、第三方开发者或业务提供商等以REST风格的API灵活地对即时消息业务引擎进行聊天会话获取输出消息列表的相关控制。本发明所适用的用户可以是基于互联网服务、WEB服务的任何有控制权限的即时消息参与者。
有鉴于此,本发明的一个目的在于提供一种获取输出消息的方法及系统,以解决用户不能调用电信能力获取聊天会话的输出消息的问题。
为了解决上述问题,本发明提供了一种获取输出消息的方法,该方法基于电信网络域提供的表象化状态转变(REST)应用编程接口(API)实现,包括:
客户端向服务器发送获取输出聊天消息的请求消息,携带使用的动作和资源的信息,所述资源用资源统一资源位置符(URL)标示;
所述服务器收到获取输出聊天消息的请求消息后,向所述客户端返回获取输出聊天消息的响应消息,携带输出聊天消息的信息。
优选地,上述方法具有以下特点:
所述动作为HTTP的获取(GET)动作,标示所述资源的URL中包含聊天会话的源端参与者用户标示符、聊天会话标示符和输出聊天消息标示符中的至少一种。
优选地,上述方法具有以下特点:
所述获取输出聊天消息的响应消息的消息体使用的格式为可扩展标记语言(XML)或Java脚本对象符号(JSON)。
优选地,上述方法具有以下特点:
当所述获取输出聊天消息的响应消息为成功时,所述输出聊天消息的信息包含以下信息中的至少一种:输出聊天消息的资源URL、输出聊天消息标示符、源端参与者用户标示符、聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息。
优选地,上述方法具有以下特点:
客户端发送获取输出聊天消息的请求消息之前,按以下方式生成所述请求消息:
以HTTP的获取(GET)动作为使用的动作,以输出聊天消息为使用的资源,生成消息头,其中,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符、聊天会话标示符和输出聊天消息标示符中的至少一种;
根据所述消息头生成获取输出聊天消息的请求消息。
优选地,上述方法具有以下特点:
所述服务器成功输出聊天消息,所述服务器返回获取输出聊天消息的响应消息之前,按以下方式生成所述响应消息;
根据HTTP表示“成功”的响应符,生成消息头;
根据输出聊天消息的资源URL、输出聊天消息标示符、源端参与者用户标示符、聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,生成输出聊天消息的数据结构,作为消息体;
根据所述消息头和消息体生成获取输出聊天消息的响应消息。
为了解决上述问题,本发明提供了一种基于电信网络域提供的表象化状态转变(REST)应用编程接口(API)获取输出消息的系统,包括:
客户端中的消息生成装置,用于生成获取输出聊天消息的请求消息;
客户端中的消息发送装置,用于向服务器发送所述获取输出聊天消息的请求消息;
服务器中的消息生成装置,用于在收到获取输出聊天消息的请求消息后,生成获取输出聊天消息的响应消息;
服务器中的消息发送装置,用于向所述客户端返回获取输出聊天消息的响应消息。
优选地,上述系统具有以下特点:
所述客户端中的消息生成装置又包括:
消息头生成子装置,用于以HTTP的获取(GET)动作为使用的动作,以输出聊天消息为使用的资源,生成消息头,其中,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符、聊天会话标示符和输出聊天消息标示符中的至少一种;
消息生成子装置,用于根据所述消息头生成获取输出聊天消息的请求消息。
优选地,上述系统具有以下特点:
所述服务器中的消息生成装置又包括:
消息头生成子装置,用于根据HTTP表示“成功”的响应符,生成消息头;
消息体生成子装置,用于根据输出聊天消息的资源URL、输出聊天消息标示符、源端参与者用户标示符、聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,生成输出聊天消息的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成输出获取输出聊天消息的响应消息。
本发明大大方便了Web开发商、第三方开发者或业务提供商等以REST风格的API灵活地对即时消息业务引擎进行聊天会话获取输出消息的相关控制。本发明所适用的用户可以是基于互联网服务、WEB服务的任何有控制权限的即时消息参与者。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
实施例一
图1示出了本实施例开放电信能力接口的系统结构。如图所示,电信网络域包含IMS核心网和业务层,业务层包含短信业务服务器、彩信业务服务器、聊天会话业务服务器以及其他业务服务器等各种业务网络设备,但是,一种服务器也可以用于多种业务。这些服务器向Web开发商、第三方开发者、业务提供商等提供开放的REST API,Web开发商、第三方开发者、业务提供商等用户的客户端可以使用REST API访问电信网络域,调用电信网络域的RCS业务能力和IMS网络能力,实现电信业务的Web 2.0Widget轻量级应用与Mashup的开发。
本实施例中,Web开发商、第三方开发者、业务提供商等用户开发的应用程序可以通过客户端,使用本实施例提供的REST API对聊天会话业务服务器进行聊天会话发送输出消息、获取输出消息列表、获取输出消息的相关控制;各实施例中的服务器均可以为聊天会话业务服务器,如电信网络域中的即时消息业务引擎。客户端可以位于业务提供商的网络设备中,也可以位于终端用户设备如移动终端、固定终端等中。本发明适用的用户也不限于上述类型,可以是基于互联网服务、WEB服务的任何有控制权限的聊天会话参与者。
另外,在本文中,输出聊天消息,有时简称为输出消息,输出聊天消息列表简称为输出消息列表。
本实施例中REST API使用的资源、动作和数据结构的相关定义如下:
统一资源位置符(URL)中,serverRoot表示服务器路径URI,apiVersion表示API版本,Chat表示聊天会话,Originating表示源端,OriginatingID表示源端参与者的标示符。
上述REST API使用的数据结构类型定义如下:
数据结构类型Type:OutboundChatMessageList输出聊天消息列表信息
数据结构类型Type:outboundChatMessage输出聊天消息
数据结构类型Type:OutboundTextmessage输出文本消息
数据结构类型Type:OutboundIsComposing输出提示消息
数据结构类型Type:IsComposing提示
数据结构类型Type:OutboundMMMessage输出多媒体消息
数据结构类型Type:OutboundGroupmessage输出群组消息
图2为本实施例基于REST API聊天会话发送输出消息的方法流程图,包括以下步骤:
步骤S201:客户端向服务器发送输出聊天消息的请求消息,消息中携带使用的动作和资源的信息,以及输出聊天消息的信息,所述资源用资源统一资源位置符(URL)标示;
本实施例的输出聊天消息的请求消息中,消息头中包括使用的动作、资源,消息体中包括输出聊天消息的数据结构。
其中,所述动作为HTTP的布置(POST)动作或设定(PUT)动作,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符和聊天会话标示符中的至少一种。
客户端可以通过以下方式生成该消息:
以HTTP的布置(POST)动作或设定(PUT)动作为使用的动作,以所有输出聊天消息为使用的资源,生成消息头,其中,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符和/或聊天会话标示符;
根据接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,生成输出聊天消息的数据结构,作为消息体;
根据所述消息头和消息体生成输出聊天消息的请求消息。
各实施例涉及的几个消息中的消息体,也可以采用XML,也可以采用其他专用格式如Java脚本对象符号(JSON)。
下面用一个示例来说明一下生成的输出聊天消息的请求消息。
假定源端参与者为用户Peter E.Xample(SIP:user2example.com),聊天会话为{chatSessionId1},该用户向Max Muster(SIP:user1example.com)发送输出消息。
POST.../{apiVersion}/Chat/Originating/SIP:user2example.com/chatSessions/{chatSessionId1}/outbound/messages HTTP/1.1
Content-Type:application/xml
Accept:application/xml
Content-Length:1234
Host:example.com:80
<?xml version=″1.0″?>
<chat:OutboundchatMessage xmlns:chat=″urn:oma:xml:rest:chat:1″>
<To-Path>msrp://Server.example.com:4000/tG6RepzIl5tH;tcp</To-Path>
<From-Path>msrp://Peter E.Xample.example.com:7575/u3978ae283wzd;tcp</From-Path>
<Byte-Range>1-5/5</Byte-Range>
<Success-Report>no</Success-Report>
<Failure-Report>yes</Failure-Report>
<OutboundTextmessage>
<message>hello</message>
</OutboundTextmessage>
<clientCorrelator>567895</clientCorrelator>
</chat:OutboundchatMessage>
步骤S202:服务器向客户端返回输出聊天消息的响应消息。
客户端成功输出聊天消息,所述服务器返回输出聊天消息的响应消息之前,可以按以下方式生成所述响应消息;
根据服务器路径、源端参与者用户标示符和聊天会话标示符生成所述输出聊天消息的资源URL,在HTTP表示“已建立”的响应符后添加用该资源URL表示的位置(Location)信息,生成消息头;
根据聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,生成输出聊天消息的数据结构,作为消息体;
根据所述消息头和消息体生成输出聊天消息的响应消息。
下面以发送输出消息成功,消息标示符为{messageId1}为例进行说明。
HTTP/1.1201Created
Content-Type:application/xml
Location:http://{serverRoot}/./{apiVersion}/Chat/Originating/SIP:user2example.com/chatSessions/{chatSessionId1}/outbound/messages/{messageId1}
Content-Length:254
Date:Thu,04 Jun 2009 02:51:59 GMT
<?xml version=″1.0″encoding=″UTF-8″?>
<chat:OutboundchatMessage xmlns:chat=″urn:oma:xml:rest:chat:1″>
<To-Path>msrp://Server.example.com:4000/tG6RepzIl5tH;tcp</To-Path>
<From-Path>msrp://Peter E.Xample.example.com:7575/u3978ae283wzd;tcp</From-Path>
<Byte-Range>1-5/5</Byte-Range>
<Success-Report>no</Success-Report>
<Failure-Report>yes</Failure-Report>
<OutboundTextmessage>
<message>hello</message>
</OutboundTextmessage>
<resourceURL>http://{serverRoot}/./{apiVersion}/Chat/Originating/SIP:user2example.com/chatSessions/{chatSessionId1}/outbound/messages/{messageId1}</resourceURL>
</chat:OutboundchatMessage>
实施例二
本实施例是基于电信网络域提供的REST API获取输出消息列表的实施例,所基于的系统与实施例一相同,资源、动作和数据结构的相关定义请参照实施例一中的说明。
图3为本实施例基于REST API获取输出消息列表的流程图,包括以下步骤:
步骤S301:客户端向服务器发送获取输出聊天消息列表的请求消息,携带使用的动作和资源的信息,所述资源用资源统一资源位置符(URL)标示;
本实施例的获取输出聊天消息列表的请求消息中,消息头中包括使用的动作和资源,可以不携带消息体。
所述动作为超文本转换协议(HTTP)的获取(GET)动作,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符和聊天会话标示符中的至少一种。
客户端可以通过以下方式生成该消息:
以HTTP的获取(GET)动作为使用的动作,以所有输出聊天消息为使用的资源,生成消息头,其中,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符和/或聊天会话标示符;
根据所述消息头生成获取输出聊天消息列表的请求消息。
下面用一个示例来说明一下生成的获取输出聊天消息列表的请求消息。
假定源端参与者为用户Peter E.Xample(SIP:user2example.com),聊天会话为{chatSessionId1}。
以下为获取输出聊天消息列表的请求消息的示例:
GET.../{apiVersion}/Chat/Originating/SIP:user2example.com/chatSessions/{chatSessionId1}/outbound/messages HTTP/1.1
Accept:application/xml
Host:example.com:80
步骤S302:服务器向客户端返回获取输出聊天消息列表的响应消息,携带一个或多个输出聊天消息。
所述服务器成功输出聊天消息列表,所述服务器返回获取输出聊天消息列表的响应消息之前,可以按以下方式生成所述响应消息;
根据HTTP表示“成功”的响应符,生成消息头;
根据输出聊天消息的资源URL、输出聊天消息标示符、源端参与者用户标示符、聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,为每个输出聊天消息生成输出聊天消息的数据结构;
根据生成的一个或多个输出聊天消息信息的数据结构生成输出聊天消息列表信息的数据结构,作为消息体;
根据所述消息头和消息体生成获取输出聊天消息列表的响应消息。
以下为用户Peter E.Xample(SIP:user2example.com)获取输出消息列表成功,有1个消息,消息标示符为{messageId1}的示例:
HTTP/1.1200OK
Content-Type:application/xml
Date:Thu,04Jun 200902:51:59GMT
<?xml version=″1.0″encoding=″UTF-8″?>
<chat:OutboundchatMessageList xmlns:chat=″urn:oma:xml:rest:chat:1″>
<OutboundchatMessage>
<To-Path>msrp://Server.example.com:4000/tG6RepzIl5tH;tcp</To-Path>
<From-Path>msrp://Peter E.Xample.example.com:7575/u3978ae283wzd;tcp</From-Path>
<Success-Report>no</Success-Report>
<Failure-Report>yes</Failure-Report>
<OutboundTextmessage>
<message>hello</message>
</OutboundTextmessage>
<resourceURL>http://{serverRoot}/./{apiVersion}/Chat/Originating/SIP:user2example.com/chatSessions/{chatSessionId1}/outbound/messages/{messageId1}</resourceURL>
</OutboundchatMessage>
<OutboundchatMessage>
<To-Path>msrp://Server.example.com:4000/tG6RepzIl5tH;tcp</To-Path>
<From-Path>msrp://Peter E.Xample.example.com:7575/u3978ae283wzd;tcp</From-Path>
<Success-Report>no</Success-Report>
<Failure-Report>yes</Failure-Report>
<OutboundIsComposing>
<CPIM to>SIP:user1example.com</CPIM to>
<CPIM from>SIP:user2example.com</CPIM from>
<iscomposing>
<state>Active</state>
<contenttype>text/plain</contenttype>
<refresh>120</refresh>
</iscomposing>
</OutboundIsComposing>
<resourceURL>http://{serverRoot}/./{apiVersion}/Chat/Originating/SIP:user2example.com/chatSessions/{chatSessionId1}/outbound/messages/{messageId2}</resourceURL>
</OutboundchatMessage>
<OutboundchatMessage>
<To-Path>msrp://Server.example.com:4000/tG6RepzIl5tH;tcp</To-Path>
<From-Path>msrp://Peter E.Xample.example.com:7575/u3978ae283wzd;tcp</From-Path>
<Success-Report>no</Success-Report>
<Failure-Report>yes</Failure-Report>
<OutboundMMMessage>
<CPIM to>SIP:user1example.com</CPIM to>
<CPIM from>SIP:user2example.com</CPIM from>
<bodyText>My cool picture</bodyText>
</OutboundMMMessage>
<resourceURL>http://{serverRoot}/./{apiVersion}/Chat/Originating/SIP:user2example.com/chatSessions/{chatSessionId1}/outbound/messages/{messageId3}</resourceURL>
</OutboundchatMessage>
<resourceURL>http://{serverRoot}/./{apiVersion}/Chat/Originating/SIP:user2example.com/chatSessions/{chatSessionId1}/outbound/messages</resourceURL>
</chat:OutboundchatMessageList>
实施例三
本实施例是基于电信网络域提供的REST API获取输出消息的实施例,所基于的系统与实施例一相同,资源、动作和数据结构的相关定义请参照实施例一中的说明。
图4为本实施例基于REST API获取输出消息的流程图,包括以下步骤:
步骤S401:客户端向服务器发送获取输出聊天消息的请求消息,携带使用的动作和资源的信息,所述资源用资源统一资源位置符(URL)标示;
本实施例的获取输出聊天消息的请求消息中,消息头中包括使用的动作和资源,可以不携带消息体。
其中,所述动作为HTTP的获取(GET)动作,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符、聊天会话标示符和输出聊天消息标示符中的至少一种。
客户端可以通过以下方式生成该消息:
以HTTP的获取(GET)动作为使用的动作,以输出聊天消息为使用的资源,生成消息头,其中,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符、聊天会话标示符和输出聊天消息标示符中的至少一种;
根据所述消息头生成获取输出聊天消息的请求消息。
下面用一个示例来说明一下生成的获取输出聊天消息的请求消息。
假定源端参与者为用户Peter E.Xample(SIP:user2example.com),聊天会话为{chatSessionId1},该请求为获取该用户聊天会话中的输出消息{messageId3}。
GET.../{apiVersion}/Chat/Originating/SIP:user2example.com/chatSessions/{chatSessionId1}/outbound/messages/{messageId3}HTTP/1.1
Accept:application/xml
Host:example.com:80
步骤S402:服务器向客户端返回获取输出聊天消息的响应消息,携带输出聊天消息的信息。
所述服务器成功输出聊天消息,所述服务器返回获取输出聊天消息的响应消息之前,按以下方式生成所述响应消息;
根据HTTP表示“成功”的响应符,生成消息头;
根据输出聊天消息的资源URL、输出聊天消息标示符、源端参与者用户标示符、聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,生成输出聊天消息的数据结构,作为消息体;
根据所述消息头和消息体生成获取输出聊天消息的响应消息。
以下为获取输出消息成功的示例:
HTTP/1.1200 OK
Content-Type:multipart/form-data;boundary=″===============123456==″;
Host:example.com:80
MIME-Version:1.0
--===============123456==
Content-Disposition:multipart/form-data;name=”root-fields”
Content-Type:application/xml;charset=″utf-8″
Content-Length:nnnn
<?xml version=″1.0″?>
<chat:OutboundchatMessage xmlns:chat=″urn:oma:xml:rest:chat:1″>
<To-Path>msrp://Server.example.com:4000/tG6RepzIl5tH;tcp</To-Path>
<From-Path>msrp://Peter E.Xample.example.com:7575/u3978ae283wzd;tcp</From-Path>
<Success-Report>no</Success-Report>
<Failure-Report>yes</Failure-Report>
<OutboundMMMessage>
<CPIM to>SIP:user1example.com</CPIM to>
<CPIM from>SIP:user2example.com</CPIM from>
<bodyText>My cool picture</bodyText>
</OutboundMMMessage>
<clientCorrelator>567897</clientCorrelator>
<resourceURL>
http://{serverRoot}/./{apiVersion}/Chat/Originating/SIP:user2example.com/chatSessions/{chatSessionId1}/outbound/messages/{messageId3}</resourceURL>
</chat:OutboundchatMessage>
--===============123456==
Content-Disposition:attachement;filename=”My cool picture.jpg”;creation-date=”Mon,15May 201015:01:31+0300;size=4092
Content-Type:image/jpeg;charset=utf-8
GIF89a...binary image data...
--===============123456==--
图5为综合上述实施例,客户端和服务器之间的聊天会话发送输出消息、获取输出消息列表、获取输出消息的操作示意流程图。
用户聊天会话进行中;
之后,用户通过客户端向服务器请求发送输出消息,包括如下步骤:
客户端生成输出聊天消息的请求消息;
客户端向服务器发送输出聊天消息的请求消息;
服务器收到输出聊天消息的请求消息后,生成输出聊天消息的响应消息;
服务器向客户端返回输出聊天消息的响应消息。
之后,用户通过客户端向服务器请求获取输出消息列表,包括如下步骤:
客户端生成获取输出聊天消息列表的请求消息;
客户端向服务器发送获取输出聊天消息列表的请求消息;
服务器收到获取输出聊天消息列表的请求消息后,生成输出聊天消息列表的响应消息;
服务器向客户端返回获取输出聊天消息列表的响应消息。
之后,用户通过客户端向服务器请求获取输出消息,包括如下步骤:
客户端生成获取输出聊天消息的请求消息;
客户端向服务器发送获取输出聊天消息的请求消息;
服务器收到获取输出聊天消息的请求消息后,生成输出聊天消息的响应消息;
服务器向客户端返回获取输出聊天消息的响应消息。
上述各个消息的内容和生成方法请参见上文中的描述,不再重复。
相应地,本发明实施例的基于电信网络域提供的REST API聊天会话发送输出消息的系统,包括:
客户端中的消息生成装置,用于生成输出聊天消息的请求消息;
客户端中的消息发送装置,用于向服务器发送所述输出聊天消息的请求消息;
服务器中的消息生成装置,用于在收到输出聊天消息的请求消息后,生成输出聊天消息的响应消息;
服务器中的消息发送装置,用于向所述客户端返回输出聊天消息的响应消息。
其中,优选地,所述客户端中的消息生成装置又包括:
消息头生成子装置,用于以HTTP的布置(POST)动作或设定(PUT)动作为使用的动作,以所有输出聊天消息为使用的资源,生成消息头,其中,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符和/或聊天会话标示符;
消息体生成子装置,用于根据接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,生成输出聊天消息的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成输出聊天消息的请求消息。
其中,优选地,所述服务器中的消息生成装置又包括:
消息头生成子装置,用于根据服务器路径、源端参与者用户标示符和聊天会话标示符生成所述输出聊天消息的资源URL,在HTTP表示“已建立”的响应符后添加用该资源URL表示的位置(Location)信息,生成消息头;
消息体生成子装置,用于根据聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,生成输出聊天消息的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成输出聊天消息的响应消息。
本发明实施例的基于电信网络域提供的REST API获取输出消息列表的系统,包括:
客户端中的消息生成装置,用于生成获取输出聊天消息列表的请求消息;
客户端中的消息发送装置,用于向服务器发送所述获取输出聊天消息列表的请求消息;
服务器中的消息生成装置,用于在收到获取输出聊天消息列表的请求消息后,生成获取输出聊天消息列表的响应消息;
服务器中的消息发送装置,用于向所述客户端返回获取输出聊天消息列表的响应消息。
其中,优选地,所述客户端中的消息生成装置又包括:
消息头生成子装置,用于以HTTP的获取(GET)动作为使用的动作,以所有输出聊天消息为使用的资源,生成消息头,其中,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符和/或聊天会话标示符;
消息生成子装置,用于根据所述消息头生成获取输出聊天消息列表的请求消息。
其中,优选地,所述服务器中的消息生成装置又包括:
消息头生成子装置,用于根据HTTP表示“成功”的响应符,生成消息头;
消息体生成子装置,用于根据输出聊天消息的资源URL、输出聊天消息标示符、源端参与者用户标示符、聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,为每个输出聊天消息生成输出聊天消息的数据结构;以及,根据生成的一个或多个输出聊天消息信息的数据结构,以及输出聊天消息列表信息资源URL中的至少一种,生成输出聊天消息列表信息的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成输出获取输出聊天消息列表的响应消息。
本发明实施例的基于电信网络域提供的REST API获取输出消息的系统,包括:
客户端中的消息生成装置,用于生成获取输出聊天消息的请求消息;
客户端中的消息发送装置,用于向服务器发送所述获取输出聊天消息的请求消息;
服务器中的消息生成装置,用于在收到获取输出聊天消息的请求消息后,生成获取输出聊天消息的响应消息;
服务器中的消息发送装置,用于向所述客户端返回获取输出聊天消息的响应消息。
其中,优选地,所述客户端中的消息生成装置又包括:
消息头生成子装置,用于以HTTP的获取(GET)动作为使用的动作,以输出聊天消息为使用的资源,生成消息头,其中,标示所述资源的资源URL中包含聊天会话的源端参与者用户标示符、聊天会话标示符和输出聊天消息标示符中的至少一种;
消息生成子装置,用于根据所述消息头生成获取输出聊天消息的请求消息。
其中,优选地,所述服务器中的消息生成装置又包括:
消息头生成子装置,用于根据HTTP表示“成功”的响应符,生成消息头;
消息体生成子装置,用于根据输出聊天消息的资源URL、输出聊天消息标示符、源端参与者用户标示符、聊天会话标示符、接收MSRP消息的路径、发送MSRP消息的路径、字节范围、成功报告、失败报告、输出文本消息、输出提示消息、输出多媒体消息、输出群组消息中的至少一种,生成输出聊天消息的数据结构,作为消息体;
消息生成子装置,用于根据所述消息头和消息体生成输出获取输出聊天消息的响应消息。
上述方案中,具体说明了发送输出消息、获取输出消息列表和获取输出消息的开放电信能力接口,各个消息的内容即可以满足聊天会话业务的需要,又符合现有的开放电信能力的相关规范。大大方便了Web开发商、第三方开发者或业务提供商等以REST风格的API灵活地对服务器进行聊天会话发送输出消息、获取输出消息列表、获取输出消息的相关控制。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。