微信公眾平臺高級群發功能接口
珠海微信營銷網:微信官方公眾平臺網站上,為微信訂閱號提供了每天一條的群發權限,為微信服務號提供每月4條的群發權限,而對于某些具備開發能力的公眾號運營者,可以通過高級群發接口,實現更靈活的群發能力。
【微信公眾號群發圖文消息的過程如下】:
1、首先,預先將圖文消息中需要用到的圖片,使用上傳圖文消息內圖片接口,上傳成功并獲得圖片URL;
2、上傳圖文消息素材,需要用到圖片時,請使用上一步獲取的圖片URL;
3、使用對用戶分組的群發,或對OpenID列表的群發,將圖文消息群發出去;
4、在上述過程中,如果需要,還可以預覽圖文消息、查詢群發狀態,或刪除已群發的消息等。
【關于微信公眾號群發時使用is_to_all為true使其進入公眾號在微信客戶端的歷史消息列表】:
1、使用is_to_all為true且成功群發,會使得此次群發進入歷史消息列表。
2、為防止異常,認證訂閱號在一天內,只能使用is_to_all為true進行群發一次,或者在公眾平臺官網群發(不管本次群發是對全體還是對某個分組)一次。以避免一天內有2條群發進入歷史消息列表。
3、類似地,服務號在一個月內,使用is_to_all為true群發的次數,加上公眾平臺官網群發(不管本次群發是對全體還是對某個分組)的次數,最多只能是4次。
4、設置is_to_all為false時是可以多次群發的,但每個用戶只會收到最多4條,且這些群發不會進入歷史消息列表。
【微信公眾號群發圖片、文本等其他消息類型的過程如下】:
1、如果是群發文本消息,則直接根據下面的接口說明進行群發即可;
2、如果是群發圖片、視頻等消息,則需要預先通過素材管理接口準備好mediaID;
【微信官方提醒第三方接口開發商注意】:
1、對于認證訂閱號,群發接口每天可成功調用1次,此次群發可選擇發送給全部用戶或某個分組;
2、對于認證服務號雖然開發者使用高級群發接口的每日調用限制為100次,但是用戶每月只能接收4條,無論在公眾平臺網站上,還是使用接口群發,用戶每月只能接收4條群發消息,多于4條的群發將對該用戶發送失敗;
3、具備微信支付權限的公眾號,在使用群發接口上傳、群發圖文消息類型時,可使用<a>標簽加入外鏈;
4、開發者可以使用預覽接口校對消息樣式和排版,通過預覽接口可發送編輯好的消息給指定用戶校驗效果。
【以下是微信公眾平臺高級群發功能接口代碼-來源于微信官方網站】
上傳圖文消息內的圖片獲取URL【訂閱號與服務號認證后均可用】
請注意,本接口所上傳的圖片不占用公眾號的素材庫中圖片數量的5000個的限制。圖片僅支持jpg/png格式,大小必須在1MB以下。
接口調用請求說明
http請求方式: POST https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN 調用示例(使用curl命令,用FORM表單方式上傳一個圖片): curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN"
參數說明
參數 | 是否必須 | 說明 |
---|---|---|
access_token | 是 | 調用接口憑證 |
media | 是 | form-data中媒體文件標識,有filename、filelength、content-type等信息 |
返回說明 正常情況下的返回結果為:
{ "url": "http://mmbiz.qpic.cn/mmbiz/gLO17UPS6FS2xsypf378iaNhWacZ1G1UplZYWEYfwvuU6Ont96b1roYs CNFwaRrSaKTPCUdBK9DgEHicsKwWCBRQ/0" }
其中url就是上傳圖片的URL,可用于后續群發中,放置到圖文消息中。
錯誤時微信會返回錯誤碼等信息,請根據錯誤碼查詢錯誤信息。
上傳圖文消息素材【訂閱號與服務號認證后均可用】
接口調用請求說明
http請求方式: POST https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=ACCESS_TOKEN
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", "show_cover_pic":"1" }, { "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", "show_cover_pic":"0" } ] }
參數 | 是否必須 | 說明 |
---|---|---|
Articles | 是 | 圖文消息,一個圖文消息支持1到10條圖文 |
thumb_media_id | 是 | 圖文消息縮略圖的media_id,可以在基礎支持-上傳多媒體文件接口中獲得 |
author | 否 | 圖文消息的作者 |
title | 是 | 圖文消息的標題 |
content_source_url | 否 | 在圖文消息頁面點擊“閱讀原文”后的頁面 |
content | 是 | 圖文消息頁面的內容,支持HTML標簽 |
digest | 否 | 圖文消息的描述 |
show_cover_pic | 否 | 是否顯示封面,1為顯示,0為不顯示 |
返回說明
返回數據示例(正確時的JSON返回結果):
{ "type":"news", "media_id":"CsEf3ldqkAYJAU6EJeIkStVDSvffUJ54vqbThMgplD-VJXXof6ctX5fI6-aYyUiQ", "created_at":1391857799 }
參數 | 說明 |
---|---|
type | 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb),次數為news,即圖文消息 |
media_id | 媒體文件/圖文消息上傳后獲取的唯一標識 |
created_at | 媒體文件上傳時間 |
錯誤時微信會返回錯誤碼等信息,請根據錯誤碼查詢錯誤信息。
根據分組進行群發【訂閱號與服務號認證后均可用】
接口調用請求說明
http請求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN
POST數據說明
POST數據示例如下:
圖文消息(注意圖文消息的media_id需要通過上述方法來得到):
{ "filter":{ "is_to_all":false "group_id":"2" }, "mpnews":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"mpnews" }
文本:
{ "filter":{ "is_to_all":false "group_id":"2" }, "text":{ "content":"CONTENT" }, "msgtype":"text" }
語音(注意此處media_id需通過基礎支持中的上傳下載多媒體文件來得到):
{ "filter":{ "is_to_all":false "group_id":"2" }, "voice":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"voice" }
圖片(注意此處media_id需通過基礎支持中的上傳下載多媒體文件來得到):
{ "filter":{ "is_to_all":false "group_id":"2" }, "image":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"image" }
視頻
請注意,此處視頻的media_id需通過POST請求到下述接口特別地得到:https://file.api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token=ACCESS_TOKEN POST數據如下(此處media_id需通過基礎支持中的上傳下載多媒體文件來得到):
{ "media_id": "rF4UdIMfYK3efUfyoddYRMU50zMiRmmt_l0kszupYh_SzrcW5Gaheq05p_lHuOTQ", "title": "TITLE", "description": "Description" }
返回將為
{ "type":"video", "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc", "created_at":1398848981 }
然后,POST下述數據(將media_id改為上一步中得到的media_id),即可進行發送
{ "filter":{ "is_to_all":false "group_id":"2" }, "mpvideo":{ "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc", }, "msgtype":"mpvideo" }
卡券消息(注意圖文消息的media_id需要通過上述方法來得到):
{ "filter":{ "is_to_all":false "group_id":"2" }, "wxcard":{ "card_id":"123dsdajkasd231jhksad" }, "msgtype":"wxcard" }
參數 | 是否必須 | 說明 |
---|---|---|
filter | 是 | 用于設定圖文消息的接收者 |
is_to_all | 否 | 用于設定是否向全部用戶發送,值為true或false,選擇true該消息群發給所有用戶,選擇false可根據group_id發送給指定群組的用戶 |
group_id | 否 | 群發到的分組的group_id,參加用戶管理中用戶分組接口,若is_to_all值為true,可不填寫group_id |
mpnews | 是 | 用于設定即將發送的圖文消息 |
media_id | 是 | 用于群發的消息的media_id |
msgtype | 是 | 群發的消息類型,圖文消息為mpnews,文本消息為text,語音為voice,音樂為music,圖片為image,視頻為video,卡券為wxcard |
title | 否 | 消息的標題 |
description | 否 | 消息的描述 |
thumb_media_id | 是 | 視頻縮略圖的媒體ID |
返回說明
返回數據示例(正確時的JSON返回結果):
{ "errcode":0, "errmsg":"send job submission success", "msg_id":34182, "msg_data_id": 206227730 }
參數 | 說明 |
---|---|
type | 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb),圖文消息為news |
errcode | 錯誤碼 |
errmsg | 錯誤信息 |
msg_id | 消息發送任務的ID |
msg_data_id | 消息的數據ID,該字段只有在群發圖文消息時,才會出現。可以用于在圖文分析數據接口中,獲取到對應的圖文消息的數據,是圖文分析數據接口中的msgid字段中的前半部分,詳見圖文分析數據接口中的msgid字段的介紹。 |
請注意:在返回成功時,意味著群發任務提交成功,并不意味著此時群發已經結束,所以,仍有可能在后續的發送過程中出現異常情況導致用戶未收到消息,如消息有時會進行審核、服務器不穩定等。此外,群發任務一般需要較長的時間才能全部發送完畢,請耐心等待。
錯誤時微信會返回錯誤碼等信息,請根據錯誤碼查詢錯誤信息、
根據OpenID列表群發【訂閱號不可用,服務號認證后可用】
接口調用請求說明
http請求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN
POST數據說明
POST數據示例如下:
圖文消息(注意圖文消息的media_id需要通過上述方法來得到):
{ "touser":[ "OPENID1", "OPENID2" ], "mpnews":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"mpnews" }
文本:
{ "touser":[ "OPENID1", "OPENID2" ], "msgtype": "text", "text": { "content": "hello from boxer."} }
語音:
{ "touser":[ "OPENID1", "OPENID2" ], "voice":{ "media_id":"mLxl6paC7z2Tl-NJT64yzJve8T9c8u9K2x-Ai6Ujd4lIH9IBuF6-2r66mamn_gIT" }, "msgtype":"voice" }
圖片:
{ "touser":[ "OPENID1", "OPENID2" ], "image":{ "media_id":"BTgN0opcW3Y5zV_ZebbsD3NFKRWf6cb7OPswPi9Q83fOJHK2P67dzxn11Cp7THat" }, "msgtype":"image" }
視頻:
請注意,此處視頻的media_id需通過POST請求到下述接口特別地得到: https://api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token=ACCESS_TOKEN POST數據如下(此處media_id需通過基礎支持中的上傳下載多媒體文件來得到):
{ "media_id": "rF4UdIMfYK3efUfyoddYRMU50zMiRmmt_l0kszupYh_SzrcW5Gaheq05p_lHuOTQ", "title": "TITLE", "description": "Description" }
返回將為
{ "type":"video", "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc", "created_at":1398848981 }
然后,POST下述數據(將media_id改為上一步中得到的media_id),即可進行發送
{ "touser":[ "OPENID1", "OPENID2" ], "video":{ "media_id":"123dsdajkasd231jhksad", "title":"TITLE", "description":"DESCRIPTION" }, "msgtype":"video" }
卡券:
{ "touser":[ "OPENID1", "OPENID2" ], "wxcard": {"card_id":"123dsdajkasd231jhksad"} "msgtype":"wxcard" }
參數 | 是否必須 | 說明 |
---|---|---|
touser | 是 | 填寫圖文消息的接收者,一串OpenID列表,OpenID最少2個,最多10000個 |
mpnews | 是 | 用于設定即將發送的圖文消息 |
media_id | 是 | 用于群發的圖文消息的media_id |
msgtype | 是 | 群發的消息類型,圖文消息為mpnews,文本消息為text,語音為voice,音樂為music,圖片為image,視頻為video,卡券為wxcard |
title | 否 | 消息的標題 |
description | 否 | 消息的描述 |
thumb_media_id | 是 | 視頻縮略圖的媒體ID |
返回說明
返回數據示例(正確時的JSON返回結果):
{ "errcode":0, "errmsg":"send job submission success", "msg_id":34182, "msg_data_id": 206227730 }
參數 | 說明 |
---|---|
type | 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb),次數為news,即圖文消息 |
errcode | 錯誤碼 |
errmsg | 錯誤信息 |
msg_id | 消息發送任務的ID |
msg_data_id | 消息的數據ID,,該字段只有在群發圖文消息時,才會出現。可以用于在圖文分析數據接口中,獲取到對應的圖文消息的數據,是圖文分析數據接口中的msgid字段中的前半部分,詳見圖文分析數據接口中的msgid字段的介紹。 |
請注意:在返回成功時,意味著群發任務提交成功,并不意味著此時群發已經結束,所以,仍有可能在后續的發送過程中出現異常情況導致用戶未收到消息,如消息有時會進行審核、服務器不穩定等。此外,群發任務一般需要較長的時間才能全部發送完畢,請耐心等待。
錯誤時微信會返回錯誤碼等信息,請根據錯誤碼查詢錯誤信息。
刪除群發【訂閱號與服務號認證后均可用】
接口調用請求說明
http請求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token=ACCESS_TOKEN
POST數據說明
POST數據示例如下:
{ "msg_id":30124 }
參數 | 是否必須 | 說明 |
---|---|---|
msg_id | 是 | 發送出去的消息ID |
請注意:
1、只有已經發送成功的消息才能刪除 2、刪除消息是將消息的圖文詳情頁失效,已經收到的用戶,還是能在其本地看到消息卡片。 3、刪除群發消息只能刪除圖文消息和視頻消息,其他類型的消息一經發送,無法刪除。 4、如果多次群發發送的是一個圖文消息,那么刪除其中一次群發,就會刪除掉這個圖文消息也,導致所有群發都失效
返回說明
返回數據示例(正確時的JSON返回結果):
{ "errcode":0, "errmsg":"ok" }
參數 | 說明 |
---|---|
errcode | 錯誤碼 |
errmsg | 錯誤信息 |
錯誤時微信會返回錯誤碼等信息,請根據錯誤碼查詢錯誤信息。
預覽接口【訂閱號與服務號認證后均可用】
開發者可通過該接口發送消息給指定用戶,在手機端查看消息的樣式和排版。為了滿足第三方平臺開發者的需求,在保留對openID預覽能力的同時,增加了對指定微信號發送預覽的能力,但該能力每日調用次數有限制(100次),請勿濫用。
接口調用請求說明
http請求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=ACCESS_TOKEN
POST數據說明
POST數據示例如下:
圖文消息(其中media_id與根據分組群發中的media_id相同):
{ "touser":"OPENID", "mpnews":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"mpnews" }
文本:
{ "touser":"OPENID", "text":{ "content":"CONTENT" }, "msgtype":"text" }
語音(其中media_id與根據分組群發中的media_id相同):
{ "touser":"OPENID", "voice":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"voice" }
圖片(其中media_id與根據分組群發中的media_id相同):
{ "touser":"OPENID", "image":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"image" }
視頻(其中media_id與根據分組群發中的media_id相同):
{ "touser":"OPENID", "mpvideo":{ "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc", }, "msgtype":"mpvideo" }
卡券:
{ "touser":"OPENID", "wxcard":{ "card_id":"123dsdajkasd231jhksad", "card_ext": "{\"code\":\"\",\"openid\":\"\",\"timestamp\":\"1402057159\",\"signature\":\"017bb17407c8e0058a66d72dcc61632b70f511ad\"}" }, "msgtype":"wxcard" }
請注意,上述JSON數據中的touser字段都可以改為towxname,這樣就可以針對微信號進行預覽(而非openID),towxname和touser同時賦值時,以towxname優先。修改后JSON數據如下(以圖文消息為例): 圖文消息:
{ "towxname":"示例的微信號", "mpnews":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"mpnews" }
參數 | 說明 |
---|---|
touser | 接收消息用戶對應該公眾號的openid,該字段也可以改為towxname,以實現對微信號的預覽 |
msgtype | 群發的消息類型,圖文消息為mpnews,文本消息為text,語音為voice,音樂為music,圖片為image,視頻為video,卡券為wxcard |
media_id | 用于群發的消息的media_id |
content | 發送文本消息時文本的內容 |
返回說明
返回數據示例(正確時的JSON返回結果):
{ "errcode":0, "errmsg":"preview success", "msg_id":34182 }
參數 | 說明 |
---|---|
errcode | 錯誤碼 |
errmsg | 錯誤信息 |
msg_id | 消息ID |
查詢群發消息發送狀態【訂閱號與服務號認證后均可用】
接口調用請求說明
http請求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/get?access_token=ACCESS_TOKEN
POST數據說明
POST數據示例如下:
{ "msg_id": "201053012" }
參數 | 說明 |
---|---|
msg_id | 群發消息后返回的消息id |
返回說明
返回數據示例(正確時的JSON返回結果):
{ "msg_id":201053012, "msg_status":"SEND_SUCCESS" }
參數 | 說明 |
---|---|
msg_id | 群發消息后返回的消息id |
msg_status | 消息發送后的狀態,SEND_SUCCESS表示發送成功 |
事件推送群發結果
由于群發任務提交后,群發任務可能在一定時間后才完成,因此,群發接口調用時,僅會給出群發任務是否提交成功的提示,若群發任務提交成功,則在群發任務結束時,會向開發者在公眾平臺填寫的開發者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 | 過濾(過濾是指特定地區、性別的過濾、用戶設置拒收的過濾,用戶接收已超4條的過濾)后,準備發送的粉絲數,原則上,FilterCount = SentCount + ErrorCount |
SentCount | 發送成功的粉絲數 |
ErrorCount | 發送失敗的粉絲數 |
此文來源于微信官方網站,所有權歸微信官方所有。
掃二維碼手機查看該文章