高階群發介面


1474854569223323.png

高階群發介面

#

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

請注意:

1、对于认证订阅号,群发接口每天可成功调用1次,此次群发可选择发送给全部用户或某个标签;
2、对于认证服务号虽然开发者使用高级群发接口的每日调用限制为100次,但是用户每月只能接收4条,无论在公众平台网站上,还是使用接口群发,用户每月只能接收4条群发消息,多于4条的群发将对该用户发送失败;
3、具备微信支付权限的公众号,在使用群发接口上传、群发图文消息类型时,可使用<a>标签加入外链;
4、开发者可以使用预览接口校对消息样式和排版,通过预览接口可发送编辑好的消息给指定用户校验效果。

群發圖文訊息的過程如下:

1、首先,预先将图文消息中需要用到的图片,使用上传图文消息内图片接口,上传成功并获得图片URL
2、上传图文消息素材,需要用到图片时,请使用上一步获取的图片URL
3、使用对用户标签的群发,或对OpenID列表的群发,将图文消息群发出去
4、在上述过程中,如果需要,还可以预览图文消息、查询群发状态,或删除已群发的消息等

群發圖片、文字等其他訊息類型的過程如下:

1、如果是群发文本消息,则直接根据下面的接口说明进行群发即可
2、如果是群发图片、视频等消息,则需要预先通过素材管理接口准备好mediaID

關於群發時使用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条,且这些群发不会进入历史消息列表。

另外,請開發者註意,本介面中所有使用到media_id的地方,現在都可以使用素材管理中的永久素材media_id了。 請但注意,使用同一個素材群發出去的連結是一樣的,這意味著,刪除某一次群發,會導致整個連結失效。

已上傳圖文訊息內的圖片取得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呼叫介面憑證
mediaform-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
		 }
   ]
}
##是#圖文訊息,一個圖文訊息支援1到8條圖文#thumb_media_id是圖文訊息縮略圖的media_id,可以在基礎支援-上傳多媒體檔案介面中獲得#author#否圖文訊息的作者title是圖文訊息的標題content_source_url##圖文訊息的描述show_cover_pic#否是否顯示封面,1為顯示,0為不顯示
參數是否必須說明
Articles
################ ###在圖文訊息頁面點選「閱讀原文」後的頁面,受安全限制,如需跳轉Appstore,可以使用itun.es或appsto.re的短鏈服務,並在短鏈後增加#wechat_redirect 後綴。 ############content######是######圖文訊息頁面的內容,支援HTML標籤。具備微信支付權限的公眾號,可以使用a標籤,其他公眾號不能使用
#digest#否

傳回說明

傳回資料範例(正確時的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,
      "tag_id":2
   },
   "mpnews":{
      "media_id":"123dsdajkasd231jhksad"
   },
    "msgtype":"mpnews"
}

文字:

{
   "filter":{
      "is_to_all":false,
      "tag_id":2
   },
   "text":{
      "content":"CONTENT"
   },
    "msgtype":"text"
}

語音(注意此處media_id需透過基礎支援中的上傳下載多媒體檔案來取得):

{
   "filter":{
      "is_to_all":false,
      "tag_id":2
   },
   "voice":{
      "media_id":"123dsdajkasd231jhksad"
   },
    "msgtype":"voice"
}

圖片(注意此處media_id需透過基本支援中的上傳下載多媒體檔案來取得):

{
   "filter":{
      "is_to_all":false,
      "tag_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,
      "tag_id":2
   },
   "mpvideo":{
      "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc"
   },
    "msgtype":"mpvideo"
}

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

{
   "filter":{
      "is_to_all":false,
      "tag_id":"2"
   },
  "wxcard":{              
           "card_id":"123dsdajkasd231jhksad"         
            },
   "msgtype":"wxcard"
}


#
##description否訊息的描述thumb_media_id是影片縮圖的媒體ID#

傳回說明

傳回資料範例(正確時的JSON回傳結果):

{
   "errcode":0,
   "errmsg":"send job submission success",
   "msg_id":34182, 
   "msg_data_id": 206227730
}
參數是否必須說明
filter用於設定圖文訊息的接收者
is_to_all#否#用於設定是否向全部使用者發送,值為true或false,選擇true該訊息群發給所有用戶,選擇false可依tag_id傳送給指定群組的用戶
tag_id 群發到的標籤的tag_id,參加用戶管理中用戶分組接口,若is_to_all值為true,可不填入tag_id
mpnews#是 用來設定即將發送的圖文訊息
media_id#是用於群發的訊息的media_id
msgtype群發的訊息類型,圖文訊息為mpnews,文字訊息為text,語音為voice,音樂為music,圖片為image,影片為video,卡券為wxcard
title訊息的標題
##錯誤訊息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"
   ],
   "mpvideo":{
      "media_id":"123dsdajkasd231jhksad",
      "title":"TITLE",
      "description":"DESCRIPTION"
   },
    "msgtype":"mpvideo"
}

卡券:

{
   "touser":[
    "OPENID1",
    "OPENID2"
   ],
        "wxcard": {"card_id":"123dsdajkasd231jhksad"}
        "msgtype":"wxcard"
}


##
參數說明
type媒體檔案類型,分別有圖片(image)、語音(voice)、視訊(video)和縮圖(thumb),圖文訊息為news
errcode錯誤碼
#errmsg
##description否訊息的描述thumb_media_id是影片縮圖的媒體ID#

返回说明

返回数据示例(正确时的JSON返回结果):

{
   "errcode":0,
   "errmsg":"send job submission success",
   "msg_id":34182, 
   "msg_data_id": 206227730
}
参数是否必须说明
touser填写图文消息的接收者,一串OpenID列表,OpenID最少2个,最多10000个
mpnews用于设定即将发送的图文消息
media_id用于群发的图文消息的media_id
msgtype群發的訊息類型,圖文訊息為mpnews,文字訊息為text,語音為voice,音樂為music,圖片為image,影片為video,卡券為wxcard
title訊息的標題
参数说明
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"
}
錯誤訊息

错误时微信会返回错误码等信息,请根据错误码查询错误信息


预览接口【订阅号与服务号认证后均可用】

开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版。为了满足第三方平台开发者的需求,在保留对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" 
}
參數說明
errcode#錯誤碼
參數說明
#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_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>
參數說明
msg_id#群組發送訊息後傳回的訊息id
參數說明
#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 ), //涉嫌其他

TotalCounttag_id下粉絲數;或是openid_list中的粉絲數
FilterCount#。 (過濾是指特定地區、性別的過濾、用戶設定拒收的過濾,用戶接收已超4條的過濾)後,準備發送的粉絲數,原則上,FilterCount = SentCount ErrorCount
#SentCount發送成功的粉絲數
ErrorCount發送失敗的粉絲數

####### ####################################