对接企业微信2:推送应用消息给用户

请求方式: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秒
  • 从2021年2月4日开始,企业关联添加的「小程序」应用,也可以发送文本、图片、视频、文件、图文等各种类型的消息了。
    调用建议:大部分企业应用在每小时的0分或30分触发推送消息,容易造成资源挤占,从而投递不够及时,建议尽量避开这两个时间点进行调用。

返回示例:

{
"errcode" : 0,
"errmsg" : "ok",
"invaliduser" : "userid1|userid2",
"invalidparty" : "partyid1|partyid2",
"invalidtag": "tagid1|tagid2",
"msgid": "xxxx",
"response_code": "xyzxyz"
}

如果部分接收人无权限或不存在,发送仍然执行,但会返回无效的部分(即invaliduser或invalidparty或invalidtag),常见的原因是接收人不在应用的可见范围内
如果全部接收人无权限或不存在,则本次调用返回失败,errcode为81013。
返回包中的userid,不区分大小写,统一转为小写

参数说明:

参数说明
errcode返回码
errmsg对返回码的文本描述内容
invaliduser不合法的userid,不区分大小写,统一转为小写
invalidparty不合法的partyid
invalidtag不合法的标签id
msgid消息id,用于撤回应用消息
response_code仅消息类型为“按钮交互型”,“投票选择型”和“多项选择型”的模板卡片消息返回,应用可使用response_code调用更新模版卡片消息接口,24小时内有效,且只能使用一次




消息类型




文本消息

请求示例:



{
"touser" : "UserID1|UserID2|UserID3",
"toparty" : "PartyID1|PartyID2",
"totag" : "TagID1 | TagID2",
"msgtype" : "text",
"agentid" : 1,
"text" : {
"content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。"
},
"safe":0,
"enable_id_trans": 0,
"enable_duplicate_check": 0,
"duplicate_check_interval": 1800
}

参数说明:

参数是否必须说明
touser指定接收消息的成员,成员ID列表(多个接收者用‘|’分隔,最多支持1000个)。
特殊情况:指定为”@all”,则向该企业应用的全部成员发送
toparty指定接收消息的部门,部门ID列表,多个接收者用‘|’分隔,最多支持100个。
当touser为”@all”时忽略本参数
totag指定接收消息的标签,标签ID列表,多个接收者用‘|’分隔,最多支持100个。
当touser为”@all”时忽略本参数
msgtype消息类型,此时固定为:text
agentid企业应用的id,整型。企业内部开发,可在应用的设置页面查看;第三方服务商,可通过接口 获取企业授权信息 获取该参数值
content消息内容,最长不超过2048个字节,超过将截断(支持id转译)
safe表示是否是保密消息,0表示可对外分享,1表示不能分享且内容显示水印,默认为0
enable_id_trans表示是否开启id转译,0表示否,1表示是,默认0。仅第三方应用需要用到,企业自建应用可以忽略。
enable_duplicate_check表示是否开启重复消息检查,0表示否,1表示是,默认0
duplicate_check_interval表示是否重复消息检查的时间间隔,默认1800s,最大不超过4小时

touser、toparty、totag不能同时为空,后面不再强调。

文本消息展现:

特殊说明:
其中text参数的content字段可以支持换行、以及A标签,即可打开自定义的网页(可参考以上示例代码)(注意:换行符请用转义过的\n)




图片消息

请求示例:



{
"touser" : "UserID1|UserID2|UserID3",
"toparty" : "PartyID1|PartyID2",
"totag" : "TagID1 | TagID2",
"msgtype" : "image",
"agentid" : 1,
"image" : {
"media_id" : "MEDIA_ID"
},
"safe":0,
"enable_duplicate_check": 0,
"duplicate_check_interval": 1800
}

请求参数:

参数是否必须说明
touser成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送
toparty部门ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数
totag标签ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数
msgtype消息类型,此时固定为:image
agentid企业应用的id,整型。企业内部开发,可在应用的设置页面查看;第三方服务商,可通过接口 获取企业授权信息 获取该参数值
media_id图片媒体文件id,可以调用上传临时素材接口获取
safe表示是否是保密消息,0表示可对外分享,1表示不能分享且内容显示水印,默认为0
enable_duplicate_check表示是否开启重复消息检查,0表示否,1表示是,默认0
duplicate_check_interval表示是否重复消息检查的时间间隔,默认1800s,最大不超过4小时

 更多参考官方文档:发送应用消息 - 企业微信API

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现boot项目对接企业微信根据用户权限推送表格,需要进行以下步骤: 1. 首先,需要在企业微信中创建应用,并获取应用的CorpID和Secret。 2. 在boot项目中引入企业微信SDK,可以使用jwework或者wework-java-corp-sdk等。 3. 在项目中实现企业微信授权登录,获取用户信息,以及获取用户企业微信中的权限信息。 4. 根据用户权限信息,判断是否可以推送表格。如果可以,使用企业微信API向用户推送表格消息。 5. 在推送消息时,可以使用企业微信API中的消息模板,将表格数据填充到模板中,从而实现推送表格消息的功能。 以下是一个简单的示例代码: ```java // 获取企业微信API客户端 WxCpService wxCpService = new WxCpServiceImpl(); wxCpService.setWxCpConfigStorage(new WxCpInMemoryConfigStorage() {{ setCorpId("your_corp_id");// 企业ID setCorpSecret("your_corp_secret");// 应用的Secret setAgentId(1000002);// 应用的ID }}); // 获取当前用户的权限信息 List<String> permissions = getCurrentUserPermissions(); // 判断是否可以推送表格 if (permissions.contains("push_table")) { // 构造表格数据 List<String[]> tableData = new ArrayList<>(); tableData.add(new String[]{"姓名", "年龄", "性别"}); tableData.add(new String[]{"张三", "22", "男"}); tableData.add(new String[]{"李四", "25", "女"}); // 构造消息模板 WxCpMessage message = WxCpMessage .TEXTCARD() .agentId(1000002) .toUser("user_id") .title("表格数据") .description("以下是表格数据") .url("http://your_domain/table.html") .build(); message.setTemplateCard(WxCpMessage.TemplateCard .builder() .title(new WxCpMessage.TemplateCard.BaseInfo("表格数据", null)) .description(new WxCpMessage.TemplateCard.BaseInfo("以下是表格数据", null)) .url("http://your_domain/table.html") .table(new WxCpMessage.TemplateCard.TableInfo( new WxCpMessage.TemplateCard.TableInfo.Header(new String[]{"姓名", "年龄", "性别"}), tableData)) .build()); // 发送消息 wxCpService.messageSend(message); } ``` 以上代码中,首先通过企业微信SDK获取API客户端,并设置企业ID、应用的Secret和应用的ID。然后获取当前用户的权限信息,判断是否可以推送表格。 如果可以推送表格,就构造表格数据和消息模板,并调用API客户端的messageSend方法向用户推送消息。其中,消息模板中的表格数据通过table方法设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值