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 ユーザーが送信した XML データ情報を簡単に観察するには、Force.com バックエンドのセットアップ ページに入り、左側のナビゲーション バーの [ログ] の下にある [デバッグ ログ] をクリックして入力し、[監視対象] の横にある [新規] をクリックします。以下に示すように、右側の [ユーザー] ボタン:
次の画面では、Force.com サーバーとのやり取りを監視するユーザーを選択できます。虫眼鏡を使用してすべてのユーザーを検索します。その中で、Site.com は「サイト ゲスト ユーザー...」と同様の匿名アカウントを使用します。
現時点では、WeChat ユーザーの場合この WeChat 公開アカウントをフォローしている人は、このアカウントにテキストを送信し、デバッグ ログ監視ページを更新すると、以下の対応する新しいログが表示されます:
をクリックすると、ログに送信したテキストを含む XML パケットが表示されます。 :
この種のログは、後続のデバッグに使用することもできます。
ユーザーメッセージ処理メソッドを作成します
次に、前に作成した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 = '<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);
前のコードで少し覚えておく必要があるのは、ToUserName パラメーターと FromUserName パラメーターです。行 3 は通常の WeChat ユーザーによって送信されます。メッセージ XML パケットはその逆です。
この時点で、この公開アカウントにメッセージを送信する一般ユーザーは、現在の時刻情報をすぐに受け取ることができます。
Force.com WeChat 開発シリーズのユーザー メッセージ処理に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。