JAVA微信公眾號網頁開發——將接收的消息轉發到微信自帶的客服系統


 

如果公眾號處於開發模式,普通微信用戶向公眾號發消息時,微信服務器會先將消息POST到開發者填寫的url上,無法直接推送給微信自帶的客服功能。如果需要把用戶推送的普通消息推送到客服功能中,就需要進行代碼修改。

 

官方文檔:https://developers.weixin.qq.com/doc/offiaccount/Customer_Service/Forwarding_of_messages_to_service_center.html

 

代碼:

 

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);
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM