专利名称:管理会话的方法、通用消息客户端及服务器的制作方法
技术领域:
本发明涉及无线通信领域,尤其涉及一种在通用消息系统中管理会话的技术。
背景技术:
目前在无线通信网络上存在多种消息系统,如短信、彩信、Email、即时消息(IM)等,为了提高用户消息通信的易用性和通用性,通用消息系统平台应运而生,它可以统一管理用户的消息通信,用户只需维护一个通讯录、使用一种消息编辑和阅读的界面,使用户能更方便的使用消息通信。通用消息系统平台的架构如说明书附图的图1所示通用消息系统由客户端和服务器两部分组成。客户端存在于终端中,服务器设置在网络内,该终端可以是无线移动终端(如手机),也可以是固定终端(如PC),它是一个可以接入IP网络的设备。该网络是一个基于IP的网络。终端和该网络间可以间隔多种中间网络,如无线移动网络,或企业内部网,或家庭局域网。专用消息客户端以及专用消息系统服务器是现有或者未来出现的专用消息服务实体,如短信(SMS)客户端和短信服务器,或即时消息(IM)客户端和IM服务器。
在通用消息终端内,通用消息客户端将消息的内容和收件人、发件人地址传送给专用消息客户端,由专用消息客户端生成一条专用消息,然后由通用消息客户端将这条消息加上通用消息封装后,完成通用消息的生成工作。
当通用消息客户端收到一条通用消息时,它将通用消息去除通用消息封装,然后将里面包裹的专用消息送到专用消息客户端解析,专用消息客户端将消息内容和发件人地址再返回给通用消息客户端,由通用消息客户端显示给用户。
通用消息终端通过通用消息服务器来完成互相之间的通信。通用消息服务器在收到通用消息时,在转发这条消息之前它有两种方式来处理这条消息。一是收到消息后,完成处理,直接转发给接收端。二是收到消息后,通过消息投递单元发送给专用消息系统服务器,由专用消息系统服务器完成该专用消息的处理后再返回给通用消息服务器,通用消息服务器再将该消息发送给接收端。
通用消息系统支持通用消息终端在会话进行中更换终端或新的终端加入会话,通用消息用户在更换终端之前或之后,将更换后终端的通信方式通过服务器发送给通信对方,以实现通信的继续,但是现有技术中存在有如下缺点用户在更换终端后不能有选择的继续已有的通信,且没有过往通信的历史记录,相应的,当有新的终端加入会话时,也不能通过获取已有的通信的历史纪录选择与已有的通信方进行会话。
发明内容
本发明所要解决的技术问题在于,提供一种通用消息服务器、通用消息客户端,以及一种管理会话的方法,使得有新的终端加入会话或用户在更换终端的过程中,能够选择继承的会话以及中止的会话,并为新加入的终端或者更换后的终端提供会话记录。
为了解决上述技术问题,本发明提出了一种管理会话方法,包括a、为当前的会话生成主会话标识,并存储包含所述主会话标识的会话记录;b、发送与所述主会话标识对应的通信方建立会话的会话请求消息;c、根据所述会话请求消息,查找主会话标识,并建立与所述主会话标识对应的通信方的会话。
相应的,本发明还提供了一种通用消息客户端,主要包括会话标识管理模块,用于生成通信双方的主会话标识,并存储会话标识记录;消息标识管理模块,用于在通信双方会话过程中生成与主会话标识对应的消息标识,并存储所述消息标识;对外通信模块,用于与通用消息服务器之间进行会话标识记录的传输。
相应的,本发明还提供了一种通用消息服务器,主要包括会话标识管理模块,用于生成通信双方的主会话标识,并存储会话标识记录;消息标识管理模块,用于在通信双方会话过程中生成与主会话标识对应的消息标识并存储;
对外通信模块,用于与通用消息客户端之间进行会话标识记录的传输。
实施本发明,具有如下有益效果首先,在有通信方发起会话时,通过为通信双方建立主会话标识,在通信双方的会话过程中,伴随每一条消息产生消息标识,并在通用消息系统的客户端和服务器上同时存储包含主会话标识的会话标识记录及每一条消息的消息标识,使得当出现新的终端加入会话或更换终端的情况时,可以通过对主会话标识的获取、选择,建立通信双方的会话。
图1是现有的通用消息系统结构示意图;图2是本发明通用消息客户端实施例结构示意图;图3是本发明通用消息服务器实施例结构示意图;图4是本发明的产生主会话标识的第一实施例的方法流程图;图5是本发明的产生主会话标识的第二实施例的方法流程图;图6是本发明客户端与服务器进行消息标识传输的方法的第一实施例的流程示意图;图7是本发明客户端与服务器进行消息标识传输的方法的第二实施例的流程示意图;图8是本发明管理会话的第一和第二实施例的方法流程示意图;图9是本发明管理会话的第三实施例的方法流程示意图。
具体实施例方式
本发明的实施例在于用消息标识来标记通信双方会话过程中的消息,将消息标识存储在通用消息系统的服务器和客户端,同时服务器和客户端还存储会话标识记录,使得有新的终端加入会话或者用户在会话过程中更换终端的情况下,可以选择继续的会话以及中止的会话,并提供会话记录。
参见图2,是本发明的通用消息客户端实施例的结构示意图。
本发明提供的通用消息客户端1具体包括消息处理单元10、对外通信单元11、消息显示单元12、消息内容获取单元13、消息投递单元14和通讯录15。
与现有技术不同的是,本发明的消息处理单元10还包括
会话标识管理模块100,用于生成通信双方的主会话标识,并存储会话标识记录;消息标识管理模块101,用于在通信双方会话过程中生成与主会话标识对应的消息标识,并存储所述消息标识;其中,会话标识管理模块100包括主会话标识生成子模块1000,用于在本通用消息系统的客户端向通信对方发起会话时,生成它们之间的主会话标识;会话标识记录1001,用于记录由主会话标识生成单元所生成的通信双方的主会话标识内容,其内容如下所示
其中,消息标识管理模块101包括消息标识生成子模块1010,用于本通用消息系统的客户端向服务器发送每条消息时,生成一个消息标识;消息标识存储子模块1011,用于存储通信双方在会话过程中的每条消息的消息标识,其内容如下表所示
其中,主会话标识用于区分与其它的会话,如主会话标识用于区分其它的会话,如Bob与Alice进行一个会话,与Mary进行另一个会话,这两个会话必须使用不同的主会话标识;当前序列号用于区分当前会话的序列,它在会话过程中,随着发送消息的次数递增。该值可以有一个上限,当序列号计数到最大值时,再次递增为最小值。如主会话序列号为8bit,则当计数到255时,下一条消息序列号设置为0;会话消息类型用于表示会话使用的消息类型;
消息标识还可包含时间信息,表示该消息标识产生或发送的时间。
本发明的对外通信模块11用于与通用消息服务器之间进行通信,具体包括当通信双方的主会话标识由本通用消息客户端1来建立时,对外通信模块11将主会话标识通过消息标识发送到通用消息服务器;当通信双方的主会话标识由通用消息服务器来建立时,对外通信模块11首先向通用消息服务器发起主会话标识建立请求消息,并接收来自通用消息服务器的返回的会话标识记录;当通用消息客户端更换为专用消息终端时,作为更换前的通用消息客户端的对外通信模块11用于向通用消息服务器发送更换后的专用消息终端的通信地址信息;当做为发起会话请求的通用消息客户端,其对外通信模块11用于向通用消息服务器发送登陆请求消息以获取会话标识记录,并接收来自通用消息服务器的登陆响应消息,以及向通用消息服务器发送会话更新消息,并接收返回的会话标识记录。
需要说明的是,本发明的通用消息客户端的会话标识管理模块100和消息标识管理模块101也可以直接和消息处理单元10相连,其功能与上述功能相同。
参见图3,是本发明通用消息服务器实施例的结构示意图;本发明提供的通用消息服务器包括消息处理单元20、对外通信单元21、用户信息处理单元22、消息投递单元23,消息转换单元24。
与现有技术不同的是,本发明的消息处理单元20具体还包括会话标识管理模块200,用于生成通信双方的主会话标识,并存储会话标识记录;消息标识管理模块201,用于在通信双方会话过程中生成与主会话标识对应的消息标识,并存储的所述消息标识;其中,会话标识管理模块200包括主会话标识生成子模块2000,用于在专用消息系统的客户端向通信对方发起会话时,根据通信对方通用消息系统用户的用户标识生成它们之间的主会话标识;或用于为通信双方统一分配主会话标识;会话标识记录2001,用于记录由主会话标识生成单元所生成的通信双方的主会话标识内容,其内容如下表所示
其中,消息标识管理模块201包括消息标识生成子模块2010,用于向客户端发送每条消息时,生成一个消息标识;消息标识存储子模块2011,用于存储通信双方在会话过程中的每条消息的消息标识,其内容如下表所示
其中,如主会话标识用于区分其它的会话,如Bob与Alice进行一个会话,与Mary进行另一个会话,这两个会话必须使用不同的主会话标识;当前序列号用于区分当前会话的序列,它在会话过程中,随着发送消息的次数递增。该值可以有一个上限,当序列号计数到最大值时,再次递增为最小值。如主会话序列号为8bit,则当计数到255时,下一条消息序列号设置为0;会话消息类型用于表示会话使用的消息类型;消息标识还可包含时间信息,表示该消息标识产生或发送的时间。
本发明的对外通信模块21与通用消息客户端之间的通信具体包括当通信双方的主会话标识由通用消息客户端来建立时,通用消息服务器的对外通信模块21用于接收来自通用消息客户端的主会话标识;当通信双方的主会话标识由通用消息服务器来建立时,对外通信模块21首先接收自通用消息客户端发起的主会话标识建立请求消息,并向其返回会话标识记录;当会话过程中,通用消息客户端更换为专用消息客户端时,对外通信模块21用于接收由通用消息客户端发送的专用消息客户端的通信地址信息,以及接收专用消息客户端发送的会话消息,并将会话标识记录通过专用消息客户端支持的消息格式封装后发送给发起会话请求的专用消息客户端;用于接收发起会话请求的通用消息客户端发送的登陆请求消息,以获取会话标识记录,并向通用消息客户端返回登陆响应消息,以及接收通用消息客户端发送会话更新消息,并向其返回会话标识记录。
需要说明的是,本发明的通用消息客户端的会话标识管理模块100和消息标识管理模块101也可以直接和消息处理单元10相连,其功能与上述功能相同。
参见图4,是本发明的产生主会话标识的第一实施例的方法流程图。
在本实施例中,主会话标识基于用户标识而产生首先,在步骤S100,当通用消息客户端准备发起一次通信时,客户端的会话标识管理模块基于其通用消息系统用户标识生成一个主会话标识,通用消息系统用户标识能保证该主会话标识的唯一性。
在步骤S101,通用消息客户端以会话消息作为载体将主会话标识和消息标识与消息内容一并发送给通用消息服务器;在步骤S102,服务器将该主会话标识记录在自己的通用消息会话标识记录表中;在步骤S103,若通信对方是通用消息客户端,则通用消息服务器通过会话消息将该主会话标识以及消息标识通知给通信对方。
需要说明的是,当非通用消息系统用户与通用消息系统用户之间通信时,主会话标识可以由通用消息服务器的会话标识管理模块根据通用消息系统用户的用户标识建立,然后将该主会话标识通过会话消息传递给通用消息系统用户。
参见图5,是本发明的产生主会话标识的第二实施例的方法流程图。
在这种实施例中,主会话标识由通用消息系统的服务器的会话标识管理模块统一进行分配,即当通用消息客户端发起一次通信时,它请求通用消息服务器生成一个主会话标识。
首先在步骤S200,通用消息客户端向通用消息服务器发送会话标识建立请求消息,消息中包含发送人用户名、接收人用户名或接收人地址。
在步骤S201,通用消息服务器在其会话标识记录表中查找对应项;在步骤S202,通过以下程序代码进行判断是否找到对应的会话标识记录If((源用户=发送人用户名and(目标用户=接收人用户名or目标用户=接收人地址)or(目标用户=发送人用户名and(源用户=接收人用户名or源用户=接收人地址))找到对应项;else找不到对应项;在步骤S203,如果服务器找到了对应项,则通用消息服务器取出对应项的主会话标识,然后转入步骤S205;在步骤S204,如果找不到对应项,通用消息服务器生成一个主会话标识,确保该标识与其它主会话标识不同。然后转入步骤S205;在步骤S205,通用消息服务器返回会话标识记录,包含发送人用户名、接收人用户名或接收人地址、主会话标识;需要指出的是,如果该主会话标识包含在会话标识记录表中,返回的响应消息中还包括各个源用户和目标用户对的当前序列号。
若通信对方是通用消息客户端,则还进行步骤S206,将通用消息服务器以会话消息作为载体将该主会话标识以及消息标识通知给通信对方。
需要说明的是,当非通用消息系统用户发起一次与通用消息系统用户的通信时,在步骤S200,专用消息客户端向通用消息服务器发送的是会话消息,所述会话消息包含用于获取主会话标识的地址信息;在这种实施例中,通信对方一定是通用消息客户端,所以省略步骤S205,而在步骤S206,通用消息服务器以会话消息作为载体将主会话标识直接发送给通信对方的通用消息客户端,其他步骤与上述步骤相同。
参见图6,是本发明客户端与服务器进行消息标识的传输的方法的第一实施例的流程示意图。
在这种实施例中,通用消息系统以会话消息作为载体传输消息标识;首先在步骤S300,在消息头中嵌入表示通用消息系统的消息标识;需要说明的是,该标识不仅包含表2中的内容,还包含子会话标识以及消息类型。子会话标识在消息生成时产生,根据该次消息分解的个数决定子会话的个数,即用户提供的一组消息内容可由多个子会话来承载。
在步骤S301,通用消息客户端向通用消息服务器发送会话消息;在步骤S302,通用消息服务器收到会话消息,即可获知该会话消息的消息标识。
需要说明的是,消息标识也可以由通用消息服务器发送到通用消息客户端。
参见图7,是本发明客户端与服务器进行消息标识的传输的方法的第二实施例的流程示意图。
在这种实施例中,通用消息服务器不负责对用户消息的直接接收和发送,即与客户端间仅完成通用消息系统的信令交互,消息内容仍通过专用消息系统来发送,客户端和服务器通过消息通知消息进行通用消息系统消息标识的通知。
首先在步骤S400,通用消息客户端向通用消息服务器发送消息通知消息;该消息通知消息包含一条消息的会话信息,主要为主会话标识、当前序列号、发送方用户名或发送方地址、接收方用户名或接收方地址、消息类型、或还包括消息发送时间。
在步骤S401,通用消息的消息标识在通用消息客户端和服务器间进行交互;在步骤S402,服务器收到消息标识后,认为下一个接收的来自于相同用户,去向相同目的地,相同消息类型的会话消息对应该消息标识。
需要说明的是,消息通知消息可以由通用消息客户端发送到通用消息服务器,也可以由通用消息服务器发送到通用消息客户端。
当用户退出通用消息系统时,通用消息客户端、服务器将删除与该用户相关的主会话标识。
若通用消息系统用户在会话过程中需要更换终端,或者有新的终端请求加入会话,而终端更换前后或者新的终端加入前后必须有一个终端支持通用消息系统。如果更换终端前后或者新的终端加入前后有一个终端是专用消息终端,则另一个通信终端必须是通用消息终端,所以一共存在4种情况1、更换前的终端或者已有会话的终端为通用消息终端,更换后的终端或者新加入会话的终端为通用消息终端,通信对方为通用消息终端;2、更换前的终端或者已有会话使用的终端为通用消息终端,更换后的终端或者新加入会话的终端为通用消息终端,通信对方为专用消息终端;3、更换前的终端或者已有会话的终端为专用消息终端,更换后的终端或者新加入会话的终端为通用消息终端,通信对方为通用消息终端;4、更换前的终端或者已有会话的终端为通用消息终端,更换后的终端或者新加入会话的终端为专用消息终端,通信对方为通用消息终端。
在会话过程中更换为通用消息终端或者新加入会话的终端是通用消息终端时,需通过该通用消息终端发送登陆请求消息,完成会话请求消息的功能,并通过网络返回的登陆响应消息获取会话记录。这时,为了完成用户更换终端时或有新的终端加入会话时,允许用户有选择的继续之前的会话,通用消息服务器需要客户端提供一条会话更新消息,并向客户端发送响应通话记录下发消息。
需要说明的是,针对有新的终端加入会话时和更换终端这两种情况,本发明提供的管理会话的技术方案不同的地方在于当更换终端时,通用消息服务器将其会话记录中关于更换前的终端的通信地址更新为更换后的终端的通信地址;而当有新的终端加入会话时,通用消息服务器在其会话记录中增加或修改新加入会话的终端相关的会话标识记录、会话消息及其对应消息标识。
下面以用户更换终端这种情况为例,说明本发明的管理会话的方法。
参见图8,是本发明的用户更换终端时管理会话的第一实施例的方法流程示意图。
用户更换终端前后,都使用通用消息终端,无论通信对方为何种终端,其选择会话的消息内容是相同的。
例如,通用消息系统用户Bob,通用消息系统用户标识为12345,支持短信;通用消息系统用户Alice,通用消息系统用户标识为45678,支持短信和Email。
Bob与Alice正在进行消息通信,服务器与Bob客户端上保存的会话标识记录表为
Alice客户端上保存的会话标识记录表为
Bob希望更换一个终端,更换后的终端为一个通用消息终端,支持短信和彩信。在这种实施例中,用户更换终端时管理会话的方法步骤如下在步骤S500,Bob打开终端,登陆通用消息系统,向通用消息服务器发送登陆请求消息。程序代码如下<CPM-CSP-Message xmlns=″http://www.openmobilealliance.org/DTD/CPM1.0″>
<Session>
<SessionDescriptor>
<SessionType>Inband</SessionType>
<SessionID>31018#user@server</SessionID>
</SessionDescriptor>
<Transaction>
<TransactionDescriptor>Request01#12345@Server</TransactionDescriptor>
<TransactionContentxmlns=″http://www.openmobilealliance.org/DTD/CPM-TRC1.0″>
<!--:登陆请求-->
<LoginRequest>
<!--:用户名-->
<UserID>Bob</UserID>
<!--:密码-->
<Password>2^8Jh9Z</Password>
<!--:Bob的联系方式-->
<ClientID>http://211.112.1.1/CPMAPP</ClientID>
<!--:支持消息类型-->
<SupportModeList>
<PriorityMode>
<!--:接收偏好的等级-->
<Rank>1</Rank>
<!--:2表示短信,指支持的消息类型-->
<TargetMode>2</TargetMode>
<!--:消息系统的联系方式-->
<TargetAddress>13601118888</TargetAddress>
</PriortyMode>
<PriorityMode>
<Rank>2</Rank>
<TargetMode>3</TargetMode>
<TargetAddress>13601118888</TargetAddress>
</PriorityMode>
</SupportModeList>
</LoginRequest>
</TransactionContent>
</Transaction>
</Session>
</CPM-CSP-Message>
在步骤S501,服务器收到该登陆请求后,对Bob的身份进行验证,Bob登陆被接受,完成对Bob的登陆处理后,寻找Bob对应的会话。
在步骤S502,通用消息服务器向通用消息客户端返回登陆响应消息,程序代码如下<CPM-CSP-Message xmlns=″http://www.openmobilealliance.org/DTD/CPM1.0″>
<Session>
<SessionDescriptor>
<SessionType>Inband</SessionType>
<SessionID>31018#user@server</SessionID>
</SessionDescriptor>
<Transaction>
<TransactionDescriptor>Response01#12345@Server</TransactionDescriptor>
<TransactionContentxmlns=″http://www.openmobilealliance.org/DTD/CPM-TRC1.0″>
<LoginResponse>
<ClientID>http://211.112.1.1/CPMAPP</UserID>
<!--:告知登陆成功-->
<Result>200</Result>
<Description>Success Complete</Description>
<!--:通用消息系统用户标识-->
<RegisterID>12345</RegisterID>
<!--:通讯录-->
<AddressBook>
<UserInfo>
<!--:第一个联系人-->
<UserID>Alice</UserID>
<!--:Alice的用户标识-->
<RegisterID>45678</RegisterID>
<!--:告知Alice支持的消息类型、偏好及联系方式-->
<SupportModeList>
<PriorityMode>
<Rank>1</Rank>
<TargetMode>2</TargetMode>
<TargetAddress>13601118888</TargetAddress>
</PriorityMode>
<PriorityMode>
<Rank>2</Rank>
<TargetMode>1</TargetMode>
<TargetAddress>Alice@home.com</TargetAddress>
</PriorityMode>
</SupportModeList>
<!--:告知Alice的登陆状态1已登陆-->
<StatusInfo>1</StatusInfo>
</UserInfo>
<!--:第二个联系人-->
<UserInfo>
<UserID>Mike</UserID>
<RegisterID>56787</RegisterID>
<SupportModeList>
<PriorityMode>
<Rank>1</Rank>
<TargetMode>4</TargetMode>
<TargetAddress>wv:Mike@im.com</TargetAddress>
</PriorityMode>
<PriorityMode>
<Rank>2</Rank>
<TargetMode>1</TargetMode>
<TargetAddress>Mike@home.com</TargetAddress>
</PriorityMode>
</SupportModeList>
<StatusInfo>1</StatusInfo>
</UserInfo>
</AddressBook>
<LastSession>
<SessionInfo>
<SessionID>456780001</SessionID>
<SourceUser>Bob</SourceUser>
<TargetUser>Alice</TargetUser>
<MessageIndex>103</MessageIndex>
</SessionInfo>
<SessionInfo>
<SessionID>456780001</SessionID>
<SourceUser>Alice</SourceUser>
<TargetUser>Bob</TargetUser>
<MessageIndex>94</MessageIndex>
</SessionInfo>
<SessionInfo>
<SessionID>123450001</SessionID>
<SourceUser>Bob</SourceUser>
<TargetUser>Mike</TargetUser>
<MessageIndex>23</MessageIndex>
</SessionInfo>
<SessionInfo>
<SessionID>123450001</SessionID>
<SourceUser>Mike</SourceUser>
<TargetUser>Bob</TargetUser>
<MessageIndex>24</MessageIndex>
</SessionInfo>
</LastSession>
</LoginResponse>
</TransactionContent>
</Transaction>
</Session>
</CPM-CSP-Message>
在步骤S503,Bob的客户端向Bob显示正在进行与Alice、Mike的通话,Bob选择继续Alice的通话,中止与Mike的通话。客户端建立会话标识记录表,记录会话标识
并向服务器返回一条会话更新消息。
<CPM-CSP-Message xmlns=″http://www.openmobilealliance.org/DTD/CPM1.0″>
<Session>
<SessionDescriptor>
<SessionType>Inband</SessionType>
<SessionID>31018#user@server</SessionID>
</SessionDescriptor>
<Transaction>
<TransactionDescriptor>Request01#12345@Server</TransactionDescriptor>
<TransactionContentxmlns=″http://www.openmobilealliance.org/DTD/CPM-TRC1.0″>
<SessionUpdate>
<Accepted>
<SessionID>456780001</SessionID>
<!--:接受的主会话标识-->
</Accepted>
<Denied>
<SessionID>123450001</SessionID>
<!--:拒绝的主会话标识-->
</Denied>
</SessionUpdate>
</TransactionContent>
</Transaction>
</Session>
</CPM-CSP-Message>
在步骤S504,服务器收到该消息后,保留456780001会话。中止123450001的会话,同时释放123450001对应的消息标识相应的存储信息;在步骤S505,通用消息服务器将选择的主会话标识对应的消息标识存储模块中的消息标识或者还包括消息,发送给通用消息客户端。
需要说明的是,当Bob与Alice继续通信时,Alice从Bob收到消息标识,消息标识中的源用户Bob与之前的13601119999不同,即将本身保存的会话标识记录表更新为步骤S503中表格的内容。
同样参见图8,是本发明的用户更换终端时管理会话的第二实施例的方法流程示意图;当用户更换终端前使用专用消息终端,更换后使用通用消息终端,对方为通用消息终端,例如专用消息系统用户Bob,电话号码为13601119999,支持短信;通用消息系统用户Alice,通用消息系统用户标识为45678,支持短信和Email。
Bob与Alice正在进行消息通信,服务器与Alice客户端上保存的会话标识记录表为
这时,Bob希望更换一个终端,更换后的终端为一个通用消息终端,支持短信和彩信。
在这种实施例中,在步骤S500,Bob打开终端,登陆通用消息系统,向通用消息服务器发送登陆请求消息,并提供之前终端使用的通信地址,程序代码如下<CPM-CSP-Message xmlns=″http://www.openmobilealliance.org/DTD/CPM1.0″>
<Session>
<SessionDescriptor>
<SessionType>Inband</SessionType>
<SessionID>31018#user@server</SessionID>
</SessionDescriptor>
<Transaction>
<TransactionDescriptor>Request01#12345@Server</TransactionDescriptor>
<TransactionContentxmlns=″http://www.openmobilealliance.org/DTD/CPM-TRC 1.0″>
<!--:登陆请求-->
<LoginRequest>
<!--:用户名-->
<UserID>Bob</UserID>
<!--:密码-->
<Password>2^8Jh9Z</Password>
<!--:Bob的联系方式-->
<ClientID>http://211.112.1.1/CPMAPP</ClientID>
<!--:支持消息类型-->
<SupportModeList>
<PriorityMode>
<!--:接收偏好的等级-->
<Rank>1</Rank>
<!--:2表示短信,指支持的消息类型-->
<TargetMode>2</TargetMode>
<!--:消息系统的联系方式-->
<TargetAddress>13601118888</TargetAddress>
</PriorityMode>
<PriorityMode>
<Rank>2</Rank>
<TargetMode>3</TargetMode>
<TargetAddress>13601118888</TargetAddress>
</PriorityMode>
</SupportModeList>
<LastTerminal>
<TargetAddress>13601119999</TargetAddress>
</LastTerminal>
</LoginRequest>
</TransactionContent>
</Transaction>
</Session>
</CPM-CSP-Message>
在步骤S501,服务器收到该登陆请求后,对Bob的身份进行验证,Bob登陆被接受。完成对Bob的登陆处理后,寻找原终端联系方式13601119999对应的会话,将13601119999更新为Bob。服务器的会话标识记录表为
在步骤S502,通用消息服务器向更换后的通用消息客户端返回登陆响应消息
<CPM-CSP-Message xmlns=″http://www.openmobilealliance.org/DTD/CPM1.0″>
<Session>
<SessionDescriptor>
<SessionType>Inband</SessionType>
<SessionID>31018#user@server</SessionID>
</SessionDescriptor>
<Transaction>
<TransactionDescriptor>Response01#12345@Server</TransactionDescriptor>
<TransactionContentxmlns=″http://www.openmobilealliance.org/DTD/CPM-TRC1.0″>
<LoginResponse>
<ClientID>http://211.112.1.1/CPMAPP</UserID>
<!--:告知登陆成功-->
<Result>200</Result>
<Description>Success Complete</Description>
<!--:通用消息系统用户标识-->
<RegisterID>12345</RegisterID>
<!--:通讯录-->
<AddressBook>
<UserInfo>
<!--:第一个联系人-->
<UserID>Alice</UserID>
<!--:Alice的用户标识-->
<RegisterID>45678</RegisterID>
<!--:告知Alice支持的消息类型、偏好及联系方式-->
<SupportModeList>
<PriorityMode>
<Rank>1</Rank>
<TargetMode>2</TargetMode>
<TargetAddress>13601118888</TargetAddress>
</PriorityMode>
<PriorityMode>
<Rank>2</Rank>
<TargetMode>1</TargetMode>
<TargetAddress>Alice@home.com</TargetAddress>
</PriorityMode>
</SupportModeList>
<!--:告知Alice的登陆状态1已登陆-->
<StatusInfo>1</StatusInfo>
</UserInfo>
<!--:第二个联系人-->
<UserInfo>
<UserID>Mike</UserID>
<RegisterID>56787</RegisterID>
<SupportModeList>
<PriorityMode>
<Rank>1</Rank>
<TargetMode>4</TargetMode>
<TargetAddress>wv:Mike@im.com</TargetAddress>
</PriorityMode>
<PriorityMode>
<Rank>2</Rank>
<TargetMode>1</TargetMode>
<TargetAddress>Mike@home.com</TargetAddress>
</PriorityMode>
</SupportModeList>
<StatusInfo>0</StatusInfo>
</UserInfo>
</AddressBook>
<LastSession>
<SessionInfo>
<SessionID>456780001</SessionID>
<SourceUser>Bob</SourceUser>
<TargetUser>Alice</TargetUser>
<MessageIndex>103</MessageIndex>
</SessionInfo>
<SessionInfo>
<SessionID>456780001</SessionID>
<SourceUser>Alice</SourceUser>
<TargetUser>Bob</TargetUser>
<MessageIndex>94</MessageIndex>
</SessionInfo>
</LastSession>
</LoginResponse>
</TransactionContent>
</Transaction>
</Session>
</CPM-C SP-Message>
在步骤S503,Bob的客户端向Bob显示正在进行与Alice的通话,Bob选择继续。通用消息客户端建立会话标识记录表,记录会话标识,如步骤S501中的表格一样,并向服务器返回一条会话更新消息。
<CPM-CSP-Message xmlns=″http://www.openmobilealliance.org/DTD/CPM1.0″>
<Session>
<SessionDescriptor>
<SessionType>Inband</SessionType>
<SessionID>31018#user@server</SessionID>
</SessionDescriptor>
<Transaction>
<TransactionDescriptor>Request01#12345@Server</TransactionDescriptor>
<TransactionContentxmlns=″http://www.openmobilealliance.org/DTD/CPM-TRC1.0″>
<SessionUpdate>
<Accepted>
<SessionID>456780001</SessionID><!--:接受的主会话标识-->
</Accepted>
</SessionUpdate>
</TransactionContent>
</Transaction>
</Session>
</CPM-CSP-Message>
在步骤S504,服务器收到会话更新消息后,保留456780001会话。
在步骤S505,通用消息服务器向更换后的客户端发送通话记录下发消息;需要说明的是,当Bob与Alice继续通信时,Alice从Bob收到消息标识,消息标识中的源用户Bob与之前的13601119999不同,即将本身保存的会话标识记录表更新为步骤S501中表格的内容。
参见图9,是本发明的用户更换终端时管理会话的第三实施例的方法流程示意图。
在这种实施例中,更换前为通用消息终端,更换后为专用消息终端,通信对方为通用消息终端。
例如通用消息系统用户Bob,通用消息系统用户标识为12345,支持短信;通用消息系统用户Alice,通用消息系统用户标识为45678,支持短信和Email。
Bob与Alice正在进行消息通信,服务器与Bob客户端上保存的会话标识记录表为
Alice客户端上保存的会话表示记录表为
这时,Bob希望更换一个终端,更换后的终端为一个传统消息终端,支持短信。在这种实施例中,更换终端时管理会话的方法步骤如下在步骤S600,Bob在更换终端前向服务器发送更换终端通知消息。程序代码如下<CPM-CSP-Message xmlns=″http://www.openmobilealliance.org/DTD/CPM1.0″>
<Session>
<SessionDescriptor>
<SessionType>Inband</SessionType>
<SessionID>31018#user@server</SessionID>
</SessionDescriptor>
<Transaction>
<TransactionDescriptor>Request01#12345@Server</TransactionDescriptor>
<TransactionContentxmlns=″http://www.openmobilealliance.org/DTD/CPM-TRC1.0″>
<!--更换终端通知-->
<NotifyDeviceChanging>
<!--告知用户名/通用消息系统用户标识-->
<UserID>Bob</UserID>
<RegisterID>123456789</RegisterID>
<!--:支持消息类型-->
<SupportModeList>
<PriorityMode>
<!--:接收偏好的等级-->
<Rank>1</Rank>
<!--:2表示短信,指支持的消息类型-->
<TargetMode>2</TargetMode>
<!--:消息系统的联系方式-->
<TargetAddress>13601119999</TargetAddress>
</PriorityMode>
</SupportModeList>
<SessionUpdate>
<Accepted>
<SessionID>456780001</SessionID><!--:接受的主会话标识-->
</Accepted>
<Denied>
<SessionID>123450001</SessionID><!--:拒绝的主会话标识-->
</Denied>
</SessionUpdate>
</NotifyDeviceChanging>
</TransactionContent>
</Transaction>
</Session>
</CPM-CSP-Message>
在步骤S601,通用消息服务器收到更换终端通知消息后,保留456780001会话。中止123450001的会话,同时释放123450001对应的消息标识相关的存储信息。其会话标识记录表如下所示
在步骤S602,通用消息服务器将456780001对应的消息标识存储模块中保存的消息标识封装在一条短信中发送给Bob的传统消息终端。
需要说明的是,当Bob与Alice继续通信时,Alice从服务器收到消息标识,消息标识中的源用户13601119999与之前的Bob不同,即将本身保存的会话标识记录表更新为步骤S601中表格的内容。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
权利要求
1.一种管理会话的方法,其特征在于,包括a、为当前的会话生成主会话标识,并存储包含所述主会话标识的会话记录;b、发送与所述主会话标识对应的通信方建立会话的会话请求消息;c、根据所述会话请求消息,查找主会话标识,并建立与所述主会话标识对应的通信方的会话。
2.如权利要求1所述的管理会话的方法,其特征在于,所述步骤a具体包括以下步骤a1、由通用消息服务器为通信双方的会话建立并存储主会话标识,所述通信双方至少有一方为通用消息客户端;a2、通用消息服务器将所述建立的主会话标识发送给通用消息客户端;a3、通用消息客户端存储通信双方的包含主会话标识的会话记录。
3.如权利要求1所述的管理会话的方法,其特征在于,所述步骤a具体包括以下步骤a4、由通用消息客户端为通信双方的会话建立并存储主会话标识,所述通信双方至少有一方为通用消息客户端;a5、通用消息客户端将所述建立的主会话标识发送给通用消息服务器;a6、通用消息服务器存储通信双方的包含主会话标识的会话记录。
4.如权利要求1所述的管理会话的方法,其特征在于,当所述发起会话请求的客户端为请求加入当前会话的客户端时,所述步骤b具体为b00、所述客户端向通用消息服务器发送包含地址信息的会话消息;所述步骤c具体包括c00、根据会话消息中的地址信息,通用消息服务器查找其会话记录中对应的主会话标识;c01、通用消息服务器根据所述主会话标识,建立所述客户端与通信对方的会话。
5.如权利要求1所述的管理会话的方法,其特征在于,当所述发起会话请求的客户端为通用消息客户端时,所述步骤b具体包括b10、通用消息服务器向所述通用消息客户端发送其会话记录中与之相应的会话标识记录;b11、通用消息客户端向通用消息服务器发送会话更新消息,所述会话更新消息包含通用消息客户端在会话标识记录中所选择需要继续的会话的主会话标识;所述步骤c具体包括c10、通用消息服务器根据通用消息客户端选择的主会话标识,建立通用消息客户端与通信对方的会话。
6.如权利要求1所述的管理会话的方法,其特征在于,当在会话过程中,通用消息客户端需要更换为专用消息客户端时,所述专用消息客户端做为发起会话请求的客户端时,所述步骤b具体包括b20、更换前的通用消息客户端向通用消息服务器发送更换后的专用消息客户端的通信地址;b21、更换后的专用消息客户端向通用消息服务器发送包含地址信息的会话请求消息,所述会话请求消息为会话消息本身;所述步骤c具体包括c20、通用消息服务器接收自专用消息客户端的消息,根据其地址信息查找其会话记录中相应的主会话标识;c21、通用消息服务器根据所述主会话标识,建立专用消息系统客户端与通信对方的会话。
7.如权利要求2所述的管理会话的方法,其特征在于,步骤a1中所述的主会话标识是由通用消息服务器统一进行分配的,当发起会话的一方为通用消息客户端时,具体包括以下步骤a10、通用消息客户端向通用消息服务器发送主会话标识建立请求消息;a11、通用消息服务器在其会话记录中查找与通信双方对应的会话标识记录,如果找到对应的会话标识记录,则转入步骤a12,否则转入步骤a13;a12、通用消息服务器提取对应的会话标识记录;a13、通用消息服务器为通信双方的会话生成一个区别于其他主会话标识,并存储在其会话记录中;所述步骤a2具体为通用消息服务器将包含主会话标识的会话标识记录返回给发起主会话标识建立请求的客户端。
8.如权利要求2所述的管理会话的方法,其特征在于,步骤a1中所述的主会话标识是由通用消息服务器统一进行分配的,当发起会话的一方使用专用消息客户端,通信对方使用通用消息客户端时,具体包括以下步骤a14、专用消息客户端向通用消息服务器发送会话消息,并通过通用消息服务器向通信对方的通用消息客户端发送消息;a15、通用消息服务器接收到来自专用消息客户端的会话消息时,在其会话标识记录中查找与通信双方对应的会话标识记录,如果找到对应的会话标识记录,则转入步骤a16,否则转入步骤a17;a16、通用消息服务器提取对应的会话标识记录;a17、通用消息服务器为通信双方的会话生成一个区别于其他主会话标识的主会话标识,并存储在其会话记录中;所述步骤a2具体为通用消息服务器将所述包含主会话标识的会话标识记录发送给通信对方使用的通用消息客户端。
9.如权利要求2所述的管理会话的方法,其特征在于,所述步骤a1中所述的主会话标识是通用消息服务器基于用户标识生成的,当发起会话的一方为专用消息客户端时,通信对方为通用消息客户端时,具体包括以下步骤a18、专用消息客户端向通用消息服务器发送会话消息,并通过通用消息服务器向通信对方的通用消息客户端发送会话消息;a19、通用消息服务器根据通信对方的用户标识生成主会话标识,并存储在其会话记录中。所述步骤a2具体为通用消息服务器将主会话标识发送给通信对方的通用消息客户端。
10.如权利要求3所述的管理会话的方法,其特征在于,所述步骤a4中所述的主会话标识是发起会话请求的通用消息客户端基于其用户标识生成的,具体包括以下步骤a41、当通用消息客户端准备发起会话时,通用消息客户端根据用户标识建立主会话标识,并存储在其会话记录中;所述步骤a2具体为发起会话的通用消息客户端将会话标识记录发送给通用消息服务器。
11.如权利要求1至10中任一项所述的管理会话的方法,其特征在于,步骤a中的所述的在通用消息客户端和通用消息服务器上存储的会话记录具体包括会话标识记录、包含主会话标识的消息标识,或还包含与消息标识对应的消息。
12.一种通用消息客户端,其特征在于,主要包括会话标识管理模块,用于生成通信双方的主会话标识,并存储会话标识记录;消息标识管理模块,用于在通信双方会话过程中生成与主会话标识对应的消息标识,并存储所述消息标识;对外通信模块,用于与通用消息服务器之间进行会话标识记录的传输。
13.如权利要求12所述的通用消息客户端,其特征在于,所述会话标识管理模块包括主会话标识生成单元,用于在本通用消息客户端向通信对方发起会话时,生成两者之间的主会话标识;会话标识记录,用于记录所述主会话标识生成单元所生成的主会话标识、源用户、目标用户、当前序列号。
14.如权利要求13所述的通用消息客户端,其特征在于,所述消息标识管理模块包括消息标识生成单元,用于在本通用消息客户端向服务器发送每条消息时,分别生成一个对应的消息标识;消息标识存储单元,用于存储通信双方在会话过程中的每条消息的消息标识。
15.如权利要求12至14中任一项所述的通用消息客户端,其特征在于,所述对外通信模块与通用消息服务器之间进行的会话标识记录的传输具体包括当通信双方的主会话标识是由本通用消息客户端建立时,所述对外通信模块将所述主会话标识发送给通用消息服务器;或当通信双方的主会话标识是由通用消息服务器建立时,通用消息客户端的对外通信模块首先向通用消息服务器发起主会话标识建立请求消息,并接收来自通用消息服务器返回的会话标识记录;或用于向通用消息服务器发送更换后的专用消息客户端的通信地址信息;或用于向通用消息服务器发送会话请求消息,并接收来自通用消息服务器的会话请求响应消息,以及向通用消息服务器发送会话更新消息,并接收返回的会话标识记录。
16.如权利要求12至14中任一项所述的通用消息客户端,其特征在于,所述消息标识包括包括主会话标识、当前序列号、会话消息类型以及时间信息。
17.一种通用消息服务器,其特征在于,主要包括会话标识管理模块,用于生成通信双方的主会话标识,并存储会话标识记录;消息标识管理模块,用于在通信双方会话过程中生成与主会话标识对应的消息标识并存储;对外通信模块,用于与通用消息客户端之间进行会话标识记录的传输。
18.如权利要求17所述的通用消息服务器,其特征在于,所述会话标识管理模块包括主会话标识生成单元,用于在专用消息客户端向通信对方发起会话时,根据通信对方的用户标识生成通信双方之间的主会话标识;或为通信双方统一分配主会话标识;会话标识记录,用于记录由主会话标识生成单元所生成的通信双方的主会话标识、源用户、目标用户、当前序列号。
19.如权利要求18所述的通用消息服务器,其特征在于,所述消息标识管理模块包括消息标识生成单元,用于为每条消息分别生成一对应的消息标识;消息标识存储单元,用于存储通信双方在会话过程中的每条消息的消息标识。
20.如权利要求17至19中任一项所述的通用消息服务器,其特征在于,所述对外通信模块与通用消息客户端之间的进行的会话标识记录和消息标识的传输具体包括当通信双方的主会话标识由通用消息客户端来建立时,通用消息服务器的对外通信模块接收通用消息客户端产生的主会话标识;或当通信双方的主会话标识由通用消息服务器来建立时,对外通信模块首先接收自所述通用消息客户端发起的主会话标识建立请求消息,并向其返回会话标识记录;或用于接收专用消息客户端的会话消息,以及接收通用消息客户端向其发送的更换后的专用消息客户端的通信地址;或用于接收通用消息客户端发送的会话请求消息,并返回会话请求响应消息,以及接收通用消息客户端发送会话更新消息,并向其返回会话标识记录。
21.如权利要求17至19中任一项所述的通用消息服务器,其特征在于,所述消息标识包括包括主会话标识、当前序列号、会话消息类型以及时间信息。
全文摘要
本发明公开了一种管理会话方法,包括a.为当前的会话生成主会话标识,并存储包含所述主会话标识的会话记录;b.发送与所述主会话标识对应的通信方建立会话的会话请求消息;c.根据所述会话请求消息,查找主会话标识,并建立与所述主会话标识对应的通信方的会话。本发明还公开了一种通用消息客户端和通用消息服务器。使用本发明,使得新的终端在加入已有的会话时,通过获取会话记录,能够选择性建立会话。
文档编号H04L12/58GK1953386SQ20061012319
公开日2007年4月25日 申请日期2006年11月1日 优先权日2006年11月1日
发明者王睿 申请人:华为技术有限公司