在軟件程序實際應用中,在軟件中推送可能還不能滿足實際需求,需要把消息推送到用戶手機,目前比較好的方式,可能是微信消息推送。因此做一個記錄
企業微信/企業號註冊
微信消息推送需要配合 企業微信號 做消息推送
註冊連接
也可以使用微信公衆號實現消息推送。
微信認證
不管什麼方式都需要企業認證,認證方式如下:
需要支付300每次的認證費用
公衆號企業認證流程
消息推送
服務號
- text消息
- image消息
- voice消息
- video消息
- file消息
- news消息
- mpnews消息
text消息
{
"touser": "UserID1|UserID2|UserID3",
"toparty": " PartyID1 | PartyID2 ",
"totag": " TagID1 | TagID2 ",
"msgtype": "text",
"agentid": 1,
"text": {
"content": "Holiday Request For Pony(http://xxxxx)"
},
"safe":0
}
參數 必須 說明
touser 否 成員ID列表(消息接收者,多個接收者用‘|’分隔,最多支持1000個)。特殊情況:指定爲@all,則向關注該企業應用的全部成員發送
toparty 否 部門ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
totag 否 標籤ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
msgtype 是 消息類型,此時固定爲:text (支持消息型應用跟主頁型應用)
agentid 是 企業應用的id,整型。可在應用的設置頁面查看
content 是 消息內容,最長不超過2048個字節,注意:主頁型應用推送的文本消息在微信端最多隻顯示20個字(包含中英文)
safe 否 表示是否是保密消息,0表示否,1表示是,默認0
image消息
{
"touser": "UserID1|UserID2|UserID3",
"toparty": " PartyID1 | PartyID2 ",
"totag": " TagID1 | TagID2 ",
"msgtype": "image",
"agentid": 1,
"image": {
"media_id": "MEDIA_ID"
},
"safe":0
}
參數 必須 說明
touser 否 成員ID列表(消息接收者,多個接收者用‘|’分隔,最多支持1000個)。特殊情況:指定爲@all,則向關注該企業應用的全部成員發送
toparty 否 部門ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
totag 否 標籤ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
msgtype 是 消息類型,此時固定爲:image(不支持主頁型應用)
agentid 是 企業應用的id,整型。可在應用的設置頁面查看
media_id 是 圖片媒體文件id,可以調用上傳臨時素材或者永久素材接口獲取,永久素材media_id必須由發消息的應用創建
safe 否 表示是否是保密消息,0表示否,1表示是,默認0
voice消息
{
"touser": "UserID1|UserID2|UserID3",
"toparty": " PartyID1 | PartyID2 ",
"totag": " TagID1 | TagID2 ",
"msgtype": "voice",
"agentid": 1,
"voice": {
"media_id": "MEDIA_ID"
},
"safe":0
}
參數 必須 說明
touser 否 成員ID列表(消息接收者,多個接收者用‘|’分隔,最多支持1000個)。特殊情況:指定爲@all,則向關注該企業應用的全部成員發送
toparty 否 部門ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
totag 否 標籤ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
msgtype 是 消息類型,此時固定爲:voice (不支持主頁型應用)
agentid 是 企業應用的id,整型。可在應用的設置頁面查看
media_id 是 語音文件id,可以調用上傳臨時素材或者永久素材接口獲取
safe 否 表示是否是保密消息,0表示否,1表示是,默認0
video消息
{
"touser": "UserID1|UserID2|UserID3",
"toparty": " PartyID1 | PartyID2 ",
"totag": " TagID1 | TagID2 ",
"msgtype": "video",
"agentid": 1,
"video": {
"media_id": "MEDIA_ID",
"title": "Title",
"description": "Description"
},
"safe":0
}
參數 必須 說明
touser 否 成員ID列表(消息接收者,多個接收者用‘|’分隔,最多支持1000個)。特殊情況:指定爲@all,則向關注該企業應用的全部成員發送
toparty 否 部門ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
totag 否 標籤ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
msgtype 是 消息類型,此時固定爲:video (不支持主頁型應用)
agentid 是 企業應用的id,整型。可在應用的設置頁面查看
media_id 是 視頻媒體文件id,可以調用上傳臨時素材或者永久素材接口獲取
title 否 視頻消息的標題,不超過128個字節,超過會自動截斷
description 否 視頻消息的描述,不超過512個字節,超過會自動截斷
safe 否 表示是否是保密消息,0表示否,1表示是,默認0
file消息
{
"touser": "UserID1|UserID2|UserID3",
"toparty": " PartyID1 | PartyID2 ",
"totag": " TagID1 | TagID2 ",
"msgtype": "file",
"agentid": 1,
"file": {
"media_id": "MEDIA_ID"
},
"safe":"0"
}
參數 必須 說明
touser 否 成員ID列表(消息接收者,多個接收者用‘|’分隔,最多支持1000個)。特殊情況:指定爲@all,則向關注該企業應用的全部成員發送
toparty 否 部門ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
totag 否 標籤ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
msgtype 是 消息類型,此時固定爲:file (不支持主頁型應用)
agentid 是 企業應用的id,整型。可在應用的設置頁面查看
media_id 是 媒體文件id,可以調用上傳臨時素材或者永久素材接口獲取
safe 否 表示是否是保密消息,0表示否,1表示是,默認0
news消息
{
"touser": "UserID1|UserID2|UserID3",
"toparty": " PartyID1 | PartyID2 ",
"totag": " TagID1 | TagID2 ",
"msgtype": "news",
"agentid": 1,
"news": {
"articles":[
{
"title": "Title",
"description": "Description",
"url": "URL",
"picurl": "PIC_URL"
},
{
"title": "Title",
"description": "Description",
"url": "URL",
"picurl": "PIC_URL"
}
]
}
}
參數 必須 說明
touser 否 成員ID列表(消息接收者,多個接收者用‘|’分隔,最多支持1000個)。特殊情況:指定爲@all,則向關注該企業應用的全部成員發送
toparty 否 部門ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
totag 否 標籤ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
msgtype 是 消息類型,此時固定爲:news (不支持主頁型應用)
agentid 是 企業應用的id,整型。可在應用的設置頁面查看
articles 是 圖文消息,一個圖文消息支持1到8條圖文
title 否 標題,不超過128個字節,超過會自動截斷
description 否 描述,不超過512個字節,超過會自動截斷
url 否 點擊後跳轉的鏈接。
picurl 否 圖文消息的圖片鏈接,支持JPG、PNG格式,較好的效果爲大圖640320,小圖8080。如不填,在客戶端不顯示圖片
mpnews消息
注:mpnews消息與news消息類似,不同的是圖文消息內容存儲在微信後臺,並且支持保密選項。每個應用每天最多可以發送100次。
a)發送時直接帶上mpnews內容:
{
"touser": "UserID1|UserID2|UserID3",
"toparty": " PartyID1 | PartyID2 ",
"totag": " TagID1 | TagID2 ",
"msgtype": "mpnews",
"agentid": 1,
"mpnews": {
"articles":[
{
"title": "Title",
"thumb_media_id": "id",
"author": "Author",
"content_source_url": "URL",
"content": "Content",
"digest": "Digest description",
"show_cover_pic": "0"
},
{
"title": "Title",
"thumb_media_id": "id",
"author": "Author",
"content_source_url": "URL",
"content": "Content",
"digest": "Digest description",
"show_cover_pic": "0"
}
]
},
"safe":0
}
參數 必須 說明
touser 否 成員ID列表(消息接收者,多個接收者用‘|’分隔,最多支持1000個)。特殊情況:指定爲@all,則向關注該企業應用的全部成員發送
toparty 否 部門ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
totag 否 標籤ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
msgtype 是 消息類型,此時固定爲:mpnews (不支持主頁型應用)
agentid 是 企業應用的id,整型。可在應用的設置頁面查看
articles 是 圖文消息,一個圖文消息支持1到8個圖文
title 是 圖文消息的標題,不超過128個字節,超過會自動截斷
thumb_media_id 是 圖文消息縮略圖的media_id, 可以在上傳多媒體文件接口中獲得。此處thumb_media_id即上傳接口返回的media_id
author 否 圖文消息的作者,不超過64個字節
content_source_url 否 圖文消息點擊“閱讀原文”之後的頁面鏈接
content 是 圖文消息的內容,支持html標籤,不超過666 K個字節
digest 否 圖文消息的描述,不超過512個字節,超過會自動截斷
show_cover_pic 否 是否顯示封面,1爲顯示,0爲不顯示
safe 否 表示是否是保密消息,0表示否,1表示是,默認0
b)發送時使用永久圖文素材ID:
{
"touser": "UserI1|UserID2|UserID3",
"toparty": " PartyID1 | PartyID2 ",
"msgtype": "mpnews",
"agentid": 1,
"mpnews": {
"media_id": "MEDIA_ID"
},
"safe": 0
}
參數 必須 說明
touser 否 成員ID列表(消息接收者,多個接收者用‘|’分隔,最多支持1000個)。特殊情況:指定爲@all,則向關注該企業應用的全部成員發送
toparty 否 部門ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
totag 否 標籤ID列表,多個接收者用‘|’分隔,最多支持100個。當touser爲@all時忽略本參數
msgtype 是 消息類型,此時固定爲:mpnews (不支持主頁型應用)
agentid 是 企業應用的id,整型。可在應用的設置頁面查看
media_id 是 素材資源標識ID,通過上傳永久圖文素材接口獲得。注:必須是在該agent下創建的。
safe 否 表示是否是保密消息,0表示否,1表示是,默認0
企業微信數據接口
消息類型
文本消息
圖片消息
語音消息
視頻消息
文件消息
文本卡片消息
圖文消息
圖文消息(mpnews)
應用支持推送文本、圖片、視頻、文件、圖文等類型。
請求方式:POST(HTTPS)
請求地址: https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
參數說明:
參數 是否必須 說明
access_token 是 調用接口憑證
各個消息類型的具體POST格式請閱後續“消息類型”部分。
如果有在管理端對應用設置“在微工作臺中始終進入主頁”,應用在微信端只能接收到文本消息,並且文本消息的長度限制爲20字節,超過20字節會被截斷。同時其他消息類型也會轉換爲文本消息,提示用戶到企業微信查看。
支持id轉譯,將userid/部門id轉成對應的用戶名/部門名,目前僅文本/文本卡片/圖文/圖文(mpnews)這四種消息類型的部分字段支持。具體支持的範圍和語法,請查看附錄id轉譯說明。
支持重複消息檢查,當指定 “enable_duplicate_check”: 1開啓: 表示在一定時間間隔內,同樣內容(請求json)的消息,不會重複收到;時間間隔可通過duplicate_check_interval指定,默認1800秒。
返回示例:
{
"errcode" : 0,
"errmsg" : "ok",
"invaliduser" : "userid1|userid2", // 不區分大小寫,返回的列表都統一轉爲小寫
"invalidparty" : "partyid1|partyid2",
"invalidtag": "tagid1|tagid2"
}
如果部分接收人無權限或不存在,發送仍然執行,但會返回無效的部分(即invaliduser或invalidparty或invalidtag),常見的原因是接收人不在應用的可見範圍內。
如果全部接收人無權限或不存在,則本次調用返回失敗,errcode爲81013。
後臺開發
選擇第三方推送工具或者自己開發消息推送後臺
開發實現案例
1、微信企業號下的消息推送
2、微信企業號開發:主動發送消息