搜尋
首頁微信小程式微信開發使用Java開發微信公眾號接收和被動回覆普通訊息詳細介紹

這篇文章主要介紹了Java開發微信公眾號接收和被動回复普通訊息的相關資料,需要的朋友可以參考下

上篇說完瞭如何接入微信公眾號,本文說一下微信公眾號的最基本功能:普通訊息的接收與回覆。說到普通訊息,那麼什麼是微信公眾號所定義的普通訊息呢,微信開發者文件中提到的接收的普通訊息包括如下幾類

1.文字訊息
2.圖片訊息
3.語音訊息
4.影片訊息
5.小視訊訊息
6.地理位置訊息
7.連結訊息(被動回應的訊息)

被動回覆的普通訊息包括:

1.回复文字訊息
2.回覆圖片訊息
3.回覆語音訊息
4.回覆視訊訊息
5.回覆音樂訊息
6.回覆圖文訊息

#其實接收訊息和被動回覆訊息這兩個動作是不分家的,這本來就是一個互動場景,一般情況就是公眾號透過分析接收到的訊息,會給予對應的回复。當然也不能排除一些特殊業務了。

如何接收訊息

要接收的這7中訊息的xml格式這裡就不列出了,請到官方文件查看,有具體的格式定義和屬性說明。格式很簡單,基本共有屬性包括ToUserName、FromUserName、CreateTime、MsgType、MsgId,且每種類型都有自己特殊的屬性。

看到這裡,其實就很明白了,接收訊息的過程其實就是取得post請求的這個xml,然後對這個xml進行分析的過程。 post請求的入口還是之前提到的微信公眾號接入的那個地址,整個公眾號的所有請求都會走這個入口,只是接入時是get請求,其它情況下是post請求。處理xml這裡用了dom4j,xml處理程式碼如下,在servlet的post方法中呼叫parseXml方法即可:


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>

前兩個屬性可以從接收的訊息中獲取,接收的訊息格式如下:


<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName> 
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a text]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>

其中接收訊息格式中的ToUserName就是回覆訊息的FromUserName,接收訊息格式中的FromUserName就是回覆訊息的ToU​​serName。

CreateTime為訊息發送的時間戳。 MsgType為訊息類型,文字為text。 Content為訊息內容。

具體每一種類型訊息的回复,就是建構此種類型的xml格式內容,格式大同小異,只是音樂、視訊、語音、圖文格式相對於文字訊息構造的xml內容稍微複雜一點。具體可參考官方文件。這裡不做贅述,相信各位一看就明白。

以上是使用Java開發微信公眾號接收和被動回覆普通訊息詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具