频道栏目
首页 > 资讯 > 微信公众平台开发 > 正文

微信多业务 - 消息转发多业务

15-06-12        来源:[db:作者]  
收藏   我要投稿

         他做了一个微信开发个月,最近推出的微信客户服务能力.由于公司的公众微信号码认证,因此,有一个接口的权限.就在这个整合项目,本文仅适用于微通道的基础上发展.

见微信开发文档

 

假设公众号处于开发模式,须要在接收到用户发送的消息时,返回一个MsgType为transfer_customer_service的消息。微信server在收到这条消息时。会把这次发送的消息转到多客服系统。

用户被客服接入以后。客服关闭会话曾经。处于会话过程中,用户发送的消息均会被直接转发至客服系统。

 

上文中提到的消息数据详细举例为:

<xml>
<ToUserName><![CDATA[touser]]></ToUserName>
<FromUserName><![CDATA[fromuser]]></FromUserName>
<CreateTime>1399197672</CreateTime>
<MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>

 

參数 描写叙述
ToUserName 开发人员微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间的时间戳 (整型)
MsgType transfer_customer_service。表明这是一条多客服消息

文档说得已经非常清楚了,直接上代码

 

/**
 * 微信多客服操作
 * 
 * @author xuyw
 * @email xyw10000@163.com
 * @date 2014-06-12
 */

 

1 构造xml发起客服请求,触发客服能够使用自己定义菜单或者keyword

 

/**
     * 生成消息转发到多客服
     * @param touser
     * @param fromuser
     * @return
     */
	public static String CreateRelayCustomMsg(String touser, String fromuser) {
		StringBuilder relayCustomMsg = new StringBuilder();
		relayCustomMsg.append("");
		relayCustomMsg.append("");
		relayCustomMsg.append("");
		relayCustomMsg.append(""+new Date().getTime()+"");
		relayCustomMsg.append("");
		relayCustomMsg.append("");
		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 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 parseXml(HttpServletRequest request) throws Exception {
		// 将解析结果存储在HashMap中
		Map map = new HashMap();

		// 从request中取得输入流
		InputStream inputStream = request.getInputStream();
		// 读取输入流
		SAXReader reader = new SAXReader();
		Document document = reader.read(inputStream);
		// 得到xml根元素
		Element root = document.getRootElement();
		// 得到根元素的全部子节点
		List elementList = root.elements();

		// 遍历全部子节点
		for (Element e : elementList)
			map.put(e.getName(), e.getText());

		// 释放资源
		inputStream.close();
		inputStream = null;

		return map;
	}
ok 代码编写完了 来看看执行效果吧

 

先登录多客服系统

打开微信 点击在线咨询

多客服就收到一条请求,点击接入


微信收到回复


相关TAG标签
上一篇:怎样快速判定微信朋友圈的谣言?
下一篇:用c#开发微信 (16) 微活动 2 刮刮卡
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站