前の記事では、WeChatの公式アカウントにアクセスする方法について説明しています。この記事では、WeChatの公式アカウントの最も基本的な機能、つまり普通のメッセージへの返信について説明しています。通常のメッセージといえば、WeChatの公式アカウントで定義された通常のメッセージは何ですか? WECHAT開発者のドキュメントに記載されている通常のメッセージには、次のカテゴリが含まれています。
1。テキストメッセージ
2。画像メッセージ
3。音声メッセージ
4。ビデオメッセージ
5。短いビデオメッセージ
6.地理的位置メッセージ
7。リンクメッセージ(パッシブ返信メッセージ)
受動的に返信する定期的なメッセージは次のとおりです。
1。テキストメッセージに返信します
2。画像メッセージに返信します
3。音声メッセージに返信します
4。ビデオメッセージに返信します
5。音楽メッセージに返信します
6。テキストメッセージに返信します
実際、メッセージを受信するという2つのアクションと受動的な応答メッセージは分離できません。これはインタラクティブなシナリオです。一般的に言えば、公式アカウントは、受信したメッセージを分析することにより、対応する返信を提供します。もちろん、一部の特別なビジネスを除外することはできません。
メッセージを受信する方法
7つのメッセージで受信するメッセージのXML形式は、ここにはリストされません。特定の形式の定義と属性の説明を使用して、公式ドキュメントにアクセスして表示してください。フォーマットは非常に簡単です。基本的な共通属性には、Tousername、FromUsername、CreateTime、MSGType、およびMSGIDが含まれ、各タイプには独自の特別な属性があります。
これを見た後、私は実際にメッセージを受信するプロセスが、実際に投稿によって要求されたXMLを取得してからXMLを分析するプロセスであることを理解しています。投稿リクエストのエントリは、前述のWeChat公式アカウントへのアクセスのアドレスです。公式アカウント全体のすべてのリクエストはこのエントリに送信されますが、アクセスする際のGETリクエストであり、他の場合はPOSTリクエストです。 DOM4JはXMLの処理に使用されます。 XML処理コードは次のとおりです。サーブレットのpostメソッドでparsexmlメソッドを呼び出すことができます。
public static Map parsexml(httpservletrequest request)スロー例外{//解析結果をHashmap Map = new Hashmap(); //リクエストinputstream inputstream = request.getInputStream();/**リクエストの本体内容を読み取り、この方法を読み取ると、ファイルの端を読みます。ネストされた例外:*ファイル文字列requestBody =* inputStream2String(inputstream); System.out.println(requestbody);*///入力ストリームsaxreader reader = new saxreader(); document = reader.read(inputstream); // xml root要素要素root = document.getrootelement(); // root要素リストのすべての子ノード<要素> elementlist = roots = roots(); // elementList.put(e.getName()、e.getText()); //リリースinputstream.close(); inputstream = null;} private static strime2string(inputstream is)throws {bytearrayoutputstream baos = new by by by = -1; {baos.write(i);} return baos.toString();}メッセージに受動的に返信する方法
以下に、このようなロジックに基づいて返信を構築し、テキストメッセージ「テキスト」を受信し、テキストメッセージに返信するメッセージを示します。 「写真」を受け取り、写真メッセージに返信する。 「音声」を受け取り、音声メッセージに返信する。 「ビデオ」を受信し、ビデオメッセージに返信します。 「音楽」を受け取り、音楽メッセージに返信します。 「写真」を受け取り、写真メッセージに返信します。
説明としてテキストメッセージへの返信:
<xml> <tousername> <![cdata [メッセージを送信する人、つまりサブスクライバー]]> </tousername> <fromusername> <!手術)</createtime> <msgtype> <![cdata [text]]> </msgtype> <content> <![cdata [message content]]> </content> </xml>
最初の2つの属性は受信したメッセージから取得でき、受信したメッセージ形式は次のとおりです。
<xml> <tousername> <![cdata [touser]]> </tousername> <fromusername> <![cdata [fromuser]]> </</fromusername> 1348831860 </createTime> <msgtype> <!テキスト]]]> </content> <msgid> 1234567890123456 </msgid> </xml>
受信メッセージ形式のtousernameは、メッセージに返信するfromusernameであり、受信メッセージ形式のfromusernameはメッセージに返信するtousernameです。
CreateTimeは、メッセージによって送信されたタイムスタンプです。 msgtypeはメッセージタイプであり、テキストはテキストです。コンテンツはメッセージコンテンツです。
各タイプのメッセージへの返信は、このタイプのXML形式コンテンツを構築することです。形式は似ていますが、音楽、ビデオ、音声、グラフィック形式は、テキストメッセージで作成されたXMLコンテンツよりもわずかに複雑です。詳細については、公式ドキュメントを参照してください。私はここで詳細に説明しません、私はあなたが一目でそれを理解するだろうと信じています。