1. 程式人生 > >微信公眾平臺高階群發介面

微信公眾平臺高階群發介面

出自微信公眾平臺開發者文件

在公眾平臺網站上,為訂閱號提供了每天一條的群發許可權,為服務號提供每月(自然月)4條的群發許可權。而對於某些具備開發能力的公眾號運營者,可以通過高階群發介面,實現更靈活的群發能力。

請注意:

1、該介面暫時僅提供給已微信認證的服務號
2、高階群發介面的每日呼叫限制為10次,請小心測試
3、無論在公眾平臺網站上,還是使用介面群發,使用者每月只能接收4條群發訊息,多於4條的群發將對該使用者傳送失敗

上傳圖文訊息素材

介面呼叫請求說明

POST資料說明

POST資料示例如下:

{
   "articles": [
		 {
                        "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p”,
                        "author":"xxx",
			 "title":"Happy Day",
			 "content_source_url":"www.qq.com",
			 "content":"content",
			 "digest":"digest"
		 },
		 {
                        "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p”,
                        "author":"xxx",
			 "title":"Happy Day",
			 "content_source_url":"www.qq.com",
			 "content":"content",
			 "digest":"digest"
		 }
   ]
}
引數是否必須說明
Articles 圖文訊息,一個圖文訊息支援1到10條圖文
thumb_media_id 圖文訊息縮圖的media_id
author 圖文訊息的作者
title 圖文訊息的標題
content_source_url 在圖文訊息頁面點選“閱讀原文”後的頁面
content 圖文訊息頁面的內容,支援HTML標籤
digest 圖文訊息的描述

返回說明

返回資料示例(正確時的JSON返回結果):

{
   "type":"news",
   "media_id":"CsEf3ldqkAYJAU6EJeIkStVDSvffUJ54vqbThMgplD-VJXXof6ctX5fI6-aYyUiQ",
   "created_at":1391857799
}
引數說明
type 媒體檔案型別,分別有圖片(image)、語音(voice)、視訊(video)和縮圖(thumb),次數為news,即圖文訊息
media_id 媒體檔案/圖文訊息上傳後獲取的唯一標識
created_at 媒體檔案上傳時間

錯誤時微信會返回錯誤碼等資訊,請根據錯誤碼查詢錯誤資訊: 全域性返回碼說明

根據分組進行群發

介面呼叫請求說明

POST資料說明

POST資料示例如下:

圖文訊息(注意圖文訊息的media_id需要通過上述方法來得到):

{
   "filter":{
      "group_id":"2"
   },
   "mpnews":{
      "media_id":"123dsdajkasd231jhksad"
   },
    "msgtype":"mpnews"
}
引數是否必須說明
filter 用於設定圖文訊息的接收者
group_id 群發到的分組的group_id
mpnews 用於設定即將傳送的圖文訊息
media_id 用於群發的訊息的media_id
msgtype 群發的訊息型別,圖文訊息為mpnew

返回說明

返回資料示例(正確時的JSON返回結果):

{
   "errcode":0,
   "errmsg":"send job submission success",
   "msg_id":34182
}
引數說明
type 媒體檔案型別,分別有圖片(image)、語音(voice)、視訊(video)和縮圖(thumb),次數為news,即圖文訊息
errcode 錯誤碼
errmsg 錯誤資訊
msg_id 訊息ID

請注意:在返回成功時,意味著群發任務提交成功,並不意味著此時群發已經結束,所以,仍有可能在後續的傳送過程中出現異常情況導致使用者未收到訊息,如訊息有時會進行稽核、伺服器不穩定等。此外,群發任務一般需要較長的時間才能全部發送完畢,請耐心等待

錯誤時微信會返回錯誤碼等資訊,請根據錯誤碼查詢錯誤資訊: 全域性返回碼說明

根據OpenID列表群發

介面呼叫請求說明

POST資料說明

POST資料示例如下:

圖文訊息:

{
   "touser":[
    "OPENID1",
    "OPENID2"
   ],
   "mpnews":{
      "media_id":"123dsdajkasd231jhksad"
   },
    "msgtype":"mpnews"
}
引數 是否必須 說明
touser 填寫圖文訊息的接收者,一串OpenID列表,OpenID最少個,最多10000個
mpnews 用於設定即將傳送的圖文訊息
media_id 用於群發的圖文訊息的media_id
msgtype 群發的訊息型別,圖文訊息為mpnew

返回說明

返回資料示例(正確時的JSON返回結果):

{
   "errcode":0,
   "errmsg":"send job submission success",
   "msg_id":34182
}
引數說明
type 媒體檔案型別,分別有圖片(image)、語音(voice)、視訊(video)和縮圖(thumb),次數為news,即圖文訊息
errcode 錯誤碼
errmsg 錯誤資訊
msg_id 訊息ID

請注意:在返回成功時,意味著群發任務提交成功,並不意味著此時群發已經結束,所以,仍有可能在後續的傳送過程中出現異常情況導致使用者未收到訊息,如訊息有時會進行稽核、伺服器不穩定等。此外,群發任務一般需要較長的時間才能全部發送完畢,請耐心等待

錯誤時微信會返回錯誤碼等資訊,請根據錯誤碼查詢錯誤資訊: 全域性返回碼說明

刪除群發

介面呼叫請求說明

POST資料說明

POST資料示例如下:

{
   "msgid":30124
}
引數是否必須說明
msg_id 傳送出去的訊息ID

請注意,只有已經發送成功的訊息才能刪除刪除訊息只是將訊息的圖文詳情頁失效,已經收到的使用者,還是能在其本地看到訊息卡片。

返回說明

返回資料示例(正確時的JSON返回結果):

{
   "errcode":0,
   "errmsg":"ok"
}
引數說明
errcode 錯誤碼
errmsg 錯誤資訊

錯誤時微信會返回錯誤碼等資訊,請根據錯誤碼查詢錯誤資訊: 全域性返回碼說明

事件推送群髮結果

由於群發任務提交後,群發任務可能在一定時間後才完成,因此,群發介面呼叫時,僅會給出群發任務是否提交成功的提示,若群發任務提交成功,則在群發任務結束時,會向開發者在公眾平臺填寫的開發者URL(callback URL)推送事件。

推送的XML結構如下(傳送成功時):

<xml>
<ToUserName><![CDATA[gh_3e8adccde292]]></ToUserName>
<FromUserName><![CDATA[oR5Gjjl_eiZoUpGozMo7dbBJ362A]]></FromUserName>
<CreateTime>1394524295</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[MASSSENDJOBFINISH]]></Event>
<MsgID>1988</MsgID>
<Status><![CDATA[sendsuccess]]></Status>
<TotalCount>100</TotalCount>
<FilterCount>80</FilterCount>
<SentCount>75</SentCount>
<ErrorCount>5</ErrorCount>
</xml>
引數說明
ToUserName 公眾號的微訊號
FromUserName 公眾號群發助手的微訊號,為mphelper
CreateTime 建立時間的時間戳
MsgType 訊息型別,此處為event
Event 事件資訊,此處為MASSSENDJOBFINISH
MsgID 群發的訊息ID
Status 群發的結構,為“send success”或“send fail”或“err(num)”。但send success時,也有可能因使用者拒收公眾號的訊息、系統錯誤等原因造成少量使用者接收失敗。err(num)是稽核失敗的具體原因,可能的情況如下:

err(10001), //涉嫌廣告 err(20001), //涉嫌政治 err(20004), //涉嫌社會 err(20002), //涉嫌色情 err(20006), //涉嫌違法犯罪 err(20008), //涉嫌欺詐 err(20013), //涉嫌版權 err(22000), //涉嫌互推(互相宣傳) err(21000), //涉嫌其他

TotalCount group_id下粉絲數;或者openid_list中的粉絲數
FilterCount 過濾(過濾是指,有些使用者在微信設定不接收該公眾號的訊息)後,準備傳送的粉絲數,原則上,FilterCount = SentCount + ErrorCount
SentCount 傳送成功的粉絲數
ErrorCount 傳送失敗的粉絲數

群發介面及四次的解析: 首先,每月4次的群發規則適用所有服務號。其中普通服務號可以通過mp後臺(即公眾平臺後臺)群發訊息,對於認證服務號的話,除了mp後臺外,還可通過新增的群發介面進行個性化的群發,這一條對於第三方產品設計來說是最重要的,下邊的深度解讀主要針對這個方面。
第二、新增的群發介面,對於“每月4次”的規則的實現是針對接收群發信息的使用者來說的,也就是說通過群發介面給某一使用者傳送訊息的話,每月最多是4條,也就是說同一個使用者,你每月最多隻能推送4條訊息給他。而對於該公眾賬號,每月可群發的次數不只4條。根據現在的介面呼叫日限額是10條計算,每月至少能傳送300條群發信息。一個很常見的應用場景就是,當原來本月的群發信息條數已經發完後,新關注的粉絲,這個月我們就無法給其傳送群發訊息了,但是現在則不同,我們可以使用群發介面,給新關注粉絲“補發”之前的群發訊息,做到每月群發訊息100%的覆蓋。
第三、群發介面有兩種呼叫方式,一種是提供一個待接收訊息的使用者openid列表,一種是提供一個待接收訊息的使用者分組id。第一種使用方式,一般配合“獲取關注者列表”介面,通過自己維護的使用者業務邏輯分組來使用。第二種方式是使用公眾平臺系統的分組來使用。這種方式,使得原來很多人忽略的“分組管理介面”變得真正有意義了。
第四、群發任務的任務報告。通過這個介面,可以進行動態監控,瞭解群發的統計資訊,對於第三方開發來說,除了使產品設計更加人性化以外,有一點請大家注意,這個介面是被動呼叫介面,僅當群發任務完成後,微信才會呼叫,目前沒有辦法主動進行狀態監控。另外,由於報告只有統計計數,沒有具體的openid列表,所以我們沒辦法直接知道該訊息對於某一使用者來說是否傳送成功。
微信服務號群發介面的開放,大大提升了服務號的功能,同時也給第三方開發公司更大的開發和產品設計空間

概念分析解讀:

每天10次呼叫,是指程式每天呼叫高階介面中的介面10次,即和https://api.weixin.qq.com/的互動為10次,包括上傳素材在內,假如今天上傳了10個素材,也算呼叫了10次,或者上傳了5個素材,分別給5個使用者發了不同的訊息,那麼今天也是呼叫了10次

使用者每月4次,是指給同一個使用者在一個月之內可以用群發介面發4次訊息,假如今天用群發介面給某使用者發了4次,那麼這個月就再不不能給這個使用者發訊息了。發了他也收不到

如何玩:

 這個東西最好玩的就是給使用者分組,今天給這組使用者推這個內容,明天給另一組使用者推另外的內容,每個內容都和使用者關係比較密切,而不是之前的所有人都一樣的,最終實現精準推送

總結:

 現在就有3種方式來給使用者傳送訊息了,
1. 自動回覆,5秒內響應
2. 客服介面回覆,48小時內不限次數
3. 高階群發介面,每月4次,但不限時

個人感覺,每個月最好發3條,10天一次左右,留一條以做備用,用於不時不需,另外當月生日的使用者,可以用這條給他發生日祝賀(沒有比這更精準的更貼心的了吧)。

 實現過程,請檢視