溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Force.com微信開發(fā)系列值如何處理用戶消息

發(fā)布時(shí)間:2021-09-10 11:22:18 來源:億速云 閱讀:118 作者:小新 欄目:移動(dòng)開發(fā)

這篇文章主要介紹Force.com微信開發(fā)系列值如何處理用戶消息,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

成功配置好Force.com作為微信公開號(hào)的服務(wù)端后,接下來需要的任務(wù)是處理用戶發(fā)送的消息。當(dāng)普通微信用戶向公眾賬號(hào)發(fā)消息時(shí),微信服務(wù)器將POST消息的XML數(shù)據(jù)包到開發(fā)者填寫的URL,通常有的消息類型有文本信息、圖片信息、語音信息、視頻信息、地理位置信息以及鏈接信息。關(guān)于每種消息的XML數(shù)據(jù)包的詳細(xì)結(jié)構(gòu),請(qǐng)參見http://mp.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E6%99%AE%E9%80%9A%E6%B6%88%E6%81%AF。文章介紹文本消息的處理,文本消息XML數(shù)據(jù)包格式以及說明如下:

文本消息XML數(shù)據(jù)包示例

1348831860
 
 
 1234567890123456

數(shù)據(jù)包結(jié)構(gòu)說明

Force.com微信開發(fā)系列值如何處理用戶消息

通過Debug Logs監(jiān)控用法發(fā)送數(shù)據(jù)

在Force.com里可以很容易的觀察到微信用戶發(fā)送來的XML數(shù)據(jù)信息,為此進(jìn)入Force.com后臺(tái)Setup頁面后在左側(cè)導(dǎo)航條的Logs下方找到Debug Logs,點(diǎn)擊進(jìn)入后,點(diǎn)擊右側(cè)Monitored Users旁的New按鈕,如下圖所示:

Force.com微信開發(fā)系列值如何處理用戶消息

在接下來的畫面中將可以選擇你想監(jiān)控哪個(gè)用戶和Force.com服務(wù)器之間的交互,在搜尋畫面中可以點(diǎn)擊放大鏡查找所有用戶,其中Site.com使用類似于“Site Guest User…”類似的匿名賬戶,選擇好后的示意界面如下:

Force.com微信開發(fā)系列值如何處理用戶消息

此時(shí)若通過關(guān)注了此微信公開賬號(hào)的微信用戶發(fā)送任意文本到此賬號(hào)后,刷新Debug Logs監(jiān)控頁面及可以在下方看到新增了相應(yīng)的日志:

Force.com微信開發(fā)系列值如何處理用戶消息

點(diǎn)擊進(jìn)去既可以看到日志里有我們發(fā)送的文本的XML數(shù)據(jù)包:

Force.com微信開發(fā)系列值如何處理用戶消息

這種日志也可以幫助到后續(xù)的調(diào)試。

創(chuàng)建用戶消息處理方法

接下來我們打開之前創(chuàng)建的WeChatRestController類,在里面添加如下方法來響應(yīng)用戶數(shù)據(jù)包

@HttpPost
    global static void doPost(){
        //存儲(chǔ)XML各節(jié)點(diǎn)數(shù)據(jù)變量
        String toUserName = '';
        String fromUserName = '';
        String msgType = '';
        String content = '';
        //獲取XML數(shù)據(jù)包
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        string strMsg = req.requestBody.toString();  
        XmlStreamReader reader = new XmlStreamReader(strMsg);

        //解析XML數(shù)據(jù)包,F(xiàn)orce.com這塊的處理能力并不強(qiáng),簡(jiǎn)單的結(jié)構(gòu)也需要較多代碼來解析
         while(reader.hasNext()){
            if(reader.getLocalName() == 'ToUserName'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    toUserName = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'FromUserName'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    fromUserName = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'MsgType'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    msgType = reader.getText();
                }
            }
            else if(reader.getLocalName() == 'Content'){
                reader.next();
                if(String.isNotBlank(reader.getText())){
                    content = reader.getText();
                }
            }
            reader.next();
        }
    }

上述代碼 完成了對(duì)用戶發(fā)送過來數(shù)據(jù)XML包的解析,接下來我們按照http://mp.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E9%80%81%E8%A2%AB%E5%8A%A8%E5%93%8D%E5%BA%94%E6%B6%88%E6%81%AF說明,組織好回復(fù)給用戶的文本消息數(shù)據(jù),這里的回復(fù)數(shù)據(jù)也是XML結(jié)構(gòu),和發(fā)送過來的文本消息XML數(shù)據(jù)結(jié)構(gòu)基本一致,詳情請(qǐng)參看鏈接里騰訊公司的詳細(xì)介紹。下面的代碼將自動(dòng)發(fā)送當(dāng)前的日期時(shí)間給用戶,在前面代碼的While循環(huán)后添加如下代碼:

Datetime dt = System.now();
String returnDT = dt.format('EEEE, MMMM d, yyyy');
String replyMSG = '<xml><ToUserName><![CDATA[{0}]]></ToUserName><FromUserName><![CDATA[{1}]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[{2}]]></Content></xml>';
String[] arguments = new String[]{fromUserName, toUserName, rtnMsg};
String formattedReplyMSG = String.format(replyMSG, arguments);
RestContext.response.addHeader('Content-Type', 'text/plain');
RestContext.response.responseBody = Blob.valueOf(rtnMsg);

前面代碼需要略微提醒下的是第3行的ToUserName參數(shù)和FromUserName參數(shù)和普通微信用戶發(fā)送來的消息XML數(shù)據(jù)包是反過來的。

保存代碼,此時(shí)普通用戶發(fā)送任何消息到此公眾賬號(hào)都能很快收到當(dāng)前的時(shí)間信息。

以上是“Force.com微信開發(fā)系列值如何處理用戶消息”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI