PHP开发客服系统之GatewayWorker篇

1 引言

上一小节,我们了解了一下开发客服系统的思路,所以本小节咱们就开门见山的来讲吧,这一小节我们会接触几个开发过程中常见的一个函数,其它没有讲到的可以看下官方文档的说明哦。 

开发文档:http://workerman.net/gatewaydoc/  

 

2 项目的目录结构

下载地址:https://www.workerman.net/download

 PHP开发客服系统之GatewayWorker篇_第1张图片

下载解压后的目录如下:

.
├── Applications // 应用项目
│   └── YourApp  // 其中一个项目目录,目录名可以自定义
│       ├── Events.php                 // 处理业务逻辑
│       ├── start_gateway.php          // gateway进程启动脚本,包括端口号等设置
│       ├── start_businessworker.php   // businessWorker进程启动脚本
│       └── start_register.php         // 注册服务启动脚本
│
├── start.php // 全局启动脚本
│
└── vendor    // GatewayWorker框架和Workerman框架源码目录

 由于我们是使用websocket协议来开发客服系统的,所以我们得先把协议修改为websocket,修改如下所示:

PHP开发客服系统之GatewayWorker篇_第2张图片

3 启动应用 

在window开发的同学可以双击start_for_win.bat来启动应用,在Linux或Mac开发的同学可以使用命令php start.php stort来启动应用,如果没有报错的话,那说明配置没问题,接下来就可以进入开发阶段了

 PHP开发客服系统之GatewayWorker篇_第3张图片

 window下正常启动后的效果

 

 4 处理业务逻辑

GatewayWorker的业务逻辑都有Events.php来处理,也就是说在开发过程中我们只需要关注该文件即可。

4.1 Events类中的回调函数

当businessWorker进程启动时触发

void Event::onWorkerStart(Worker $businessWorker);

 当客户端连接上gateway进程时触发。

void Events::onConnect(string $client_id);

当收到一个客户端请求后触发 

void Events::onMessage(string $client_id, mixed $recv_data);

客户端与Gateway的连接断开时触发。 

void Events::onClose(string $client_id);

当businessWorker进程退出时触发。 

void Event::onWorkerStop(Worker $businessWorker);

在开发客服系统的过程中,各个回调函数所处理的逻辑

 onWorkerStart:初始化数据(数据库连接)或启动定时任务(数据统计)等

 onConnect:过滤连接,比如不让还名单的访客连接到客服系统

 onMessage:处理主要的业务逻辑(访客及客服的初始化、转发聊天数据、转接访客、评价等)

 onClose:用户离线或客服离线后的处理

 onWorkerStop:不处理可留空

 4.2 Gateway类

向客户端client_id发送数据 

void Gateway::sendToClient(string $client_id, string $send_data);

将client_id与uid绑定 

void Gateway::bindUid(string $client_id, mixed $uid);

判断$uid是否在线 

int Gateway::isUidOnline(mixed $uid);

向uid绑定的所有在线client_id发送数据

void Gateway::sendToUid(mixed $uid, string $message);

将client_id加入某个组 

void Gateway::joinGroup(string $client_id, mixed $group);

将client_id从某个组中删除 

void Gateway::leaveGroup(string $client_id, mixed $group);

 向某个分组的所有在线client_id发送数据

void Gateway::sendToGroup(mixed $group, string $message [, array $exclude_client_id = null [, bool $raw = false]]);

 sendToClient:客服连接到客服系统时可以给该访客发送一些欢迎信息等

 bindUid:将访客的client_id与用户ID绑定,方便与现有的系统业务结合

 isUidOnline:判断访客是否在线,如果不在线的话可以将该信息设为未读信息

 sendToUid:根据uid给访客发送数据

 joinGroup:加入某个分组,推荐一个客服一个分组,这样客服就可以给自己服务的访客广播消息

 leaveGroup:离开某个分组,做转接功能时,可以将该访客从当前分组中删除,然后在加入转接后的分组

 sendToGroup:给当前分组广播消息

Gateway类提供的接口还有其它的,这里笔者只列出了开发客服系统中常见的几个

小结

本小节就先介绍到这里了,下一小节我们来了解一下如何通过JS连接到GatewayWorker

 

 

 

 

 

你可能感兴趣的:(GatewayWorker,PHP,客服系统)