如果公眾號處於開發模式,普通微信用戶向公眾號發消息時,微信服務器會先將消息POST到開發者填寫的url上,無法直接推送給微信自帶的客服功能。如果需要把用戶推送的普通消息推送到客服功能中,就需要進行代碼修改。
代碼:
public void customer(HttpServletResponse response) { //獲取方式參考:https://www.cnblogs.com/pxblog/p/10542583.html String msgType = "獲取推送消息中的MsgType數據"; /** * 判斷微信推送的消息中的MsgType是否是event類型 * 不是event類型的,我們進行轉發,因為只需要針對微信用戶發來的消息才進行轉發,而對於其他任何事件(比如菜單點擊、地理位置上報等)都不應該轉接,否則客服在客服系統上就會看到一些無意義的消息了。 * fromUsername 為推送消息的fromUsername * toUsername 為推送消息的toUsername */ String time = System.currentTimeMillis()+""; if (!"event".equalsIgnoreCase(msgType)) { String textTpl=customerText(fromUsername, toUsername, time); send(textTpl, response); } } /** * 封裝發送xml * @param fromUsername * @param toUsername * @param time * @return */ private String customerText(String fromUsername,String toUsername,String time){ String textTpls = "<xml>"+ "<ToUserName><![CDATA["+fromUsername+"]]></ToUserName>"+ "<FromUserName><![CDATA["+toUsername+"]]></FromUserName>"+ "<CreateTime>"+time+"</CreateTime>"+ "<MsgType><![CDATA[transfer_customer_service]]></MsgType>"+ "</xml>"; return textTpls; } private void send(String textTpl,HttpServletResponse response) throws IOException { String type="text/xml;charset=UTF-8"; response.setContentType(type); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.getWriter().write(textTpl); }