发明内容
本发明的目的在于解决上述问题,提供了一种基于或囊括手机电话本的即时通讯方法和系统,它使得用户在通讯前能获知对方的状态和个性化信息,不用手工提交注册信息获取登录号、使用登录号与登录口令登录、根据好友的即时通讯ID或登录号添加联系人列表等烦琐步骤,就可以享受即时通讯的诸多好处,在通讯中提高通讯时效,节省了运营商高昂的通讯费用。
本发明的技术方案为:本发明揭示了一种基于或囊括手机电话本的即时通讯方法,包括以下步骤:
(1)以手机电话本或名片夹作为即时通讯客户端用以通讯的联系人列表;
(2)初始化或同步服务器端存储单元,即时通讯客户端获取用户的手机号和手机标识信息,发送到即时通讯服务器,该即时通讯服务器根据手机号和手机标识信息查询服务器端存储单元中是否已存在该客户端的用户基本信息,若无则建立包含该客户端手机号和手机标识信息的用户基本信息,若有则根据该用户基本信息判断是否允许该客户端登录服务器,登录后服务器保存客户端的网络连接信息,对该客户端联系人列表中的联系人信息与服务器端存储单元的联系人信息进行同步处理;
(3)即时通讯客户端之间以手机号或与手机号对应的生成ID为即时通讯ID,通过即时通讯服务器进行即时通讯。
本发明还揭示了一种基于或囊括手机电话本的即时通讯方法,包括以下步骤:
(1)初始化或同步服务器端存储单元,即时通讯客户端获取用户的手机号和手机标识信息,发送到即时通讯服务器,该即时通讯服务器根据手机号和手机标识信息查询服务器端存储单元是否已存在该客户端的用户基本信息,若无则建立包含该客户端手机号和手机标识信息的用户基本信息,若有则根据该用户基本信息判断是否允许该客户端登录服务器,登录后服务器保存客户端的网络连接信息,将电话本中的信息同步至服务器存储单元的联系人信息;
(2)以手机电话本或名片夹作为即时通讯客户端用以通讯的联系人列表;
(3)即时通讯客户端之间以手机号或与手机号对应的生成ID为即时通讯ID,通过即时通讯服务器进行即时通讯。
上述的基于或囊括手机电话本的即时通讯方法,其中,客户端获取的手机标识信息包括在客户端或在服务器端生成的随机数、序列号、时间戳以及手机设备号和SIM卡标识号和用户自设口令的任意组合,客户端获取并向服务器发送手机号的方法可能包括以下几种:
(a)即时通讯客户端接收用户输入的手机号提交至相应的请求处理服务器,该服务器通过移动通讯网络的短消息网关向所输入的手机号码发送验证码或确认码,即时通讯客户端再次接收用户输入的验证码或确认码并提交至短消息处理服务器来验证;
(b)即时通讯客户端根据手机软件开发工具包得到手机号或者读取之前已存储在即时通讯客户端存储单元中的手机号,提交至即时通讯服务器;
(c)即时通讯客户端发送包含手机标识信息的短消息至可获取手机号的移动运营商服务号,该服务提供商的无线服务器提取出用户的手机号码,与手机标识信息建立关联并保存至服务器端存储单元;
(d)即时通讯客户端通过传递参数给一可获取手机号码的WAP接口,该WAP接口返回手机号码给即时通讯服务器。
上述的基于或囊括手机电话本的即时通讯方法,其中,所述即时通讯方法还包括:即时通讯客户端登录服务器同时或登录之后发出查询联系人的用户状态信息的请求,服务器根据联系人的手机号或与手机号对应的生成ID查询到用户状态并返回给客户端,其中,所述用户状态是用户即时通讯状态、用户自行设置状态和用户手机操作状态的任意组合。
上述的基于或囊括手机电话本的即时通讯方法,其中,所述即时通讯方法还包括用户状态的设置过程,所述设置过程包括以下三种设置方式的任意组合:
用户即时通讯状态的设置,包括联机、忙碌、离开、脱机的即时通讯状态信息的设置,即时通讯客户端将该些信息同步至服务器;
用户自行设置状态的设置,即时通讯客户端接收用户自行设置或选择的用户状态信息或签名信息,将其同步至服务器;
用户手机操作状态的设置,即时通讯客户端自动监测用户手机操作状态是否有更新,若有则将其同步至服务器。
上述的基于或囊括手机电话本的即时通讯方法,其中,用户手机操作状态的设置进一步包括:
(1)每隔固定的周期扫描进程表、捕获消息的任意组合,并过滤出与用户状态相关的部分,分析出用户操作手机的状态,其中所述消息包括系统消息和按键消息;
(2)该获取的具体状态与之前的用户操作状态对比,判断是否需要更新,若是则转入下一步,否则返回步骤(1);
(3)将该用户的具体状态发送至即时通讯服务器端用以更新服务器端的用户操作状态。
另一方面,本发明还揭示了一种基于或囊括手机电话本的即时通讯系统,所述系统包括多个即时通讯客户端和即时通讯服务器端,其中:
该多个即时通讯客户端包括:
一操作系统运行单元,运行手机上的操作系统;
一系统对象单元,包括发送短消息或彩信的发送引擎和存储电话本信息的电话本存储单元或个人信息管理单元;
一客户端存储单元,存储客户端的用户手机号、用户手机标识信息、联系人信息或与电话本的映射关系、用户状态以及聊天记录;
一用户基本信息同步单元,将用户手机号、手机标识信息同步至即时通讯服务器端;
一第一联系人信息同步单元,将电话本中的联系人信息导入客户端存储单元或将客户端存储单元中的联系人信息导入电话本中,或保持电话本与客户端存储单元之间的映射关系,在电话本的联系人信息和客户端存储单元中存储的联系人信息之间做同步或映射处理;
一第二联系人信息同步单元,将客户端存储单元存储的或者从电话本映射的联系人信息发送至即时通讯服务器端,同时接收服务器端发送来的联系人信息,在客户端存储单元存储的或者从电话本映射的联系人信息和服务器端的联系人信息之间作同步处理,或者,保持客户端存储单元存储的或从电话本映射的联系人信息与服务器端存储的联系人信息之间的映射关系;
一用户状态信息更新请求单元,以用户手机号或与手机号对应的生成ID为更新标识,向即时通讯服务器发出一用户状态信息,请求在服务器端更新用户手机号与手机号对应的生成ID对应的用户状态信息;
一即时通讯单元,以手机号为联系标识,通过即时通讯服务器进行即时通讯;
该即时通讯服务器端包括:
一服务器端存储单元,存储用户基本信息表和服务器端联系人信息;
一用户注册和验证单元,一方面接收客户端发送的手机号、手机标识信息,以两者的对应关系建立用户基本信息表,一方面对比接收到的手机号、手机标识信息与用户基本信息表中的对应信息,根据两者是否一致来判断是否允许用户登录服务器;
一消息转发单元,以手机号或与手机号对应的生成ID为联系标识,在多个即时通讯客户端之间转发消息;
一用户状态信息更新响应单元,接收客户端发来的用户状态信息更新请求,更新服务器端的联系人信息中的用户状态;
一服务器端联系人信息同步单元,接收客户端的第二联系人信息同步单元发送来的联系人信息,并将服务器端联系人信息中与该客户端联系人相关的联系人信息发送给该客户端,并保持二者的同步或映射关系。
上述的基于或囊括手机电话本的即时通讯系统,其中,所述即时通讯系统的客户端还包括用户状态设置单元,该设置单元进一步包括以下单元的任意组合:
用户即时通讯状态设置单元,在客户端登录/离开服务器时自动将联机/脱机/忙碌/离开的即时通讯状态信息同步至服务器;
用户自行设置状态设置单元,接收用户自行设置或选择的状态信息或签名信息,将其同步至服务器;
用户手机操作状态设置单元,通过设置在客户端的自动监测或手动更新单元监测用户手机操作状态是否有更新,若有则将该操作状态同步至服务器。
上述的基于或囊括手机电话本的即时通讯系统,其中,所述自动监控单元,用于自动获取用户操作手机的当前状态并通过所述状态信息更新请求单元将状态信息发送至即时通讯服务器端,所述自动监控单元包括:
第一监控单元,通过对新进程的捕获分析用户状态后确定是否需要更新,包括:
第一定时器,设定扫描进程的周期;
一新进程扫描单元,根据设定的周期扫描是否有新进程出现;
一进程相关性判断单元,判断该进程是否与用户手机的状态相关;
一进程信息收集单元,收集进程的相关信息;
一进程分析单元,根据收集到的信息判定用户手机的具体状态;
一用户状态更新判断单元,将判定的用户手机具体状态与用户当前手机状态对比,判断是否需要进行更新;
第二监控单元,通过对系统消息或按键消息的捕获分析用户状态后判断是否需要更新,包括:
一第二定时器,设定扫描系统消息或按键消息的周期;
一新消息捕获单元,根据设定的周期捕获新的系统消息或按键消息;
一系统消息相关性判断单元,判断该系统消息或按键消息是否与用户手机的状态相关;
一系统消息收集单元,收集该系统消息或按键消息的信息;
一系统消息分析单元,根据上述收集到的信息判定用户的具体状态;
一用户状态更新判断单元,将判定的用户手机具体状态与用户当前手机状态对比,判断是否需要进行更新。
上述的基于或囊括手机电话本的即时通讯系统,其中,
所述即时通讯客户端的即时通讯单元包括:
一客户端消息提交单元,向服务器端发送消息;
一客户端消息接收单元,接收服务器端发来的消息;
所述即时通讯服务器的消息转发单元包括:
一服务器端消息接收单元,接收客户端发来的消息;
一服务器端消息发送单元,向客户端发送消息;
一网络连接信息查询单元,查询网络连接信息。
本发明对比现有技术有如下的有益效果:用户不用必须提交注册信息或绑定邮箱或绑定手机号码以获取即时通讯ID、登陆口令,不用必须提交即时通讯ID、登录口令进行登录,不用必须知道即时通讯联系人的即时通讯ID并添加其到联系人列表中,就可进行即时通讯。本发明直接将电话本转化为即时通讯联系人列表,使用户可以与电话本联系人进行即时通讯,节省了运营商高昂的通讯费用,使人们可以享受访问和浏览联系人个性化信息(譬如呢称、签名、WAP站)的好处,享受联系人上线、离线、忙碌等状态通知的服务。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图1示出了本发明的基于或囊括手机电话本的即时通讯方法的流程。下面是对该流程各步骤的详细描述。
步骤S101:扫描即时通讯客户端。
步骤S102:判断是否已经建立即时通讯客户端数据库。若未建立则进入步骤S103,若已建立则进入步骤S105。
步骤S103:建立即时通讯客户端数据库。
请同时参见图2,在此步骤中,创建了即时通讯客户端数据库的几张表,包括用户基本信息表、即时通讯联系人表、进程-消息-状态对照关系及聊天记录表。
用户基本信息表,因为只有一条记录,也可以文件形式存储,该表的字段示例如下:用户自己的手机号、手机设备号、SIM卡标识号、创建时间、用户最新的即时通讯状态(例如“上线”、“离线”、“忙碌”等)、用户最新的自行设置状态(例如“正在开会”、“正在回家的路上”等)、以及用户最新的手机操作状态(例如“正在通话”、“正在上网”等)、最后登录时间以及状态更新时间。
即时通讯联系人表,包括联系人手机号码、姓名、建立时间、与电话本同步标志,与服务器同步标志字段。
进程-消息-状态对照关系表,包括关键词(譬如是进程名称或消息名称)、状态名称、记录添加时间(即该条记录添加时间)、关键词类型(关键词的类型,1表示进程名称、2表示系统消息、3表示按键消息)字段。该表建立后,即时通讯客户端根据客户端操作系统的类型,初始化相应的数据。即时通讯客户端,可以根据关键词、关键词类型,查询所对应的手机操作状态。譬如根据WAP浏览器进程在启动状态,判定用户可能在使用手机上网。
聊天记录表,包括消息历史编号、发送手机号,接收手机号,消息内容,发送时间,接收时间,消息类型字段。
应理解,数据表的设计可以多种多样,并不用以限制本发明。
步骤S104:将电话本中的联系人信息导入即时通讯客户端数据库中。电话本也可以称作通讯录或者名片夹等。
在此步骤中,将电话本中的联系人信息,导入即时通讯客户端数据库中的即时通讯联系人表。在导的过程中,对信息有一定的取舍,一方面要判断该联系人是否存在合法的手机号码,存在则进行导入,另一方面要重点导一些与即时通讯相关的信息字段。对于单个联系人有多个手机号码的情况,默认选择存储地址排列在最前面的号码。
步骤S105:即时通讯客户端数据库与电话本的联系人信息进行同步。
即时通讯客户端数据库即时通讯联系人表与电话本的联系人信息数据作比较,当两者不同时做同步处理。具体地说,当用户在电话本上增加或删除或修改联系人时,将会被即时通讯客户端后台程序捕获到或在即时通讯客户端启动后发现,并在即时通讯客户端数据库即时通讯联系人表增加或删除或修改相应的联系人。当用户在即时通讯客户端数据库即时通讯联系人表中增加或删除或修改联系人时,即时通讯客户端自动在电话本中增加/删除/修改相应的联系人。
步骤S106:即时通讯客户端获取用户的手机号和手机标识信息,发送到即时通讯服务器。
在本实施例中,即时通讯客户端获取的手机标识信息是手机设备号和SIM卡标识号的组合,客户端获取并向服务器发送手机号的方法可能包括但不限于以下几种:
(A)即时通讯客户端接收用户输入的手机号提交至相应的请求处理服务器,该服务器通过移动通讯网络的短消息网关向所输入的手机号码发送验证码或确认码,即时通讯客户端再次接收用户输入的验证码或确认码并提交至短消息处理服务器来验证;
(B)即时通讯客户端根据手机软件开发工具包得到手机号,或者读取之前已存储在即时通讯客户端存储单元中的手机号,提交至即时通讯服务器;
(C)即时通讯客户端发送包含手机标识信息的短消息至一服务提供商(SP)的特服号(Short Number)或其他可以获取手机号的移动运营商服务号,该服务提供商的无线服务器提取出用户的手机号码,与手机标识信息建立关联并保存至服务器端存储单元;
(D)即时通讯客户端通过传递参数给一可获取手机号码的WAP接口,该WAP接口返回手机号码给即时通讯服务器。
步骤S107:判断即时通讯服务器的数据库中是否已存在上一步接收到的手机号,若已存在则进入步骤S108,若不存在则进入步骤S109。
请参见图3,即时通讯服务器端的数据库中存有一张用户基本信息表,表项分别是:各用户的手机号、手机设备号、SIM卡标识号、创建时间、有效标志(譬如账号是否被屏蔽)、最后登录时间、登录次数、营救密码(设置该密码后,换手机后使用手机号码和该密码登录后可以恢复通讯录,或者用户设置了安全模式,每次都手工输入手机号码与该密码进行登陆)、登陆模式(譬如是否安全模式)。应理解,数据表的设计可以多种多样,并不用以限制本发明。其中手机号是该数据表的唯一标识。实际上,该表此时主要起到身份验证的作用,将接收到的手机号与用户基本信息表中存储的手机号作比较,查询其是否已经存在。
步骤S108:判断接收到的该手机号对应的手机标识信息是否与服务器数据库中存储的相同。若相同则进入步骤S112,若不同则进入步骤S110。
步骤S109:在服务器数据库中添加接收到的这一组手机号和手机标识信息。将接收到的手机号和手机标识信息作为一个数据元组添加在用户基本信息表中,然后进入步骤S112。
步骤S110:服务器询问用户基本信息是否需要更新,若需要则进入步骤S111,若不需要则禁止登录。在这种情况下,用户的手机号在服务器数据库中已存在,但是却和对应的手机标识信息不一致。例如,用户丢失了手机和SIM卡,后面通过新的手机和新的SIM卡用原先的手机号登录服务器,此时手机号已存在于服务器数据库中,但却和对应的手机设备号、SIM卡标识号不一致。此时,服务器询问是否需要进行更新。更新时,要求用户输入原手机号码和营救口令,以确保安全。
步骤S111:服务器对数据库中对应该手机号的用户基本信息进行更新。即时通讯服务器在用户基本信息表中查找到该手机号对应的数据元组,将新的手机标识信息存入相应字段。
步骤S112:即时通讯服务器允许用户登录。
步骤S113:即时通讯客户端将客户端数据库中的联系人与服务器端数据库的联系人进行同步,然后分别进入步骤S114和S116。
请同时参见图3,在服务器端数据库中还存储了与客户端数据库相对应的数据表:用户联系人信息表和用户状态信息表。其中用户联系人信息表包括所有用户自己的手机号、联系人手机号码、所属组名、建立时间、标志位(譬如1表示对方未接收添加的通知,2表示互相添加等)。其中,用户自己的手机号和联系人手机号码联合作为表的关键字。而用户状态信息表包含所有用户的手机号、用户即时通讯状态、用户自行设置状态、用户手机操作状态、签名、昵称、更新时间。这些数据表之间通过手机号关联。应理解,数据表的设计可以多种多样,并不用以限制本发明。
服务器端的用户联系人信息表综合了所有客户端数据表的联系人信息。举例来说,如图4所示,位于即时通讯客户端的用户A的即时通讯联系人表21中有用户B、C、E的联系人信息,用户B的即时通讯联系人表22中有用户A、C、F的联系人信息,用户C的即时通讯联系人表23中有用户A、B、F的联系人信息,则位于服务器端的用户联系人信息表24中有A、B、C、E、F的信息。
本步骤所指的同步示例如下:当用户A新增了联系人G,在登录服务器之后将新的联系人信息传给服务器,服务器在数据库中以手机号为标识查询,发现数据库中不存在G的信息后,在用户联系人信息表24中增加关于G的信息。
步骤S114:即时通讯客户端向服务器发送查询联系人的用户状态信息的请求。
步骤S115:即时通讯服务器根据该客户端联系人的手机号在数据库中查询到用户状态并返回给客户端,然后进入步骤S117。
举例来说,如图5所示,用户A的客户端数据库中存有即时通讯联系人表31,其中联系人有B、C、E,而服务器端数据库中存有用户状态信息表32,其中联系人有A、B、C、E、F。当服务器接收到用户A的查询状态请求后,以B、C、E的手机号在用户状态信息表32中查找,将B、C、E对应的数据元组信息返回给用户A以更新用户A的即时通讯联系人表31。
查询用户状态的时机可以是客户端登录服务器之后,也可以每隔设定的周期进行一次查询。
步骤S116:即时通讯服务器保存即时通讯客户端的IP地址、所连接的服务器IP地址、套接口描述字等网络连接信息,为即时通讯做准备,然后进入步骤S117。
步骤S117:即时通讯客户端之间以手机号为即时通讯ID,通过即时通讯服务器进行即时通讯。
请同时参见图2和图3,在客户端和服务器端都存有聊天记录表,包含消息历史编号、发送手机号、接收手机号、消息内容、发送时间、接收时间、消息类型(比如是否离线留言,消息格式是否是SMS或MMS)。
请参见图6所示,在用户A和B满足以下条件的情况下开始进行即时通讯:用户A的手机电话本或名片夹,有联系人用户B的信息(包含手机号码);用户B的手机电话本或名片夹,有联系人用户A的信息(包含手机号码);用户A配备了基于或囊括手机电话本或名片夹的即时通讯客户端A,已经完成注册并登录;用户B配备了基于或囊括手机电话本或名片夹的即时通讯客户端B,已经完成登录。
用户A向用户B发送消息,将消息提交给即时通讯服务器,服务器查询用户B连接的主机IP、客户端IP地址及套接口描述字等网络连接信息,然后将消息发送给用户B客户端,向用户B提示并呈现消息内容。用户B写回复消息,将消息提交至服务器端,即时通讯服务器查询用户A连接的主机IP、客户端IP地址及套接口描述字等网络连接信息,将消息提交给用户A,最后向用户A呈现回复消息。用户A和B之间以上述的流程互发消息。该示例是建立在两个用户均登录服务器的情况下,如果某一用户并没有登录在服务器上,则发往该用户的消息临时存储在一个消息数据库中,当此用户下次登录服务器时,存储在消息数据库中的消息发送至该用户的客户端。
这里即时通讯的消息类型主要是基于≥2.5G移动通讯网络的消息类型,例如GPRS上网或者CDMA上网等,目前主要按照网络流量或包月来计费。即时通讯客户端和即时通讯服务器端可以基于TCP/IP协议,也可以基于UDP协议进行通讯。即时通讯客户端A,及即时通讯客户端B,所连接的即时通讯服务器端,可以是多台服务器,可以分别连接不同的服务器。消息的转发,依据网络连接信息来确定。
综上,在步骤S101~步骤S117中,客户端的联系人信息存储于即时通讯客户端的数据库中。除此之外,还可用文件格式替代数据库存储客户端的联系人信息,即不使用数据库,而将联系人信息直接存储于即时通讯客户端的文件中,随后将电话本中的联系人信息与客户端的文件进行同步。同样地,在服务器端,即时通讯服务器数据库也可由服务器端的文件来代替。此外,客户端与服务器端的其他表,譬如用户状态信息表、进程-消息-状态对照关系、聊天记录表等,都可以用文件的形式来存储。因此,我们将数据库和文件统称为存储单元。
甚至,电话本中的联系人信息不用全部导入客户端的存储单元,只需通过手机号等标识信息建立起电话本和客户端即时通讯联系人信息之间的映射关系。例如,在客户端存储单元中保存一张联系人手机号的列表,以供索引电话本中的姓名等信息,用手机号建立起电话本和客户端存储单元中相关联系人之间的映射关系。
如果直接为电话本增加即时通讯功能,或者完全基于或囊括电话本的存储单元建立即时通讯系统,可以利用电话本存储单元的空白字段,或为电话本存储单元增加空白字段。空白字段,也称冗余字段,其用途是方便今后存储更多的扩展信息。对于这些情况,可以将这些空白字段定义为即时通讯相关信息,譬如手机标识信息,用户即时通讯状态等。请参见图5,针对电话本存储单元已存在或已扩展空白字段情况下的实施例。下面是对图5所示实施例各步骤的详细描述。
步骤S201:扫描客户端的电话本。
步骤S202:是否已经定义电话本的空白字段。如果是则转入步骤S204,否则进入步骤S203。
步骤S203:定义电话本的空白字段。一些智能手机的电话本中预留了一些空白字段,因为即时通讯的联系人信息除了一般电话本所存储的姓名、手机号码等信息外,还可能需要增加用户状态、昵称、签名、手机标识信息等信息。这些信息通过电话本预留的空白字段来定义。
步骤S204:即时通讯客户端获取用户的手机号和手机标识信息并发送到即时通讯服务器。
步骤S205:即时通讯服务器的存储单元中是否已存在步骤S204中接收到的手机号?如果是,进入步骤S206,否则进入步骤S207。
步骤S206:接收到的手机号和手机标识信息的组合是否与服务器存储单元中存储的组合相同。若是则进入步骤S210,否则进入步骤S208。
步骤S207:服务器存储单元中添加接收到的这一组手机号和手机标识信息,然后进入步骤S210。
步骤S208:服务器询问用户基本信息是否需要更新。若是则进入步骤S209,否则禁止登录。
步骤S209:服务器对存储单元中对应该手机号的用户基本信息进行更新。
步骤S210:即时通讯服务器允许用户登录。
步骤S211:即时通讯客户端将电话本中的联系人与服务器端存储单元的联系人进行同步,对定义的空白字段更新。然后同时进入步骤S212和步骤S214。
步骤S212:即时通讯客户端向服务器发送查询联系人的用户状态信息的请求。
步骤S213:即时通讯服务器根据该客户端联系人的手机号在存储单元中查询到用户状态并返回给客户端,然后进入步骤S215。
步骤S214:即时通讯服务器保存即时通讯客户端的IP地址、所连接的服务器IP地址、套接口描述字等网络连接信息,为即时通讯做准备,然后进入步骤S215。
步骤S215:即时通讯客户端之间以手机号为即时通讯ID,通过即时通讯服务器进行即时通讯。
本发明还包括用户状态的设置过程,进一步包括用户即时通讯状态的设置、用户自行设置状态的设置以及用户手机操作状态的设置。这3种状态的设置,并不作为基于或囊括电话本的即时通讯方法的充分必要条件,而作为该方法的有效补充。
其中用户即时通讯状态的设置与传统即时通讯软件的原理是相同的,即时通讯客户端在登录或离开服务器时将登录/离开的状态信息发送给服务器,存储于服务器端的用户状态信息表中。举例来说,用户A登录服务器,自动将“登录”状态发送给服务器,用户状态信息表中用户A的用户即时通讯状态字段由“离线”更新为“登录”。当用户B(用户A在用户B的联系人名单中)登录服务器后,通过查询服务器上用户状态信息表,就可以知道其联系人用户A的状态,于是用户B能在自己的手机上看到用户A的即时通讯状态已更新为“登录”。
用户自行设置状态的设置过程如下:用户登录服务器后在客户端选择或输入一用户状态信息(比如“我在洗澡”、“正在吃饭”、“正在回家路上”、“正在开车”等),客户端将该信息发送至服务器,存储于服务器端用户状态信息表中对应该用户的用户自行设置状态字段。当用户的联系人登陆即时通讯服务器,或者刷新请求其联系人状态信息时,服务器会返回其联系人的状态信息,包括用户自行选择或输入的用户状态信息。
用户操作手机状态(例如“在拨打或接听电话”、“WAP上网”、“打开手机翻盖”等)的设置如下:首先需要在客户端进行自动监控手机进程的方法,用于获取用户操作手机的当前状态(例如手机翻盖打开、按键、通话等状态),然后再将该状态同步至即时通讯服务器。图6示出了该方法的流程,请参见图6,该自动监控方法应用于即时通讯客户端,分两个线程对手机操作状态进行监控。
步骤S501~步骤S508示出了通过新进程捕获分析用户状态进行更新的流程。
步骤S501:运行进程扫描线程定时器。使进程扫描线程投入运行,每隔设定的周期进步步骤S502。
步骤S502:扫描进程表。
步骤S503:判断是否有新进程出现,若无则返回步骤S501,否则进入步骤S504。
步骤S504:判断该新进程是否与用户状态相关。若不相关则返回步骤S501,否则进入步骤S505。
步骤S505:收集该新进程的启停时间、进程名称、资源消耗、进程的日志或缓存等信息。
步骤S506:根据上述信息进行分析,根据进程-消息-状态对照关系表判定新进程可能对应的用户的具体状态。
步骤S507:与原来的用户操作手机的状态相比,判断是否需要更新。如果不需要则返回步骤S501,否则进入步骤S508。
步骤S508:将用户的具体状态发送至即时通讯服务器端进行更新。然后返回至步骤S501,如此循环直至自动监控软件停止运行。
步骤S511~步骤S518示出了通过消息(包括系统消息和按键消息)捕获分析用户状态并进行更新的流程。
步骤S511:运行消息(包括系统消息和按键消息)扫描线程定时器。使消息扫描线程投入运行,每隔设定的周期进步步骤S512。
步骤S512:不断捕获消息。
步骤S513:判断该捕获到的消息是否与用户状态相关。若不相关则返回步骤S511,否则进入步骤S514。
步骤S514:收集该消息的相关信息。
步骤S515:根据上述信息进行分析,根据进程-消息-状态对照关系表判定消息可能对应的用户具体状态。
步骤S516:与原来的用户操作手机的状态相比,判断是否需要更新。如果不需要则返回步骤S511,否则进入步骤S517。
步骤S517:将用户的具体状态发送至即时通讯服务器端进行更新。然后返回至步骤S511,如此循环直至自动监控软件停止运行。
另外,用户也可设置昵称、个人WAP站、签名等个性化信息,设置的过程与用户自行设置状态的设置过程类似,在此不再赘述。
在本发明的另一实施例中,手机用户先登录服务器,登录完成之后再在客户端对电话本和客户端联系人信息进行同步。具体步骤如下:
步骤S301:即时通讯客户端获取用户的手机号和手机标识信息,发送到即时通讯服务器。
步骤S302:判断即时通讯服务器的数据库中是否已存在上一步接收到的手机号,若已存在则进入步骤S303,若不存在则进入步骤S304。
步骤S303:判断接收到的该手机号对应的手机标识信息是否与服务器数据库中存储的相同。若相同则进入步骤S307,若不同则进入步骤S305。
步骤S304:在服务器数据库中添加接收到的这一组手机号和手机标识信息。将接收到的手机号和手机标识信息作为一个数据元组添加在用户基本信息表中,然后进入步骤S307。
步骤S305:服务器询问用户基本信息是否需要更新,若需要则进入步骤S306,若不需要则禁止登录。
步骤S306:服务器对数据库中对应该手机号的用户基本信息进行更新。即时通讯服务器在用户基本信息表中查找到该手机号对应的数据元组,将新的手机标识信息存入相应字段。
步骤S307:即时通讯服务器允许用户登录。
步骤S308:即时通讯客户端将电话本与服务器端数据库的联系人进行同步,然后分别进入步骤S309。
步骤S309:扫描即时通讯客户端。
步骤S310:判断是否已经建立即时通讯客户端数据库。若未建立则进入步骤S311,若已建立则进入步骤S313。
步骤S311:建立即时通讯客户端数据库。
步骤S312:将电话本中的联系人信息导入即时通讯客户端数据库中。
步骤S313:即时通讯客户端数据库与电话本的联系人信息进行同步,然后同时进入步骤S314和S316。
步骤S314:即时通讯客户端向服务器发送查询联系人的用户状态信息的请求。
步骤S315:即时通讯服务器根据该客户端联系人的手机号在数据库中查询到用户状态并返回给客户端,然后进入步骤S317。
步骤S316:即时通讯服务器保存即时通讯客户端的IP地址、所连接的服务器IP地址、套接口描述字等网络连接信息,为即时通讯作准备,然后进入步骤S317。
步骤S317:即时通讯客户端之间以手机号为即时通讯ID,通过即时通讯服务器进行即时通讯。
上述步骤中,S301~S308与图1所示实施例的步骤S106~步骤S113类似,S309~S313与图1的步骤S101~S105类似,S314~S317与图1的步骤S114~S117类似,因此各步骤的具体处理在此不再赘述。
另一方面,本发明也公开了一种即时通讯系统,请参见图10至图13,该系统60包括多个即时通讯客户端61(图中仅示出一个)和一即时通讯服务器62。即时通讯客户端61包括操作系统运行单元611、系统对象单元612、客户端存储单元613、用户基本信息同步单元614、第一联系人信息同步单元615、第二联系人信息同步单元616、用户状态信息更新请求单元617、用户状态设置单元618以及即时通讯单元619。即时通讯服务器62包括服务器端存储单元621、用户注册和验证单元622、消息转发单元623、用户状态信息更新响应单元624、服务器端联系人信息同步单元625。
操作系统运行单元611运行手机上的操作系统,例如Windows CE、Symbian等,也包括KVM运行环境。系统对象单元612中设有SMS的发送引擎6121和用于存储电话本信息的电话本存储单元6122。
客户端存储单元613存储客户端的即时通讯相关信息,可以以数据库的形式存储,也可以以文件的形式存储。作为一个示例,该存储单元613以数据库形式存储以下数据表:
用户基本信息表,因为只有一条记录,也可以文件形式存储。表项字段示例如下:用户自己的手机号、手机设备号、SIM卡标识号、创建时间、用户最新的即时通讯状态(例如“上线”、“离线”、“忙碌”等)、用户最新的自行设置状态(比如“正在吃饭”、“正在回家路上”等)以及用户最新的手机操作状态(例如“开机”、“正在通话”、“关机”等)、最后登录时间以及状态更新时间等。
即时通讯联系人表,该表项示例为:联系人手机号码、姓名、建立时间、与电话本同步标志以及与服务器同步标志。同时,也可以将电话本的联系人信息导入即时通讯客户端数据库中存储成一张表,两张表之间通过手机号码关联。
进程-消息-状态对照关系表,包括关键词(譬如是进程名称或消息名称)、状态名称、记录添加时间(即该条记录添加时间)、关键词类型(关键词的类型,1表示进程名称、2表示系统消息、3表示按键消息)字段。该表建立后,即时通讯客户端根据客户端操作系统的类型,初始化相应的数据。消息分析单元816,可以根据关键词、关键词类型,查询所对应的手机操作状态。譬如根据WAP浏览器进程在启动状态,判定用户可能在使用手机上网。
在客户端和服务器端都有聊天记录表,包含消息历史编号、发送手机号、接收手机号、消息内容、发送时间、接收时间、消息类型。上述表都可以以文件形式存在。在这里,数据表的设计并不影响本发明的保护范围。
第一联系人信息同步单元615将电话本的联系人信息导入客户端存储单元613,也可将客户端存储单元613中的联系人信息导入电话本,并在两者之间做同步处理,使电话本的联系人信息与客户端存储单元613的相应的联系人信息一一对应。例如,当用户开启即时通讯软件,对客户端存储单元613中的联系人信息有所修改(包括增加/删除/修改联系人)时,第一联系人信息同步单元615将修改后的联系人信息导入至电话本以更新电话本的联系人信息。用户在电话本上修改联系人信息,当该用户开启即时通讯软件后,该同步单元615将修改后的电话本联系人信息导入客户端存储单元613以更新联系人信息。
客户端存储单元613不必完整的存储电话本中的联系人信息,可以存储与电话本的映射关系以及用户状态信息,第一联系人信息同步单元615保持电话本与客户端存储单元613之间的映射关系,在电话本的联系人信息与客户端存储单元613中存储的联系人信息之间做映射处理。
用户基本信息同步单元614将用户手机号和手机标识信息同步至即时通讯服务器62,然后由服务器62的用户注册和验证单元622接收。服务器端存储单元621存储用户基本信息表,例如,该表的表项分别是手机号、手机设备号、SIM卡标识号、创建时间、有效标志(譬如是否屏蔽用户)、最后登录时间、登录次数、营救密码、登陆模式。用户注册和验证单元622在用户基本信息表中查找接收到的用户手机号,判断该手机号是否已存储于用户基本信息表中。若不存在,则用户注册和验证单元622将新的手机号、手机设备号和SIM卡标识号存入用户基本信息表中。若已存在,用户注册和验证单元622判断对应的手机设备号和SIM卡标识号是否一致。若一致则允许用户登录服务器62,若不一致则询问用户是否需要更新手机设备号和/或SIM卡标识号,在用户选择需要更新后用户注册和验证单元622将接收到的新的手机设备号和/或SIM卡标识号覆盖原来存储在用户基本信息表的手机设备号和/或SIM卡标识号。
第二联系人信息同步单元616将客户端存储单元613的联系人信息发送至即时通讯服务器62,由服务器端联系人信息同步单元625接收后作同步处理。服务器端存储单元621中除了存储上述的用户基本信息表,还存储与客户端数据库613对应的数据表。
例如,这些数据表包括:用户联系人信息表、用户状态信息表和聊天记录表。用户联系人信息表包括所有用户自己的手机号、联系人手机号码、所属组名、建立时间、标志位(譬如1表示对方未接收添加的通知,2表示互相添加等)以及其它通讯录字段,其中用户自己的手机号和用户好友号码联合作为表的关键字。用户状态信息表包含所有用户的手机号、用户自行设置状态、用户即时通讯状态、用户手机操作状态、签名、昵称、更新时间等字段。各张表之间通过手机号关联。聊天记录表包含消息历史编号、发送手机号、接收手机号、消息内容、发送时间、接收时间、消息类型。在这里,数据表的设计并不影响本发明的保护范围。
当一即时通讯客户端新增了一个联系人,而服务器端存储单元621中并没有存储该联系人的信息,第二联系人信息同步单元616将该新增的联系人信息发送至服务器62,由服务器端联系人信息同步单元625接收并将其添加进服务器端存储单元621中。
同时,第二联系人信息同步单元616还接收服务器端发送来的联系人信息,若服务器端的联系人信息有所变动(例如用户状态更改、更改),则在客户端存储单元613中作相应更新。上述的同步更新处理可在用户登录服务器62时立即进行,也可以通过一个触发单元(未示出)设置一个周期,控制同步单元616周期性的作同步更新。
用户状态设置单元618进一步包括用户即时通讯状态设置单元6181、用户自行设置状态设置单元6182、用户手机操作状态设置单元6183。
用户即时通讯状态设置单元6181在客户端61登录/离开服务器62时自动将登录/离开的状态信息通过用户状态信息更新请求单元617向即时通讯服务器62发出该用户即时通讯状态信息,请求在服务器端62更新用户手机号对应的用户即时通讯状态信息。位于服务器62的用户状态信息更新响应单元624接收客户端61发来的用户状态信息更新请求后,在存储用户状态信息的数据表中根据用户手机号找到该用户对应的数据元组,更新其中的用户即时通讯状态。
用户自行设置状态设置单元6182接收用户输入的状态信息,通过用户状态信息更新请求单元617向即时通讯服务器62发出该用户自行设置状态信息,请求在服务器62端更新用户手机号对应的用户自行设置状态信息。位于服务器62的用户状态信息更新响应单元624接收客户端61发来的用户状态信息更新请求后,在存储用户状态信息的数据表中根据用户手机号找到该用户对应的数据元组,更新其中的用户自行设置状态。
用户手机操作状态设置单元6183通过内设的自动监控单元8周期性监测用户手机操作状态是否有更新,若有则将该操作状态通过用户状态信息更新请求单元617发往即时通讯服务器62,请求在服务器62端更新用户手机号对应的用户手机操作状态信息。位于服务器62的用户状态信息更新响应单元624接收客户端61发来的用户状态信息更新请求后,在存储用户状态信息的数据表中根据用户手机号找到该用户对应的数据元组,更新其中的用户手机操作状态状态。
自动监控单元8包括第一监控单元80、第二监控单元81。第一监控单元80通过对新进程的捕获分析用户状态后确定是否需要更新,包括第一定时器801、新进程扫描单元802、进程相关性判断单元804、进程信息收集单元805、进程分析单元806、用户状态更新判断单元807。
第一定时器801设定扫描进程的周期,新进程扫描单元802根据设定的周期扫描进程表,并判断扫描到的进程是否为新出现的进程,如果不是新进程,则由新进程扫描单元802作重新扫描,如果是新进程则由进程相关性判断单元804判断该进程是否与用户手机的状态相关。如果该进程与用户手机的状态相关,则由进程信息收集单元805收集进程的启停时间、进程名、资源消耗、进程日志或缓存等,如果不相关则由新进程扫描单元802作重新扫描。进程分析单元806根据收集得到信息以及进程-消息-状态对照关系表,判定用户手机的具体状态。用户状态更新判断单元807将判定用户手机的具体状态与服务器62对应的当前手机状态对比,判断是否需要进行更新。
第二监控单元81通过对消息(包括系统消息和按键消息)的捕获分析用户状态后判断是否需要更新,包括第二定时器811、消息捕获单元812、消息相关性判断单元814、消息收集单元815、消息分析单元816、用户状态更新判断单元817。
第二定时器811设定捕获系统消息的周期,消息捕获单元812根据设定的周期捕获系统消息或按键消息,由消息相关性判断单元814判断该系统消息或按键消息是否与用户手机的状态相关。如果该消息与用户手机的状态相关,则由消息收集单元815收集消息相关信息,如果不相关则由消息捕获单元812重新开始捕获。消息分析单元816根据收集得到信息以及进程-消息-状态对照关系表,判定用户手机的具体状态。用户状态更新判断单元817将判定用户手机的具体状态与服务器62对应的当前手机状态对比,判断是否需要进行更新。
位于即时通讯客户端61的即时通讯单元619包括客户端消息提交单元91、客户端消息接收单元92,位于即时通讯服务器62的消息转发单元623包括服务器端消息接收单元93、服务器端消息发送单元94和网络连接信息查询单元95。例如,用户A向用户B发送消息的过程如下:用户A的客户端消息提交单元91向服务器62发送消息,服务器端消息接收单元93接收发来的消息,查询用户B的客户端套接口描述字,然后由服务器端消息发送单元94向用户B的客户端发送消息,用户B的客户端消息接收单元92接收服务器端消息发送单元94发来的消息。
应理解,上述实施例只是用于示例,包括数据表的设计等都不应用来限制本发明。且,本发明的发明点在于:(1)将手机中的电话本直接导入即时通讯的联系人列表或将二者映射起来,无需象传统的即时通讯软件那样由用户一个一个添加即时通讯联系人;(2)本发明通过对比客户端的手机号、手机标识信息是否与服务器一致来代替传统即时通讯软件的身份验证功能;(3)以用户的手机号或与手机号对应的生成ID作为即时通讯ID;(4)在联系人信息中增加了用户状态、昵称、签名等个性化信息方便用户查找到联系人的当前状态;(5)在客户端设置一个自动监控单元,能够自动监测手机的当前操作状态。
应理解,上述实施例是提供给本领域普通技术人员来实现或使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。