ホームページ >WeChat アプレット >WeChatの開発 >Java を使用して通常のメッセージを受信して​​受動的に返信する WeChat 公開アカウントを開発する方法の詳細な紹介

Java を使用して通常のメッセージを受信して​​受動的に返信する WeChat 公開アカウントを開発する方法の詳細な紹介

高洛峰
高洛峰オリジナル
2017-03-15 17:56:342334ブラウズ

この記事では、通常のメッセージを受信して​​受動的に返信するための WeChat 公開アカウントの Java 開発に関する関連情報を主に紹介します。必要な友達はそれを参照してください。

この記事では、WeChat 公開アカウントにアクセスする方法についての説明を終了しました。 WeChat 公開アカウントの最も基本的な機能: 通常のメッセージの受信と返信。通常のメッセージについて言えば、WeChat 公式アカウントによって定義される通常のメッセージとは何ですか? WeChat 開発者ドキュメントで説明されているように、受信される通常のメッセージには次のカテゴリが含まれます:

1. テキスト メッセージ

写真
メッセージ 3.音声メッセージ 4.
ビデオ
メッセージ 5. 短いビデオ メッセージ 6. 位置情報メッセージ
7. リンク メッセージ (受動的な返信メッセージ)


受動的な返信を含む通常のメッセージには次のものが含まれます:


1. テキストに返信メッセージ

2. 画像メッセージに返信

3. 音声メッセージに返信
4. ビデオ メッセージに返信
5. 音楽メッセージに返信
6. グラフィック メッセージに返信


実際には

メッセージを受信

し、受動的にメッセージに返信します。この 2 つのアクションは切り離すことができません。これはインタラクティブなシーンであり、一般的に、パブリック アカウントは受信したメッセージを分析し、対応する応答を返します。もちろん、一部の特殊なビジネスを排除することはできません。

メッセージの受信方法

​​
受信する 7 つのメッセージの

xml

形式はここにはリストされていません。具体的な形式の定義と 属性 の説明については、公式ドキュメントを確認してください。形式は非常に単純で、基本的な共通属性には ToUserName、FromUserName、CreateTime、MsgType、MsgId が含まれており、各タイプには独自の特別な属性があります。
これを見ると、メッセージを受信するプロセスは、実際には

投稿リクエスト

のxmlを取得して、そのxmlを分析するプロセスであることがわかります。投稿リクエストの入り口は、前述のように WeChat 公式アカウントにアクセスするアドレスのままですが、公式アカウント全体に対するリクエストはすべてこの入り口を経由しますが、アクセスする場合は get リクエストになります。投稿リクエスト。 XML の処理には Dom4j を使用します。XML の処理コードは次のとおりです。

public static Map parseXml(HttpServletRequest request) throws Exception {
// 将解析结果存储在HashMap中
Map map = new HashMap();
// 从request中取得输入流
InputStream inputStream = request.getInputStream();
/*
* 读取request的body内容 此方法会导致流读取问题 Premature end of file. Nested exception:
* Premature end of file String requestBody =
* inputStream2String(inputStream); System.out.println(requestBody);
*/
// 读取输入流
SAXReader reader = new SAXReader();
Document document = reader.read(inputStream);
// 得到xml根元素
Element root = document.getRootElement();
// 得到根元素的所有子节点
List<Element> elementList = root.elements();
// 遍历所有子节点
for (Element e : elementList)
map.put(e.getName(), e.getText());
// 释放资源
inputStream.close();
inputStream = null;
return map;
}
private static String inputStream2String(InputStream is) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i = -1;
while ((i = is.read()) != -1) {
baos.write(i);
}
return baos.toString();
}
メッセージに受動的に返信する方法を説明します。メッセージに返信するには、「テキスト」メッセージを受信した場合はテキストメッセージに返信し、「音声」メッセージを受信した場合は画像メッセージに返信します。 「」の場合は音声メッセージに返信します。「ビデオ」の場合はビデオメッセージに返信します。「音楽」の場合は音楽メッセージに返信します。「写真とテキスト」の場合は写真に返信します。そしてテキストメッセージ。


テキスト メッセージへの返信を例に挙げます。

<xml>
<ToUserName><![CDATA[发消息的人,即订阅者]]></ToUserName>
<FromUserName><![CDATA[微信公众号本身]]></FromUserName>
<CreateTime>消息创建时间(整形)</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[消息内容]]></Content>
</xml>

最初の 2 つの属性は、受信したメッセージから取得できます。 受信メッセージの形式は次のとおりです。受信メッセージ フォーマットは、応答メッセージの FromUserName です。受信メッセージ フォーマットの FromUserName は、応答メッセージの ToUserName です。


CreateTime は、メッセージによって送信された

タイムスタンプ

です。 MsgType はメッセージの種類で、テキストはテキストです。 Content はメッセージの内容です。


各タイプのメッセージに対する具体的な応答は、このタイプの XML 形式コンテンツを構築することです。形式は似ていますが、音楽、ビデオ、音声、グラフィックスの形式は、テキスト メッセージで構築される XML コンテンツよりも少し複雑です。 。詳細については公式ドキュメントを参照してください。ここでは詳しく説明しませんが、一目で理解できると思います。

以上がJava を使用して通常のメッセージを受信して​​受動的に返信する WeChat 公開アカウントを開発する方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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