一种基于XMPP协议的在线客服中心即时消息交换系统的制作方法

文档序号:11842347阅读:473来源:国知局
一种基于XMPP协议的在线客服中心即时消息交换系统的制作方法与工艺

本发明涉及一种通信技术,尤其是涉及一种基于XMPP协议的在线客服中心即时消息交换系统。



背景技术:

在线客服中心是基于互联网的客服中心,客户和客服中心之间通过消息进行沟通。当客服中心面对的客户达到一定数量后,一个客服就无法应付了,需要多个客服在客服中心为客户提供在线服务,而客户并不会看到每个客服的号码或别名。因此,如同电话客服中心一样,一个客服中心为客户只提供一个入口,进入这个入口的消息需要路由到相应的客服,同时客服通过这个入口发出的消息也需要路由到相应的客户,这就是消息交换要解决的问题。



技术实现要素:

本发明的目的是针对现有技术不足之处而提供一种基于XMPP协议的在线客服中心即时消息交换系统。该系统使客户与在线客服中心的客服通过一个出入口实现消息通讯,并能让多个客服同时为一个客户提供服务。这样客户只需要面对一个客服中心,而不需要面对客服中心中的众多客服,从而为客户带来便利。

本发明的目的是通过以下措施来实现:

一种基于XMPP协议的在线客服中心即时消息交换系统,包括有客户终端、客服终端、客户侧XMPP服务器A、客服侧XMPP服务器B,其特征在于,还设有消息交换服务器、交换控制服务器;其中:

所述客户终端含客户群局域网A,客户群的实体地址JID为:c1@A.com、c2@A.com、c3@A.com、c4@A.com、…;

所述客服终端含客服群局域网B,客服群的实体地址JID为:a1@B.com、a2@B.com、a3@B.com、a4@B.com、…;

所述客户侧XMPP服务器A、客服侧XMPP服务器B、消息交换服务器、交换控制服务器的操作系统为Linux、或 Unix、或Windows,并持有JAVA虚拟机;

所述客户侧XMPP服务器A、客服侧XMPP服务器B为符合XMPP协议的服务器,其含有Tigase、或OpenFire, 客户侧XMPP服务器A的实体地址JID为:A.com、客服侧XMPP服务器B的实体地址JID为:B.com;

所述消息交换服务器安装消息交换程序PBX,消息交换服务器一端的实体地址是pbx@A.com、另一端实体地址是pbx@B.com;

所述交换控制服务器安装交换控制程序ACD,交换控制服务器的实体地址JID是m@B.com,交换控制程序ACD在客服侧XMPP服务器B的MUC服务里创建房间,房间的实体地址JID是room1@B.com、 room2@B.com、…;

所述客户侧XMPP服务器A接入客户终端的局域网A,消息交换服务器的pbx@A.com接入客户侧XMPP服务器A,消息交换服务器的pbx@B.com、交换控制服务器的m@B.com接入客服侧XMPP服务器B, 客服侧XMPP服务器B接入客服终端的局域网B。

进一步,所述消息交换服务程序PBX使用XMPP协议栈的JAVA库通过TCP/IP与客户侧XMPP服务器A、客服侧XMPP服务器B建立XMPP连接,消息交换服务程序PBX在客户侧、客服侧各设有处理线程,处理线程为每个客户的呼叫建立一个会话CALL对象,消息交换服务程序PBX基于CALL对象的实体地址JID进行管理。

进一步,所述消息交换服务器PBX客户侧连接XMPP服务器A的XMPP协议栈的JAVA库设有消息缓存队列,在会话呼叫建立之前收到的消息缓存在这里,待建立好后再转发,消息交换服务程序PBX的客户侧、客服侧的处理线程都可以访问CALL对象,通过CALL对象实现线程间的消息交互。

进一步,所述交换控制服务程序ACD使用XMPP协议栈的JAVA库通过TCP/IP与客服侧XMPP服务器B建立XMPP连接,协议栈的JAVA库提供XMPP协议支持,收发XMPP报文,协议栈的JAVA库收到的消息交由处理线程处理,处理线程实现呼叫请求、创建房间、分配房间,处理线程为客户申请房间,并将结果通知消息交换服务器的客服侧JID,交换控制服务程序ACD基于房间和消息缓存队列进行管理。

进一步,为客户申请房间的结果为申请成功、给出房间的实体地址JID、并通知客服加入房间,并将该房间与申请对应的客户CALL对应,实现消息转发。

进一步,为客户申请房间的结果为申请失败,给出放入消息缓存队列重新等待分配房间的信息。

与现有技术相比,采用了本发明提出的一种基于XMPP协议的在线客服中心即时消息交换系统,具有如下优点:1)本发明使客户与在线客服中心的客服通过一个出入口实现消息通讯,并能让多个客服同时为一个客户提供服务,从而为客户带来便利;2)本发明涉及的ACD,PBX,客服等都是XMPP服务器的终端实体,也即本协议是终端间的协议,不影响XMPP服务器,也不需要XMPP服务器做任何修改,充分利用其平台性和协议扩充便利性,通过创新的系统架构和简洁的扩展协议实现在线客服中心的消息交换功能,改写了传统的只能一对一的服务,取得了突破性的进展。

附图说明:

图1是本发明提出的一个实施例的逻辑结构示意图;

图2是图1实施例消息交换处理序列图。

具体实施方式:

下面结合附图对具体实施方式作详细说明:图1示出了本发明的一个实施例的逻辑结构。图中,一种基于XMPP协议的在线客服中心即时消息交换系统,包括有客户终端、客服终端、客户侧XMPP服务器A、客服侧XMPP服务器B,其特征在于,还设有消息交换服务器、交换控制服务器;其中:

所述客户终端含客户群局域网A,客户群的实体地址JID为:c1@A.com、c2@A.com、c3@A.com、c4@A.com、…;

所述客服终端含客服群局域网B,客服群的实体地址JID为:a1@B.com、a2@B.com、a3@B.com、a4@B.com、…;

所述客户侧XMPP服务器A、客服侧XMPP服务器B、消息交换服务器、交换控制服务器的操作系统为Linux、或 Unix、或Windows,并持有JAVA虚拟机;

所述述客户侧XMPP服务器A、客服侧XMPP服务器B为符合XMPP协议的服务器,其含有Tigase、或OpenFire, 客户侧XMPP服务器A的实体地址JID为:A.com、客服侧XMPP服务器B的实体地址JID为:B.com。本实施例选用开源Tigase服务器作为XMPP服务器,该服务器提供MUC群聊协议服务;

所述消息交换服务器安装消息交换程序PBX,消息交换服务器一端的实体地址是pbx@A.com、另一端实体地址是pbx@B.com;

所述交换控制服务器安装交换控制程序ACD,交换控制服务器的实体地址JID是m@B.com,交换控制程序ACD在客服侧XMPP服务器B的MUC服务里创建房间,房间的实体地址JID是room1@B.com、 room2@B.com、…;

所述客户侧XMPP服务器A接入客户的局域网A,消息交换服务器的pbx@A.com接入客户侧XMPP服务器A,消息交换服务器的pbx@B.com、交换控制服务器的m@B.com接入客服侧XMPP服务器B, 客服侧XMPP服务器B接入客户侧的局域网B。

本实施例的结构中,以XMPP服务器为通信平台,XMPP协议为消息载体,XMPP的MUC为消息传递通道,以消息交换服务器和交换控制服务器实现客户与客服的转接功能,其中,由交换控制服务器负责路由的计算和对消息交换服务器的控制,由消息交换程序(PBX)依据交换控制服务器的指令将来自XMPP服务器A的消息转发给XMPP服务器B,同时负责将来自XMPP服务器B的消息转发给XMPP服务器A。

本发明进一步采取如下措施:

所述的消息交换服务程序PBX使用XMPP协议栈的JAVA库通过TCP/IP与客户侧XMPP服务器A、客服侧XMPP服务器B建立XMPP连接,消息交换服务程序PBX在客户侧、客服侧各自设有处理线程,处理线程为每个客户的呼叫建立一个会话CALL对象,消息交换服务程序PBX基于CALL对象的实体地址JID进行管理。其客户侧连接XMPP服务器A的XMPP协议栈的JAVA库设有消息缓存队列,在会话呼叫建立之前收到的消息缓存在这里,待建立好后再转发,客户侧、客服侧的处理线程都可以访问CALL对象,通过CALL对象实现线程间的消息交互。XMPP协议栈的JAVA库是一个java代码实现的XMPP协议栈库,它提供XMPP通讯封装和协议支持,XMPP协议栈的JAVA库的消息缓存队列存放的是客户的JID。

所述交换控制服务程序ACD使用XMPP协议栈的JAVA库通过TCP/IP与客服侧XMPP服务器B建立XMPP连接,协议栈的JAVA库提供XMPP协议支持,收发XMPP报文,协议栈的JAVA库收到的消息交由处理线程处理,处理线程实现呼叫请求、创建房间、分配房间,处理线程为客户申请房间,并将结果通知消息交换服务器的客服侧JID,交换控制服务程序ACD基于房间和消息缓存队列进行管理。处理线程为客户申请房间的结果为申请成功给出房间的实体地址JID、并通知客服加入房间,并将该房间与申请对应的客户CALL对应,实现消息转发。或为客户申请房间的结果为申请失败,给出放入消息缓存队列重新等待分配房间的信息。客服侧XMPP服务器B的房间是由交换控制服务程序ACD创建的,房间的接听客服的JID可以是多个,ACD通过指令客服加入该房间,实现多个客服同时为一个客户提供服务,房间分配的客户JID,每次会话对应的客户JID值不同,当建好通道后,该值就是当前对应客户的JID,结束后置空。

本系统的工作流程消息交换处理序列图见图2。基本流程分下列几种情况:

基本设置:

1. 消息交换服务程序PBX客户侧连接XMPP服务器A的XMPP协议栈的JAVA库设有消息缓存队列,在会话呼叫建立之前收到的消息缓存在这里。

2. 客服侧XMPP服务器B的MUC群聊协议设置的房间是由交换控制服务程序ACD创建的、并分配房间。创建房间如图2中步骤5.1,将其房间加入分配队列,如图2中步骤5.2,然后分配房间,如图2中步骤6.1,客服终端加入房间,如图2中步骤6.2。

一)客户第一次发送消息给PBX客户侧JID,系统为该消息建立消息交换通道:

1.1. 客户经客户侧XMPP服务器发送消息给PBX客户侧消息处理线程JID;

1.2. PBX的客户侧消息处理线程检查到是第一次消息,执行以下操作:

a)为该客户建立一个CALL对象,用来维护与该客户的消息交换过程;

b)此时CALL对象的状态为呼叫请求中;

c)将客户的消息进行缓存,等待呼叫建立后再发送;

d)向ACD发送《呼叫请求》命令;

1.3. ACD收到《呼叫请求》命令后,为其分配房间,如果没有可分配的则进入消息缓存队列等待,直到有空闲房间;

1.4. 分配成功,向PBX发送指令,告知房间JID;

1.5. PBX的客服侧消息处理线程收到告知房间JID指令,向MUC服务请求加入对应房间;

1.6. MUC服务接受加入请求,并通知对应客服,有客户加入房间;

1.7. 客服侧消息处理线程将在呼叫请求中状态下缓存的消息转发给房间;

1.8. MUC房间将消息发给客服终端;

1.9. 此后客户的消息即可通过PBX发送到MUC房间,然后由房间转发给客服,而客服的消息也可以通过MUC房间转发给PBX,PBX再转发给客户,这样就在客户与客服之间建立了一条有PBX与MUC维护的消息传递通道,客户与客服可通过PBX和MUC实现消息交互功能。

二)客户非第一次发送消息给PBX的客户侧JID:

2.1 客户经客户侧XMPP服务器发送消息给PBX的客户侧JID;

2.2 PBX客户侧消息处理线程检查CALL对象的通道是否已经建立,如果没有建立,则将消息缓存,否则将消息转发给客服侧房间JID的房间;

2.3 MUC将消息发给客服;

2.4 实现了客户消息到客服终端的转发功能。

三)客服发送消息给客户:

3.1客服发送消息到客户对应的MUC的房间;

3.2 MUC服务将消息发送给PBX;

3.3 PBX客服侧消息处理线程收到消息,根据房间JID,找到对应的CALL对象,从CALL对象找到客户的JID;

3.4 PBX客服侧消息处理线程通过客户侧XMPP连接将消息转发给客户终端;

3.5实现了客服消息到客户终端的转发功能;

四)会话的结束:

4.1 PBX的客户侧消息处理线程检测到某CALL对象超时没有消息通过,决定结束该会话,释放通道资源;

4.2启动结束会话流程;

4.3向ACD发送结束会话指令,带房间JID参数;

4.4 ACD收到指令后,回收房间,是房间进入可重新分配状态;

4.5 ACD 确认结束,PBX将会话对象删除,撤销通道信息。

通过以上流程,本系统实现了两个主要功能:

通过PBX与ACD之间的协商,ACD通过某种排队分配算法为客户选择了客服,确定了MUC房间;

通过PBX和MUC,为客户和客服之间建立了一条消息隧道,使客户和客服可以进行消息交互,并实现多个客服同时为一个客户提供服务。

实现了这两个功能,系统就可以为客户提供客服中心功能,对客户提供一个呼叫号码进行呼叫请求,对客服进行集中管理调度。

上面结合附图描述了本发明的实施方式,实施例给出的结构并不构成对本发明的限制,本领域内熟练的技术人员在所附权利要求的范围内做出各种变形或修改均在保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1