微信开发(八)自动回复和多客服开发

文章作者:松阳

本文出自阿修罗道,禁止用于商业用途,转载请注明出处。  

原文链接:http://blog.csdn.net/fansongy/article/details/45394641


定制的服务

对于微信服务号来说,最主要的功能是提供更好的服务。用户更方便的操作,以及更快的反馈响应。自动回复功能,能够大幅减少交互时间和客服工作量,在服务号推活动时尤其明显。另外就是在多客服功能,这个就强大了,简直就是一个企业qq服务号。目前还不要钱,不过我感觉未来可能会变成一个收费功能

使用场景

这两个东西走一套流程,所以这里放在一起说了。

自动回复功能大致的使用情景是,用户发送“流量”,服务号回复“亲,送流量活动是xxxxxx: 快点击【抢流量】 来参加。”

而多客服应该是自动回复的一个超集,如果自动回复处理不了,就要转接到客服那里。

技术实现

从技术上讲,这两个功能是也一套逻辑。服务回复用户消息,使用的是统一的格式,如果消息需要转到多客服,需要给微信服务器回复类似这样的消息体:

  1. <xml>  
  2.     <ToUserName><![CDATA[touser]]></ToUserName>  
  3.     <FromUserName><![CDATA[fromuser]]></FromUserName>  
  4.     <CreateTime>1399197672</CreateTime>  
  5.     <MsgType><![CDATA[transfer_customer_service]]></MsgType>  
  6. </xml>  

官方文档说明是这样的:

如果公众号处于开发模式,普通微信用户向公众号发消息时,微信服务器会先将消息POST到开发者填写的url上,如果希望将消息转发到多客服系统,则需要开发者在响应包中返回MsgTypetransfer_customer_service的消息,微信服务器收到响应后会把当次发送的消息转发至多客服系统。具体可以参照这里

因此我做了这样的设计,收到用户输入的消息后,首先在数据库的表中检查是否有匹配的应答,如果有则直接返回给用户,否则,就返回类型为transfer_customer_service的消息,将其转接到客服那边。

实现

  1. protected String getRawText(String key) {  
  2.     // 如果对应的EVENT_KEY有个相同的配置信息,就直接载入  
  3.     String tmpRaw = getRawByStateDao(key);  
  4.     if (tmpRaw != null && tmpRaw.length() > 0) {  
  5.         raw = tmpRaw;  
  6.     } else {  
  7.         raw = "";  
  8.     }  
  9.     return raw;  
  10. }  
  11.   
  12. String getRawByStateDao(String key) {  
  13.     //you should get data from db here  
  14. }  
  15.   
  16. public String getContextText(String key) {  
  17.     // 回复文本消息  
  18.     TextMessage textMessage = new TextMessage();  
  19.     textMessage.setToUserName(fromUserName);  
  20.     textMessage.setFromUserName(toUserName);  
  21.     textMessage.setCreateTime(new Date().getTime());  
  22.     String contextText = getRawText(key);  
  23.     if(contentText.length()>0){  
  24.         textMessage.setContent(contentText);  
  25.         textMessage.setMsgType("text");  
  26.     } else {  
  27.         textMessage.setMsgType("transfer_customer_service");  
  28.     }  
  29.       
  30.     // 将文本消息对象转换成xml  
  31.     String respXml = MessageUtil.messageToXml(textMessage);  
  32.     return respXml;  
  33. }  

大致流程就是这样,使用时调用getContextText函数,就返回一个包装好的消息,走HTTP返还给鹅厂的服务器。

部署

在微信公众号的后台选择添加功能插件->多客服。添加好功能模块后,添加一个客服工号,下载安装客户端。这个部署比较简单,没啥大坑。上线后拉着客服人员,给做个简单的使用培训就成了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值