微信开发(八)自动回复和多客服开发
来源:程序员人生 发布时间:2015-06-12 08:55:34 阅读次数:3500次
定制的服务
对微佩服务号来讲,最主要的功能是提供更好的服务。用户更方便的操作,和更快的反馈响应。自动回复功能,能够大幅减少交互时间和客服工作量,在服务号推活动时特别明显。另外就是在多客服功能,这个就强大了,简直就是1个企业qq服务号。目前还不要钱,不过我感觉未来可能会变成1个收费功能
使用处景
这两个东西走1套流程,所以这里放在1起说了。
自动回复功能大致的使用情形是,用户发送“流量”,服务号回复“亲,送流量活动是xxxxxx: 快点击【抢流量】 来参加。”
而多客服应当是自动回复的1个超集,如果自动回复处理不了,就要转接到客服那里。
技术实现
从技术上讲,这两个功能是也1套逻辑。服务回复用户消息,使用的是统1的格式,如果消息需要转到多客服,需要给微佩服务器回复类似这样的消息体:
<xml>
<ToUserName><![CDATA[touser]]></ToUserName>
<FromUserName><![CDATA[fromuser]]></FromUserName>
<CreateTime>1399197672</CreateTime>
<MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>
官方文档说明是这样的:
如果公众号处于开发模式,普通微信誉户向公众号发消息时,微佩服务器会先将消息POST到开发者填写的url上,如果希望将消息转发到多客服系统,则需要开发者在响应包中返回MsgType
为transfer_customer_service
的消息,微佩服务器收到响应后会把当次发送的消息转发最多客服系统。具体可以参照这里
因此我做了这样的设计,收到用户输入的消息后,首先在数据库的表中检查是不是有匹配的应对,如果有则直接返回给用户,否则,就返回类型为transfer_customer_service
的消息,将其转接到客服那边。
实现
protected String getRawText(String key) {
// 如果对应的EVENT_KEY有个相同的配置信息,就直接载入
String tmpRaw = getRawByStateDao(key);
if (tmpRaw != null && tmpRaw.length() > 0) {
raw = tmpRaw;
} else {
raw = "";
}
return raw;
}
String getRawByStateDao(String key) {
//you should get data from db here
}
public String getContextText(String key) {
// 回复文本消息
TextMessage textMessage = new TextMessage();
textMessage.setToUserName(fromUserName);
textMessage.setFromUserName(toUserName);
textMessage.setCreateTime(new Date().getTime());
String contextText = getRawText(key);
if(contentText.length()>0){
textMessage.setContent(contentText);
textMessage.setMsgType("text");
} else {
textMessage.setMsgType("transfer_customer_service");
}
// 将文本消息对象转换成xml
String respXml = MessageUtil.messageToXml(textMessage);
return respXml;
}
大致流程就是这样,使用时调用getContextText
函数,就返回1个包装好的消息,走HTTP返还给鹅厂的服务器。
部署
在微信公众号的后台选择添加功能插件->多客服。添加好功能模块后,添加1个客服工号,下载安装客户端。这个部署比较简单,没啥大坑。上线后拉着客服人员,给做个简单的使用培训就成了。
如果你觉得这篇文章对你有帮助,可以顺手点个顶,不但不会喜当爹,还能让更多人能看到它...
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠