七鱼消息接口接入示例

LICENSE

这个项目用java语言封装了七鱼的消息接口,并以微信公众号的开发模式为例子,简单展示了如果使用七鱼的消息接口。

接口封装

有关七鱼消息接口的使用文档,请参阅七鱼官网开发指南

在这个封装包中,SessionClient 封装了向七鱼发送请求的接口,ResponseParser 封装了收到七鱼消息后的响应处理。为了简化微信公众号的接入流程,SessionClient中还封装了直接转发微信消息到七鱼服务器的接口,包括普通文本消息和需要先下载,然后在上传到七鱼的图片和语音消息。其他常规的七鱼消息接口实现可参考各自的接口注释。

公众号示例

使用消息接口一个比较常见的场景就是开发者需要接入公众号的消息到七鱼的客服系统,但在简单的授权模式下,开发者自己不能对消息做任何过滤和处理。而消息接口的接入方式提供了很大的灵活性,但接入成本相对会比较高一些。因此,这里给出了一个简单的demo,用来展示如何利用上面的接口封装来在七鱼和微信之间传递消息。

在这个示例中,当用户发来消息后,会自动转发给七鱼服务器,此时,七鱼会默认将消息交给机器人,并由机器人给出回复。由于七鱼并不知道用户的信息,因此,在发送第一条消息之前,还应该从微信处获取用户信息,然后通过轻量CRM接口同步给七鱼。收到消息后,还可以对消息做一些过滤。例如,为了从机器人转交给人工客服,这里会拦截内容为人工rg的消息,一旦收到这种消息,就会请求人工客服。会话结束后,如果需要用户给客服打分,还可以将评价标准发送给用户,给用户一个打分选项,用户返回对应的选项后,将该消息拦截,找到缓存的待评价会话,然后调用七鱼的评价接口,发送给七鱼。

在这个示例中,我们在服务器缓存了每个用户对应的会话状态,以便判断是否需要走申请客服的接口。如果没有客服在线,应当将这个状态也缓存一段时间,在这个时间段内收到消息,可以不用再申请客服。

这个示例中所有缓存都没有考虑分布式部署情形,实际实现需要考虑修改替换。由于仅仅只是示例,微信公众号使用的是明文模式,如果需要更高安全性,请选用加密模式,并参照微信文档实现加解密流程。

七鱼以及微信公众号的APP_KEY,APP_SECRET等参数配置,在 com.qiyukf.openapi.controller.Constants 中,使用时需要修改自己企业的对应值。