JAVA微信公众号开发第4篇将用户消息转发到多客服
2018-01-04 17:22
549 查看
说明
微信公众平台多客服功能如何使用
将用户消息转发至客服开发步骤
描述
消息转发到多客服
当用户输入关键词人工客服时进行消息转发
生成转发报文
将报文返回至微信公众平台
认证的微信服务号可以在 “公众平台-功能-添加功能插件” 看到 “多客服” 申请入口,申请开通即可。
]
客服功能使用
微信公众平台客服PC版
登陆地址请“点我”
消息被转发到多客服以后,会被自动分配给一个在线的客服帐号,您也可以在返回transfer_customer_service消息时,在XML中附上TransInfo信息指定分配给某个客服帐号。
用户被客服接入以后,客服关闭会话以前,处于会话过程中时,用户发送的消息均会被直接转发至客服系统。当会话超过2小时客服没有关闭时,微信服务器会自动停止转发至多客服,而将消息恢复发送至开发者填写的url上。用户在等待队列中时,用户发送的消息仍然会被推送至开发者填写的url上。
获得文本消息Builder
CDATA 转换器XStreamCDataConverter.java
– 获得文本消息TextBuilder.java
–BaseBuilder.java
微信公众平台多客服功能如何使用
将用户消息转发至客服开发步骤
描述
消息转发到多客服
当用户输入关键词人工客服时进行消息转发
生成转发报文
将报文返回至微信公众平台
说明
本文主要针对博主JAVA微信公众号客服图文消息一文做补充微信公众平台多客服功能如何使用
获得多客服使用权限认证的微信服务号可以在 “公众平台-功能-添加功能插件” 看到 “多客服” 申请入口,申请开通即可。
]
客服功能使用
微信公众平台客服PC版
登陆地址请“点我”
将用户消息转发至客服开发步骤
描述
如果公众号处于开发模式,普通微信用户向公众号发消息时,微信服务器会先将消息POST到开发者填写的url上,如果希望将消息转发到多客服系统,则需要开发者在响应包中返回MsgType为transfer_customer_service的消息,微信服务器收到响应后会把当次发送的消息转发至多客服系统。消息被转发到多客服以后,会被自动分配给一个在线的客服帐号,您也可以在返回transfer_customer_service消息时,在XML中附上TransInfo信息指定分配给某个客服帐号。
用户被客服接入以后,客服关闭会话以前,处于会话过程中时,用户发送的消息均会被直接转发至客服系统。当会话超过2小时客服没有关闭时,微信服务器会自动停止转发至多客服,而将消息恢复发送至开发者填写的url上。用户在等待队列中时,用户发送的消息仍然会被推送至开发者填写的url上。
消息转发到多客服
当用户输入关键词【人工客服】时进行消息转发
/** * <p>Title: getText</p> * <p>Description: 文本消息</p> * @param wxMessage * @param context * @param iService * @return */ private WxXmlOutMessage getText(WxXmlMessage wxMessage, Map<String, Object> context, IService iService){ if("人工客服".equals(wxMessage.getContent())){ //转至 return WxXmlOutMessage.TEXT().content(wxMessage.getContent()).toUser(wxMessage.getFromUserName()).fromUser(wxMessage.getToUserName()).buildKf(); } return WxXmlOutMessage.TEXT().content("您好!如有问题,请输入【人工客服】寻求帮助。").toUser(wxMessage.getFromUserName()).fromUser(wxMessage.getToUserName()).build(); }
生成转发报文
返回消息模型WxXmlOutMessage.java@XStreamAlias("ToUserName") @XStreamConverter(value = XStreamCDataConverter.class) protected String toUserName; @XStreamAlias("FromUserName") @XStreamConverter(value = XStreamCDataConverter.class) protected String fromUserName; @XStreamAlias("CreateTime") protected Long createTime; @XStreamAlias("MsgType") @XStreamConverter(value = XStreamCDataConverter.class) protected String msgType; public String getToUserName() { return toUserName; } public void setToUserName(String toUserName) { this.toUserName = toUserName; } public String getFromUserName() { return fromUserName; } public void setFromUserName(String fromUserName) { this.fromUserName = fromUserName; } public Long getCreateTime() { return createTime; } public void setCreateTime(Long createTime) { this.createTime = createTime; } public String getMsgType() { return msgType; } public void setMsgType(String msgType) { this.msgType = msgType; } public String toXml() { return XStreamTransformer.toXml((Class) this.getClass(), this); } /** * 获得文本消息builder * * @return */ public static TextBuilder TEXT() { return new TextBuilder(); }
获得文本消息Builder
CDATA 转换器XStreamCDataConverter.java
package com.bigbigbu.wx.tools.util.xml; import com.thoughtworks.xstream.converters.basic.StringConverter; /** * CDATA 转换器 * @author FANQIBU * */ public class XStreamCDataConverter extends StringConverter { @Override public String toString(Object obj) { return "<![CDATA[" + super.toString(obj) + "]]>"; } }
– 获得文本消息TextBuilder.java
package com.bigbigbu.wx.tools.bean.outxmlbuilder; import com.bigbigbu.wx.tools.bean.WxXmlMessage.WxKf; import com.bigbigbu.wx.tools.bean.WxXmlOutTextMessage; /** * @ClassName: TextBuilder * @Description: TODO 文本消息builder * @author FANQIBU修改于 2017年12月12日 下午4:16:14 (ps:增加构建客服消息) * @date 2017年12月12日 下午4:16:14 * */ public final class TextBuilder extends BaseBuilder<TextBuilder, WxXmlOutTextMessage> { private String content; private WxKf wxKf=null; public TextBuilder content(String content) { this.content = content; return this; } public TextBuilder kfAccount(String kfAccount) { this.wxKf = new WxKf(); this.wxKf.setKfAccount(kfAccount); return this; } public WxXmlOutTextMessage build() { WxXmlOutTextMessage m = new WxXmlOutTextMessage(); setCommon(m); m.setContent(this.content); return m; } public WxXmlOutTextMessage buildKf() { WxXmlOutTextMessage m = new WxXmlOutTextMessage(); setCommon(m); m.setContent(this.content); m.setMsgType("transfer_customer_service"); if(wxKf != null){ m.setWxKf(wxKf); } return m; } }
–BaseBuilder.java
package com.bigbigbu.wx.tools.bean.outxmlbuilder; import com.bigbigbu.wx.tools.bean.WxXmlOutMessage; public abstract class BaseBuilder<BuilderType, ValueType> { protected String toUserName; protected String fromUserName; public BuilderType toUser(String touser) { this.toUserName = touser; return (BuilderType) this; } public BuilderType fromUser(String fromusername) { this.fromUserName = fromusername; return (BuilderType) this; } public abstract ValueType build(); public void setCommon(WxXmlOutMessage m) { m.setToUserName(this.toUserName); m.setFromUserName(this.fromUserName); m.setCreateTime(System.currentTimeMillis() / 1000l); } }
将报文返回至微信公众平台
// 把消息传递给路由器进行处理 WxXmlOutMessage xmlOutMsg = router.route(wx); if (xmlOutMsg != null) out.print(xmlOutMsg.toXml());// 因为是明文,所以不用加密,直接返回给用户。
相关文章推荐
- JAVA微信公众号开发第3篇客服图文消息
- JAVA微信公众号开发之客服消息
- 微信公众号开发(Java) ---- 客服消息发送
- 微信公众账号开发,将消息转发到指定客服java 代码
- [置顶] java开发微信将消息转发到指定客服
- 微信公众账号开发,将消息转发到指定客服java 代码
- java开发微信将消息转发到多客服
- (Java)微信之个人公众账号开发(二)——接收并处理用户消息(下)
- java微信开发(wechat4j)——发送客服消息
- 微信公众号开发系列-发送客服消息
- 微信公众号开发--接收与回复消息(Java)
- Java微信公众号开发:网页授权获取用户基本信息
- 使用C# .net开发微信公众号之给用户发送模板消息
- 用java开发微信公众号:接收和被动回复普通消息(三)
- JAVA开发微信公众号-接收和发送消息
- 微信公众号开发(一、接收用户消息自动回复)
- 微信公众号的开发之 回复用户消息和事件响应(四)
- 微信开发处理超时5s(java),异步发送客服消息
- java微信公众号开发总结(2)——文本消息处理
- 管理员消息java 网站用户在线和客服聊天