微信公眾平臺技術實操(7):公眾平臺開發(fā)模式
開發(fā)模式簡介
點擊公眾平臺后臺導航的“高級功能”就可以進入,該頁面有兩個模式選擇,分別為“編輯模式”和“開發(fā)模式”,如下圖:
默認兩個模式都是關閉狀態(tài),兩種模式不能同時開啟,點擊開發(fā)模式區(qū)域進入開發(fā)模式設置頁面,如下圖:
模式總開關。只有“成為開發(fā)者”后才可以開啟,這里要注意的是由于編輯模式和開發(fā)模式不能同時開啟,使用開發(fā)模式前應先關閉編輯模式。
api接口文檔。點擊后可以查看目前所有開放的接口使用詳細說明,包括開發(fā)用的SDK包。(SDK,Software Development Kit 的縮寫,中文即“軟件開發(fā)工具包”。廣義上指輔助開發(fā)某一類軟件的相關文檔、范例和工具的集合。)
成為開發(fā)者。點擊后會出現(xiàn)接口配置頁面,用來綁定自己服務器上的程序接口與微信接口通訊,具體的操作將在第九章介紹。
二、api接口文檔簡介
首先來了解下微信開發(fā)模式有那些接口,清楚微信接口能做什么不能做什么有利于自己的產(chǎn)品設計,可以考慮自己的產(chǎn)品如何結(jié)合如何規(guī)劃。
由于微信本身是一個通訊工具,它所有的api接口都是基于一問一答的通訊機制,因此它的接口文檔分為消息推送(用戶在公眾平臺上行發(fā)送 的消息)和消息回復(響應用戶上行消息反饋下發(fā)回復的消息),本教程除了目前已經(jīng)公布的接口外,還將劇透一部分將要開放的接口,比較特殊的消息下發(fā)接口屬于最高級別接口,大部分開發(fā)者是拿不到的,所以不介紹了。
消息推送(即公眾賬號能接收到的用戶消息請求)
1、文本消息
此類消息即用戶向公眾賬號輸入文本發(fā)送消息,是公眾平臺接收到最多的消息,也是最重要的搜索、互動請求,因為語音識別還不成熟,圖片無法識別,地理位置用的場景也不多。
接口獲取到的消息格式:
這里先說下XML數(shù)據(jù)格式,它不僅是一種非常適合web傳輸?shù)母袷?,還具有強大的數(shù)據(jù)索引、排序、查找、相關一致性等特點,有些網(wǎng)站甚至拿XML來做數(shù)據(jù)庫,比如射手網(wǎng),它結(jié)構(gòu)非常簡單,看起來有點像html,可讀性比較強,微信開發(fā)接口的消息傳遞主要在用這個。
有些人會覺得很頭大,其實不理解也沒關系,只要搞清楚它每次傳輸給你的有那些數(shù)據(jù),你怎么獲取這些數(shù)據(jù)就可以了。
文本消息的數(shù)據(jù)字段:
ToUserName:開發(fā)者微信號(公眾賬號ID)
FromUserName:發(fā)送方帳號(微信用戶的OPENID,每個微信用戶與每個公眾賬號是唯一的,不同公眾賬號同個用戶OPENID是不同的)
CreateTime:消息創(chuàng)建時間
MsgType:消息類型(文本消息為text)
Content:消息內(nèi)容
MsgId:消息的ID號
2、圖片消息
用戶使用圖片上傳發(fā)送消息,應用場景:賬號注冊、隨手拍活動征集、現(xiàn)場微信照片墻。
接口獲取到的消息格式:
圖片消息與文本消息數(shù)據(jù)不同:
MsgType:消息類型為image
PicUrl:圖片鏈接,該圖片保存在微信的服務器上,可以通過遠程抓取圖片程序保存到本地。
3、地理位置消息
微信將LBS當作一個交互信息進行傳遞,比較常見的微信用戶之間發(fā)送地理位置告知目的地所在,公眾號里發(fā)送地理位置搜索周邊人、商家、信息等。
接口獲取到的消息格式:
地理位置消息與文本消息數(shù)據(jù)不同:
MsgType:消息類型為location
Location_X、Location_Y、Scale:地理位置的經(jīng)緯度和地圖縮放比例,用于第三方地圖接口的應用,搜索周邊需要用到
Label:地理位置文字信息,如某某城市某某路某某號,如果以城市為單位查詢直接拿這個就可以。
4、鏈接消息
微收藏、印象筆記等用來保存微信里圖文消息的應用就是使用的這個接口,用戶將鏈接發(fā)送到該公眾賬號,公眾賬號通過鏈接抓取網(wǎng)頁內(nèi)容然后收藏保存。
接口獲取到的消息格式:
鏈接消息與文本消息數(shù)據(jù)不同:
MsgType:消息類型為link
Title:消息標題
Description:消息描述
Url:鏈接地址
5、語音消息(未開放)
這個消息接口并不在公開文檔上,但事實上有不少微信應用已經(jīng)在使用,比如路況電臺,不全面開放的原因我個人猜測是因為微信自己的語音識別還不理想,未來肯定會開放,想象一下對公眾賬號說句話后臺就能給反饋信息多方便的功能。
接口獲取到的消息格式:
語音消息與文本消息數(shù)據(jù)不同:
MsgType:消息類型為voice
MediaId:語音消息媒體id,可以調(diào)用相應接口獲取內(nèi)容
Format:語音類型,如amr,speex,wav等,目前是使用的speex。
6、視頻消息(未開放)
這個消息接口也不在公開文檔上,結(jié)構(gòu)跟語音消息差不多。
接口獲取到的消息格式:
視頻消息與文本消息數(shù)據(jù)不同:
MsgType:消息類型為video
MediaId:視頻消息媒體id,可以調(diào)用相應接口獲取內(nèi)容
ThumbMediaId:視頻消息縮略圖id,可以調(diào)用相應接口獲取內(nèi)容
7、事件推送
這個接口很重要,目前只開放了用戶關注、用戶退訂,還有自定義菜單按鈕相應的功能,部分測試的有用戶打開公眾號提醒和自動發(fā)送地理位置。也就是用戶不發(fā)送任何內(nèi)容也可以捕捉用戶行為做出回復。
接口獲取到的消息格式:
事件推送與文本消息數(shù)據(jù)不同:
MsgType:消息類型為event
Event:事件內(nèi)容,subscribe(訂閱)、unsubscribe(取消訂閱)、CLICK(自定義菜單點擊事件)
EventKey:當用戶事件為點擊自定義菜單時,返回事件KEY值,與自定義菜單接口中KEY值對應。
很多人在問如何知道用戶退訂的,其實就是這個消息接口,另外3月26日后將用戶關注消息也從文本消息改為了事件推送。
消息回復(即公眾賬號在接收到用戶消息后下發(fā)回復消息)
消息回復需要注意的一點是從接收用戶發(fā)送的消息,到服務器響應返回消息,有效時間只有5秒鐘,超時的話用戶是無法接收到回復消息的。
1、回復文本消息
文字閱讀要比其他方式的閱讀成本低,所以能用文本的地方咱們就盡量用文本。
接口下發(fā)的消息格式:
回復文本消息的數(shù)據(jù)字段:
ToUserName:發(fā)送方帳號(微信用戶的OPENID,每個微信用戶與每個公眾賬號是唯一的,不同公眾賬號同個用戶OPENID是不同的)
FromUserName:開發(fā)者微信號(公眾賬號ID)
CreateTime:回復消息創(chuàng)建時間
MsgType:回復消息類型(文本消息為text)
Content:回復消息內(nèi)容(長度不超過2048字節(jié))
FuncFlag:設置為1的時候,自動星標剛才接收到的消息,適合活動統(tǒng)計使用
2、回復圖片消息(未開放)
這是個未公開的接口,現(xiàn)在使用開發(fā)模式最苦逼的就是沒法回復圖片,還不如編輯模式,啥都能回復!
接口下發(fā)的消息格式:
與回復文本消息的數(shù)據(jù)字段的不同:
MsgType:回復消息類型為image
MediaId: 圖片的id,需要通過其他接口上傳圖片獲得
上傳圖片限制:1MB,支持JPG格式
3、回復語音消息(未開放)
這是個未公開的接口,語音消息展現(xiàn)形式跟音樂消息還是不一樣的,也不會出現(xiàn)某些安卓版微信無法播放音樂消息的情況。
接口下發(fā)的消息格式:
與回復文本消息的數(shù)據(jù)字段的不同:
MsgType:回復消息類型為voice
MediaId: 語音的id,需要通過其他接口上傳語音獲得
上傳語音限制:1MB,播放長度不超過60s,支持AMR格式
4、回復視頻消息(未開放)
這是個未公開的接口,和圖片消息差不多。
接口下發(fā)的消息格式:
與回復文本消息的數(shù)據(jù)字段的不同:
MsgType:回復消息類型為video
MediaId: 視頻的id,需要通過其他接口上傳視頻獲得
ThumbMediaId:縮略圖的id,通過上傳圖片(80*80)得到id
視頻限制:10MB,支持MP4格式
縮略圖限制:64KB,支持JPG格式
5、回復音樂消息
很多人問我為什么可以播放音樂,沒什么秘密,就是用這個接口了。
接口下發(fā)的消息格式:
與回復文本消息的數(shù)據(jù)字段的不同:
MsgType:回復消息類型為music
Title: 音樂標題,我經(jīng)常是放歌名
Description: 音樂描述,我經(jīng)常是放歌手名字
MusicUrl: 音樂鏈接,支持MP3、WMV、AAC等在線音樂格式
HQMusicUrl:高質(zhì)量音樂鏈接,WIFI環(huán)境優(yōu)先使用該鏈接播放音樂,可以和上面的一樣。
6、回復圖文消息
開發(fā)模式里最喜歡的就是這個了,比如可以用多圖文消息做個歡迎菜單,可以做圖文歷史文章查詢。
接口下發(fā)的消息格式:
MsgType:回復消息類型為news
ArticleCount:圖文消息個數(shù),限制為10條以內(nèi),這個必須準確,有多少條圖文消息就得填寫多少,不然會出錯。
Articles:多條圖文消息信息,默認第一個item為大圖,每個item的結(jié)構(gòu)完全一樣,每個item表示一條圖文消息。
Title:圖文消息標題
Description:圖文消息描述
PicUrl:圖片鏈接,支持JPG、PNG格式,較好的效果為大圖640*320,小圖80*80。
Url:點擊圖文消息跳轉(zhuǎn)鏈接,這個鏈接可以是自己網(wǎng)站鏈接,但是記得申請白名單,不然出現(xiàn)警告提示用戶一般不會點擊進去。
其他消息接口
這些接口都未對外開放,看看就行,如果在寫教程中途官方開放了,我也會寫進。
1、用戶信息接口(未開放)
公眾平臺獲取關注用戶的信息。
接口請求地址:
https://api.weixin.qq.com/cgi-bin/user/info
接口返回信息:
subscribe:用戶是否訂閱該公眾號標識,值為0時,拉取不到其余信息
openid:用戶的標識,對當前公眾號唯一
nickname:用戶的昵稱
sex:用戶的性別,值等于1時為男性,值等于2時為女性
city:用戶所在城市
language:用戶的語言,簡體中文為zh_CN
2、媒體文件上傳接口(未開放)
上傳圖片、語音、視頻等文件,獲取media_id,media_id可復用。
接口請求地址:
http://api.weixin.qq.com/cgi-bin/media/upload
接口返回信息:
type:媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb)
media_id:媒體文件上傳后獲取的唯一標識
created_at:媒體文件上傳時間
3、媒體文件獲取接口(未開放)
通過media_id獲取圖片、語音、視頻等文件。
接口請求地址:
http://api.weixin.qq.com/cgi-bin/media/get
4、拉取關注接口(未開放)
拉取公眾賬戶關注用戶列表。
接口請求地址:
https://api.weixin.qq.com/cgi-bin/user/get
接口返回信息:
total:關注該公眾賬號的總用戶數(shù)
count:拉取的OPENID個數(shù),最大值為10000
data:列表數(shù)據(jù),OPENID的列表
next_openid:下一次拉取的關注用戶的偏移值