微信多客服 - 消息转发多客服
来源:互联网 发布:高维数据降维方法研究 编辑:程序博客网 时间:2024/04/28 21:37
做了几个月的微信开发,前不久微信推出多客服功能.因为公司的公众号是微信认证,因而有接口权限.正好将此功能集成到项目中,本文只适合有微信开发基础.
查看微信开发文档
如果公众号处于开发模式,需要在接收到用户发送的消息时,返回一个MsgType为transfer_customer_service的消息,微信服务器在收到这条消息时,会把这次发送的消息转到多客服系统。用户被客服接入以后,客服关闭会话以前,处于会话过程中,用户发送的消息均会被直接转发至客服系统。
上文中提到的消息数据具体举例为:
<xml><ToUserName><![CDATA[touser]]></ToUserName><FromUserName><![CDATA[fromuser]]></FromUserName><CreateTime>1399197672</CreateTime><MsgType><![CDATA[transfer_customer_service]]></MsgType></xml>
文档说得已经很清楚了,直接上代码
/** * 微信多客服操作 * * @author xuyw * @email xyw10000@163.com * @date 2014-06-12 */
1 构造xml发起客服请求,触发客服可以使用自定义菜单或者关键字
/** * 生成消息转发到多客服 * @param touser * @param fromuser * @return */public static String CreateRelayCustomMsg(String touser, String fromuser) {StringBuilder relayCustomMsg = new StringBuilder();relayCustomMsg.append("<xml>");relayCustomMsg.append("<ToUserName><![CDATA["+touser+"]]></ToUserName>");relayCustomMsg.append("<FromUserName><![CDATA["+fromuser+"]]></FromUserName>");relayCustomMsg.append("<CreateTime>"+new Date().getTime()+"</CreateTime>");relayCustomMsg.append("<MsgType><![CDATA[transfer_customer_service]]></MsgType>");relayCustomMsg.append("</xml>");return relayCustomMsg.toString();}2 为了代码的简单演示将微信上任意操作都执行客服操作,ps实际开发则需要多重判断
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=utf-8");Map<String, String> requestMap = MessageUtil.parseXml(request);// 发送方帐号(open_id)String fromUserName = requestMap.get("FromUserName");// 公众帐号String toUserName = requestMap.get("ToUserName"); String message = CustomMsgUtil.CreateRelayCustomMsg(fromUserName,toUserName);PrintWriter out = response.getWriter();out.print(message);out.close();}
public static Map<String, String> parseXml(HttpServletRequest request) throws Exception {// 将解析结果存储在HashMap中Map<String, String> map = new HashMap<String, String>();// 从request中取得输入流InputStream inputStream = request.getInputStream();// 读取输入流SAXReader reader = new SAXReader();Document document = reader.read(inputStream);// 得到xml根元素Element root = document.getRootElement();// 得到根元素的所有子节点List<Element> elementList = root.elements();// 遍历所有子节点for (Element e : elementList)map.put(e.getName(), e.getText());// 释放资源inputStream.close();inputStream = null;return map;}
ok 代码编写完了 来看看运行效果吧
先登录多客服系统
打开微信 点击在线咨询
多客服就收到一条请求,点击接入
微信收到回复
4 1
- 微信多客服 - 消息转发多客服
- 微信开发:将消息转发到多客服
- java开发微信将消息转发到多客服
- 客服
- java开发微信将消息转发到指定客服
- 微信多客服
- 微信多客服
- 发送客服消息(客服接口)
- 微信发送客服消息
- 微信小程序--客服消息使用指南
- 微信小程序客服消息实现
- 微信公众账号开发,将消息转发到指定客服java 代码
- 微信公众账号开发,将消息转发到指定客服java 代码
- 微信小程序客服消息相关(客服按钮修改)
- 微信多客服上传头像
- 微信多客服开发
- 微信多客服开发
- 微信多客服开发
- VisionMobile:2014年Q3移动开发者经济报告(一):关键信息
- GetModuleFileName(2011-08-08 11:20:16)
- 研祥特卖季暑期大放“价”
- 从零开始学习OpenGL ES之六 – 纹理及纹理映射
- OSS-cURL-GetService
- 微信多客服 - 消息转发多客服
- Google Maps Android API V2开发入门1之显示地图
- 做项目和做产品的区别
- 从零开始学习OpenGL ES之七 – 变换和矩阵
- 1407281202-hd-Add ‘em.cpp
- 你会健身吗?
- 解决cocos2d-x 中文乱码的问题
- hdu 2162 Add ‘em
- cocos2dx学习笔记(多线程)