微信多客服 - 消息转发多客服

本文详细介绍了如何在微信公众号项目中集成多客服功能,包括消息转发至客服系统的实现方式及具体步骤,适合已有微信开发基础的读者。

         做了几个月的微信开发,前不久微信推出多客服功能.因为公司的公众号是微信认证,因而有接口权限.正好将此功能集成到项目中,本文只适合有微信开发基础.

查看微信开发文档

如果公众号处于开发模式,需要在接收到用户发送的消息时,返回一个MsgType为transfer_customer_service的消息,微信服务器在收到这条消息时,会把这次发送的消息转到多客服系统。用户被客服接入以后,客服关闭会话以前,处于会话过程中,用户发送的消息均会被直接转发至客服系统。

上文中提到的消息数据具体举例为:

<xml>
<ToUserName><![CDATA[touser]]></ToUserName>
<FromUserName><![CDATA[fromuser]]></FromUserName>
<CreateTime>1399197672</CreateTime>
<MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>
参数描述
ToUserName开发者微信号
FromUserName发送方帐号(一个OpenID)
CreateTime消息创建时间的时间戳 (整型)
MsgTypetransfer_customer_service,表明这是一条多客服消息

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

/**
 * 微信多客服操作
 * 
 * @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 代码编写完了 来看看运行效果吧

先登录多客服系统

打开微信 点击在线咨询

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




微信收到回复


### 微信小程序聊天功能环境搭建教程 #### 准备工作 为了顺利进行微信小程序中的聊天功能开发,需准备好必要的工具和环境。这包括但不限于安装并熟悉微信开发者工具以及设置好后端服务器环境。 对于后端部分的选择可以多样化,比如Java[^1] 或者C#[^3] 都是可以考虑的语言选项来构建支持实时通讯的服务端逻辑。而针对WebSocket协议的支持则是实现即时消息传递的关键技术之一,在选择编程语言时应考虑到其对WebSocket的良好支持程度。 #### Nginx代理配置 鉴于WSS(WebSocket Secure)域名无法携带端口号这一特性,推荐采用Nginx作为反向代理服务器来进行流量转发处理[^2]。通过这种方式不仅可以解决上述提到的问题,还能增强系统的灵活性与安全性。 以下是简单的Nginx配置片段用于说明如何配置SSL证书并将请求转发给内部的WebSocket服务: ```nginx server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.key; location /ws/ { proxy_pass http://localhost:8080/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } ``` #### 初始化云开发环境 如果决定利用腾讯提供的云服务能力,则可以通过调用微信JS SDK中的`wx.cloud.init()`方法完成初始化操作[^4]。此步骤会设定当前应用所使用的云端资源名称空间,从而允许后续更便捷地存取数据和服务。 ```javascript // 云开发环境环境的初始化 wx.cloud.init({ env:"pay-try-0gmo3urf4597ee3d" }) ``` 以上就是关于在微信小程序中实现聊天功能所需的一些基础准备工作和技术要点介绍。希望这些信息能帮助到正在探索该领域的朋友!
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值