微信企业消息推送方案

14 篇文章 0 订阅


在软件程序实际应用中,在软件中推送可能还不能满足实际需求,需要把消息推送到用户手机,目前比较好的方式,可能是微信消息推送。因此做一个记录

企业微信/企业号注册

微信消息推送需要配合 企业微信号 做消息推送
在这里插入图片描述
注册连接

也可以使用微信公众号实现消息推送。

微信认证

不管什么方式都需要企业认证,认证方式如下:
需要支付300每次的认证费用
公众号企业认证流程

消息推送

服务号

  1. text消息
  2. image消息
  3. voice消息
  4. video消息
  5. file消息
  6. news消息
  7. 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、微信企业号开发:主动发送消息

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以!以下是使用C#编写企业微信机器人消息推送的示例代码: ```csharp using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { string webhookUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_WEBHOOK_KEY"; string message = "这是一条来自企业微信机器人的消息推送!"; await SendWebhookMessage(webhookUrl, message); } static async Task SendWebhookMessage(string webhookUrl, string message) { try { using (HttpClient client = new HttpClient()) { var content = new StringContent($"{{\"msgtype\":\"text\",\"text\":{{\"content\":\"{message}\"}}}}", Encoding.UTF8, "application/json"); HttpResponseMessage response = await client.PostAsync(webhookUrl, content); if (response.IsSuccessStatusCode) { Console.WriteLine("消息推送成功!"); } else { Console.WriteLine("消息推送失败!"); } } } catch (Exception ex) { Console.WriteLine("发生异常:" + ex.Message); } } } ``` 请将`YOUR_WEBHOOK_KEY`替换为您在企业微信中创建机器人时生成的Webhook地址的密钥部分。然后,您可以使用`message`变量来设置要发送的消息内容。 这段代码使用`HttpClient`类来发送HTTP POST请求到企业微信机器人的Webhook地址,并将消息以JSON格式进行封装。如果消息推送成功,将输出"消息推送成功!";否则,将输出"消息推送失败!"。注意,您需要确保您的程序可以访问互联网以发送请求。 希望这可以帮助到您!如果您有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值