程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 微信公眾平台開發(89) 高級群發接口

微信公眾平台開發(89) 高級群發接口

編輯:關於PHP編程

在這篇微信公眾平台高級接口開發教程中,我們將介紹如何開發高級群發接口功能。

本文分為以下四個部分:

 

一、准備群發內容

群發內容可以是文本、圖片、語音、視頻、圖文。群發文本只需要文本內容,其他內容需要獲得相應的media_id。

1. 文本內容

文本內容就是一段文字,比如:""

2. 圖片、語音、視頻

要求如下:

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

准備好以後,需要使用上傳下載多媒體文件接口將其上傳到微信服務器,獲得。
上傳的開發方法,可以參考本博客的第80篇教程 

3. 圖文

首先要准備縮略圖,要求如下:

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

同樣的,使用上傳下載多媒體文件接口,上傳到微信服務器後,得到縮略圖的media_id,
然後需要使用接口將其上傳到微信服務器,接口為

要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 否 圖文消息的描述

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

[] = ("thumb_media_id"=>,
                "author"=>"",
                "title"=>"微信公眾平台開發",
                "content_source_url" =>"",
                "content" =>"",
                "digest" =>""[] = ("thumb_media_id"=>,
                "author"=>"方倍工作室",
                "title"=>"微信公眾平台開發入門教程",
                "content_source_url" =>"http://m.cnblogs.com/99079/3153567.html?full=1",
                "content" =>"",
                "digest" =>"微信公眾平台開發經典的入門教程,學習微信公眾平台開發必經之路!"[] = ("thumb_media_id"=>,
                "author"=>"方倍工作室",
                "title"=>"微信公眾平台開發最佳實踐",
                "content_source_url" =>"http://m.cnblogs.com/?u=txw1958",
                "content" =>"<p>本書共分10章,案例程序采用廣泛流行的PHP、MySQL、XML、CSS、JavaScript、HTML5等程序語言及數據庫實現。系統完整地介紹微信公眾平台基礎接口、自定義菜單、高級接口、微信支付、分享轉發等所有相關技術,以生活類、娛樂類、企業類微信開發為切入點,講解了30多個功能或應用案例。<br>本書按照從簡單到復雜,從基礎到實踐的方式編排,在講解過程中注重將原理和實踐相結合。初學者可以在了解PHP和MySQL語法之後,從頭至尾學習,對於其中難以理解的部分可以查閱相關資料,針對企業功能類的開發還需要具有一定的JavaScript、CSS、HTML等編程基礎。<br>本書可以作為微信公眾平台開發的教程。對於移動互聯網及微信公眾平台的相關從業人員,本書也具有極大的參考價值。</p>",
                "digest" =>"微信公眾平台開發含金量最高的書籍"

上傳圖文消息素材的代碼則實現如下:

 

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

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

 

二、選擇群發對象

群發對象可以是用戶組,也可以是OpenID列表。

1.用戶組

獲得用戶分組,需要使用高級接口中的查詢所有分組接口,獲得相應的group_id,
開發方法,可以參考本博客的第88篇教程 微信公眾平台開發(88) 用戶分組接口

2.OpenID列表

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

 

三、執行群發

由於群發對象的不同,執行群發也有不同的方式。

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"

"filter""group_id":"2""voice""media_id":"123dsdajkasd231jhksad""msgtype":"voice"

"filter""group_id":"2""image""media_id":"123dsdajkasd231jhksad""msgtype":"image"

"filter""group_id":"2""mpvideo""media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc""msgtype":"mpvideo"

"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

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

返回結果如下:

(3"errcode"]=>0"errmsg"]=>
  (27) "send job submission success""msg_id"]=>
  (2347614963

參數說明

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

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

2.對OpenID列表群發

接口如下:

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

 

四、接收群發結果   

1. 設置公眾號助手

為了能接收群發結果,需要設置公眾號助手,結果將推送到綁定的個人微信賬號上。其設置如下

2. 接收結果事件

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

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

    
    
    1394524295
    
    
    1988
    
    100
    80
    75
    5
參數說明 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中增加該事件消息的處理結果如下:

  receiveEvent( = "" (-> "subscribe":
             = "歡迎關注方倍工作室" "MASSSENDJOBFINISH":
             = "消息ID:".->MsgID.
                       "\n結果:".->Status.
                       "\n粉絲數:".->TotalCount.
                       "\n過濾:".->FilterCount.
                       "\n發送成功:".->SentCount.
                       "\n發送失敗:".->:
             = ->transmitText(,  

 

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

方倍工作室微信公眾平台賬號關注方法:
1. 微信通訊錄-添加朋友-查找公眾號-搜索“方倍工作室”
2. 微信通訊錄-添加朋友-搜號碼-輸入“pondbaystudio”
3. 使用微信掃描下面的二維碼

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved