微信公衆平臺開發(89) 高級羣發接口(轉)

 在這篇微信公衆平臺高級接口開發教程中,咱們將介紹如何使用接口實現微信公衆平臺羣發功能。html

本文分爲如下四個部分:api

  1. 準備羣發內容
  2. 選擇羣發對象
  3. 執行羣發
  4. 接收羣髮結果

 

1、準備羣發內容

羣發內容能夠是文本、圖片、語音、視頻、圖文。羣發文本只須要文本內容,其餘內容須要得到相應的media_id。數組

1. 文本內容

文本內容就是一段文字,好比:"微信公衆平臺開發最佳實踐"服務器

2. 圖片、語音、視頻

要求以下:微信

  • Ÿ 圖片(image): 128K,支持JPG格式
  • Ÿ 語音(voice):256K,播放長度不超過60s,支持AMR\MP3格式
  • Ÿ 視頻(video):1MB,支持MP4格式

準備好之後,須要使用上傳下載多媒體文件接口將其上傳到微信服務器,得到media_id。
上傳的開發方法,能夠參考本博客的第80篇教程 微信公衆平臺開發(80) 上傳下載多媒體文件
app

3. 圖文

首先要準備縮略圖,要求以下:微信公衆平臺

  • 縮略圖(thumb):64KB,支持JPG格式

一樣的,使用上傳下載多媒體文件接口,上傳到微信服務器後,獲得縮略圖的media_id,
而後須要使用上傳圖文消息素材接口將其上傳到微信服務器,接口爲ide

https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=ACCESS_TOKENpost

要POST提交的數據示例以下:this

複製代碼
{
    "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 圖文消息的描述

 根據上述POST結構,定義圖文數組以下:

上傳成功後,返回以下,將獲得圖文消息的media_id

{
    "type":"news",
    "media_id":"CsEf3ldqkAYJAU6EJeIkStVDSvffUJ54vqbThMgplD-VJXXof6ctX5fI6-aYyUiQ",
    "created_at":1391857799 }

 

2、選擇羣發對象

羣發對象能夠是用戶組,也能夠是OpenID列表。

1.用戶組

得到用戶分組,須要使用高級接口中的查詢全部分組接口,得到相應的group_id,
開發方法,能夠參考本博客的第88篇教程 微信公衆平臺開發(88) 用戶分組接口

2.OpenID列表

OpenID列表,是使用高級接口中的獲取關注者列表接口來實現的。
開發方法,能夠參考本博客的第87篇教程 微信公衆平臺開發(87) 獲取關注者列表

 

3、執行羣發

因爲羣發對象的不一樣,執行羣發也有不一樣的方式。

1. 對用戶組羣發

對用戶組羣發的接口以下:

https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN

要POST的內容按內容不一樣組成也不同。

文本:

複製代碼
{
   "filter":{ "group_id":"2" }, "text":{ "content":"CONTENT" }, "msgtype":"text" }
複製代碼

語音(注意此處media_id需經過基礎支持中的上傳下載多媒體文件來獲得):

複製代碼
{
   "filter":{ "group_id":"2" }, "voice":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"voice" }
複製代碼

圖片(注意此處media_id需經過基礎支持中的上傳下載多媒體文件來獲得):

複製代碼
{
   "filter":{ "group_id":"2" }, "image":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"image" }
複製代碼

視頻

複製代碼
{
   "filter":{ "group_id":"2" }, "mpvideo":{ "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc", }, "msgtype":"mpvideo" }
複製代碼

圖文消息(注意圖文消息的media_id須要經過上述方法來獲得):

複製代碼
{
   "filter":{ "group_id":"2" }, "mpnews":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"mpnews" }
複製代碼

相關參數說明以下:

參數 是否必須 說明
filter 用於設定圖文消息的接收者
group_id 羣發到的分組的group_id
mpnews 用於設定即將發送的圖文消息
media_id 用於羣發的消息的media_id
msgtype 羣發的消息類型,圖文消息爲mpnews,文本消息爲text,語音爲voice,音樂爲music,圖片爲image,視頻爲video
title 消息的標題
description 消息的描述
thumb_media_id 視頻縮略圖的媒體ID

其接口實現代碼以下所示:

返回結果以下:

複製代碼
array(3) { ["errcode"]=> int(0) ["errmsg"]=> string(27) "send job submission success" ["msg_id"]=> float(2347614963) }
複製代碼

參數說明

參數 說明
type 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb),圖文消息爲news
errcode 錯誤碼
errmsg 錯誤信息
msg_id 消息ID

下面是向用戶組發送圖文消息的效果,分別是接收到圖文消息,查看圖文消息內容後的效果,

2.對OpenID列表羣發

接口以下:

https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN

POST數據示例以下:
文本:

複製代碼
{
   "touser": [ "oR5Gjjl_eiZoUpGozMo7dbBJ362A", "oR5Gjjo5rXlMUocSEXKT7Q5RQ63Q" ], "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" }
複製代碼

視頻:

複製代碼
{
   "touser":[ "OPENID1", "OPENID2" ], "video":{ "media_id":"123dsdajkasd231jhksad", "title":"TITLE", "description":"DESCRIPTION" }, "msgtype":"video" }
複製代碼

圖文消息(注意圖文消息的media_id須要經過上述方法來獲得):

複製代碼
{
   "touser":[ "OPENID1", "OPENID2" ], "mpnews":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"mpnews" }
複製代碼

參數列表

參數 是否必須 說明
touser 填寫圖文消息的接收者,一串OpenID列表,OpenID最少個,最多10000個
mpnews 用於設定即將發送的圖文消息
media_id 用於羣發的圖文消息的media_id
msgtype 羣發的消息類型,圖文消息爲mpnews,文本消息爲text,語音爲voice,音樂爲music,圖片爲image,視頻爲video
title 消息的標題
description 消息的描述
thumb_media_id 視頻縮略圖的媒體ID

返回數據示例(正確時的JSON返回結果):

{
    "errcode":0,
    "errmsg":"send job submission success",
    "msg_id":2347614964 }

 

4、接收羣髮結果   

1. 設置公衆號助手

爲了能接收羣髮結果,須要設置公衆號助手,結果將推送到綁定的我的微信帳號上。其設置以下

2. 接收結果事件

羣發任務提交後,羣發任務可能在必定時間後才完成,所以,羣發接口調用時,僅會給出羣發任務是否提交成功的提示,若羣發任務提交成功,則在羣發任務結束時,會向開發者在公衆平臺填寫的開發者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 發送失敗的粉絲數

從上能夠看出,這實際上是公衆號羣發助手模擬向公衆號發送消息,那麼羣髮結果也是返回給公衆號助手。

在微信公衆平臺PHP SDK中增長該事件消息的處理結果以下:

複製代碼
private function receiveEvent($object) { $content = ""; switch ($object->Event) { case "subscribe": $content = "歡迎關注方倍工做室"; break; case "MASSSENDJOBFINISH": $content = "消息ID:".$object->MsgID. "\n結果:".$object->Status. "\n粉絲數:".$object->TotalCount. "\n過濾:".$object->FilterCount. "\n發送成功:".$object->SentCount. "\n發送失敗:".$object->ErrorCount; break; default: break; } $result = $this->transmitText($object, $content); return $result; }
複製代碼

 

====================================================================

方倍工做室微信公衆平臺帳號關注方法:1. 微信通信錄-添加朋友-查找公衆號-搜索「方倍工做室」2. 微信通信錄-添加朋友-搜號碼-輸入「pondbaystudio」3. 使用微信掃描下面的二維碼

相關文章
相關標籤/搜索