ホームページ >WeChat アプレット >WeChatの開発 >Force.com WeChat 開発シリーズのユーザーメッセージ処理

Force.com WeChat 開発シリーズのユーザーメッセージ処理

高洛峰
高洛峰オリジナル
2017-02-25 16:58:061496ブラウズ

Force.com は、国際的に有名なクラウド プラットフォーム会社です。Force.com を WeChat パブリック アカウントのサーバーとして正常に構成したら、次に必要なタスクは、ユーザーが送信したメッセージを処理することです。一般の WeChat ユーザーが公開アカウントにメッセージを送信すると、WeChat サーバーは開発者が入力した URL にメッセージの XML データ パケットを POST します。通常、メッセージの種類にはテキスト情報、画像情報、音声情報、ビデオ情報が含まれます。 、地理的な位置情報とリンク情報。各メッセージの XML パケットの詳細な構造については、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 パケットの形式と説明を以下に示します:

テキスト メッセージ XML パケットの例

1348831860
 
 
 1234567890123456

データ パケット構造の説明

Force.com WeChat 開発シリーズのユーザーメッセージ処理

使用状況を監視するデバッグ ログを介したデータの送信

Force.com WeChat ユーザーが送信した XML データ情報を簡単に観察するには、Force.com バックエンドのセットアップ ページに入り、左側のナビゲーション バーの [ログ] の下にある [デバッグ ログ] をクリックして入力し、[監視対象] の横にある [新規] をクリックします。以下に示すように、右側の [ユーザー] ボタン:

Force.com WeChat 開発シリーズのユーザーメッセージ処理

次の画面では、Force.com サーバーとのやり取りを監視するユーザーを選択できます。虫眼鏡を使用してすべてのユーザーを検索します。その中で、Site.com は「サイト ゲスト ユーザー...」と同様の匿名アカウントを使用します。

Force.com WeChat 開発シリーズのユーザーメッセージ処理

現時点では、WeChat ユーザーの場合この WeChat 公開アカウントをフォローしている人は、このアカウントにテキストを送信し、デバッグ ログ監視ページを更新すると、以下の対応する新しいログが表示されます:

Force.com WeChat 開発シリーズのユーザーメッセージ処理

をクリックすると、ログに送信したテキストを含む XML パケットが表示されます。 :

Force.com WeChat 開発シリーズのユーザーメッセージ処理

この種のログは、後続のデバッグに使用することもできます。

ユーザーメッセージ処理メソッドを作成します

次に、前に作成したWeChatRestControllerクラスを開き、ユーザーデータパケットに応答する次のメソッドをその中に追加します

@HttpPost
    global static void doPost(){
        //存储XML各节点数据变量
        String toUserName = '';
        String fromUserName = '';
        String msgType = '';
        String content = '';
        //获取XML数据包
        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;
        string strMsg = req.requestBody.toString();  
        XmlStreamReader reader = new XmlStreamReader(strMsg);

        //解析XML数据包,Force.com这块的处理能力并不强,简单的结构也需要较多代码来解析
         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();
        }
    }

上記のコードは、ユーザーによって送信されたデータ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 は、ユーザーに返信するテキスト メッセージ データも基本的に XML 構造になっていると説明しています。送信されるテキスト メッセージの XML データ構造と同じです。 詳細については、リンク内の Tencent の詳細な紹介を参照してください。次のコードは、現在の日付と時刻をユーザーに自動的に送信します。前のコードの While ループの後に次のコードを追加します。

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

前のコードで少し覚えておく必要があるのは、ToUserName パラメーターと FromUserName パラメーターです。行 3 は通常の WeChat ユーザーによって送信されます。メッセージ XML パケットはその逆です。

この時点で、この公開アカウントにメッセージを送信する一般ユーザーは、現在の時刻情報をすぐに受け取ることができます。

Force.com WeChat 開発シリーズのユーザー メッセージ処理に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。