概述
企业微信提供了消息推送的功能,我需要的是发送应用消息,主要做的功能就是,提醒用户未打卡提醒,缺卡提醒等需求,先看看官方文档
企业微信开放了消息发送接口,企业可以使用这些接口让自定义应用与企业微信后台或用户间进行双向通信。
请大家一定要先仔细看看官方文档api:
接口概括
消息接口总体上分为主动发送单聊消息、接收单聊消息以及发送消息到群三部分
- 主动发送应用消息:企业后台调用接口通过应用向指定成员发送单聊消息
- 接收消息:企业后台接收来自成员的消息或事件
- 要使用接收消息,需要在应用中设置开发者的回调服务器配置。
- 接收消息分为两种:1. 成员在应用客户端里发送的消息;2. 某种条件下触发的事件消息。
- 开发者后台在接收消息后,可以在响应的返回包里带上回复消息,企业微信会将这条消息推送给成员。这就是“被动回复消息”。
- 发送消息到群聊会话:企业后台调用接口创建群聊后,可通过应用推送消息到群内。(暂不支持接收群聊消息)
发送应用消息
我们找到发送应用消息的接口,他支持很多消息类型,我们这里只需要用到发送文本消息就足够了,所以我们看看文本消息的消息体就行了,他们的请求接口是一样,只是请求体不同而已。
**请求方式:**POST(HTTPS)
请求地址: https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
可以看到,在请求这个接口的时候,还需要用到 ACCESS_TOKEN ,获取ACCESS_TOKEN的接口地址
https://work.weixin.qq.com/api/doc/90000/90135/91039
这里需要注意的是 这里生成的ACCESS_TOKEN 必须要是 agentid 企业应用的id 的token,不然会报错,说token不属于当前应用,一定要注意
body参数:
{
"touser" : "UserID1|UserID2|UserID3",
"msgtype" : "text",
"agentid" : 1,
"text" : {
"content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。"
}
}
发送给谁,什么类型,应用id,发送的参数,知道这些后,我们就通过代码来实现发送。
代码实现:
pom依赖:
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.8</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.15</version>
</dependency>
gson 做json序列化的,hutool 发送http 请求获取一些工具的jar。
/**
* userId 发送的用户id,其实就是企业微信的用户邮箱
* content 发送的消息内容
*/
@Override
public String wxSend(String userId, String content) {
Gson gson = new Gson();
Map<String, Object> map = new HashMap<>(5);
map.put("touser", userId);
map.put("totag", "测试发消息");
map.put("msgtype", "text");
map.put("agentid", "3010011");
Map<String, Object> contentMap = new HashMap<>(1);
contentMap.put("content", content);
map.put("text", contentMap);
String url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + getToken("dk");
String data = HttpUtil.post(url, gson.toJson(map));
return data;
}
控制层:
@GetMapping("wxSend")
String wxSend(String userId){
String content = "亲爱的"+userId+",你今天忘记打卡了,请及时发起补打卡流程。";
String contentData = "亲爱的"+userId+",你今天忘记打卡了,请及时发起补打卡流程。你本月的漏打卡次数已达3次,若再漏打卡,将视为迟到处理,请注意。";
return wxService.wxSend(userId, contentData);
}
请求接口,那么就能看到应用发送消息了。
实例代码在github上面需要的请自行拉取:spring-boot-integrate 然后后续会集成更多的模块进去,需要请点个star。后续会集成更多的接口实现,有需要的请保存。
如果这篇文章,有帮助到大家的,请给作者一个一键三连,谢谢