背景
最近在做一个代码仓库分支创建合规性检查的过程中,需要将不符合合规性的创建信息实时提醒到创建人,除了邮件,内部企业微信成为了第一首选。
优势
1.实时提醒项目参与人员项目信息的更新情况
2.便于查看
配置
方式一:群机器人
1.创建企业微信群
2.点击群标签
3.添加群机器人,并填写机器人信息

输入机器人名称

复制Webhook地址,此处webhook地址将用来用于程序集成企业微信的参数

方式二:企业微信应用
1.CorpId
这个是每个企业独有的企业ID(图为盗图)

2.agentId 和 secret
agentId 相当于是应用ID,secret就理解成key
可以自己创建个应用,然后绑定到相关部门或者具体到人(图为盗图)

java集成企业微信
企业微信应用基本信息:
wechat.baseUrl=https://qyapi.weixin.qq.com/cgi-bin
wechat.corpid=wwfg41bddf185ad714851
wechat.corpsecret=dgg6DsTP3QmEM-Y06SqrZghB06OAk6WfKhfumEGCY16ew1
wechat.agentid=1000073
public static final String GET_TOKEN = "/gettoken";
public static final String SEND_MSG = "/message/send";
private String getSendMsgFullUrl(String token) {
Assert.notNull(token, "token is null,Authentication failed." );
return baseUrl + WechatMethodConstant.SEND_MSG + "?access_token=" + token;
}
/**
* 获取登陆token
* @return token
*/
public String getAccessToken(){
// 优先从redis缓存中获取, 获取不到在调用api获取
String token = (String) redisClient.get("wechatAccessToken");
if(StringUtils.isNotEmpty(token)){
return token;
}
RestTemplate http = new RestTemplate();
String urlToken = baseUrl + WechatMethodConstant.GET_TOKEN + "?corpid=" + corpid + "&corpsecret=" + corpsecret;
log.info("getAccessToken Url:{}", urlToken);
ResponseEntity<TokenResult> forEntity = http.getForEntity(urlToken, TokenResult.class);
if(ObjectUtils.isNotEmpty(forEntity)) {
TokenResult body = forEntity.getBody();
if (ObjectUtils.isNotEmpty(body)) {
String accessToken = body.getAccess_token();
if (StringUtils.isNotEmpty(accessToken)) {
// 加入缓存
redisClient.set("wechatAccessToken", accessToken, ObjectUtils.isNotEmpty(body.getExpires_in()) ? body.getExpires_in() : 7000L);
}
return accessToken;
}
}
return null;
}
public MsgResult sendTextTypeMsg(String token, String toUserId, String content){
String msgUrl = getSendMsgFullUrl(token);
RestTemplate http = new RestTemplate();
MsgRequestDto requestData = new MsgRequestDto();
requestData.setAgentid(agentId);
requestData.setTouser(toUserId);
requestData.setMsgtype(WechatMsgTypeConstant.TEXT_MSG_TYPE);
Map<String, String> text = new HashMap<>();
text.put(WechatMsgTypeConstant.TEXT_KEY, content);
requestData.setText(text);
ResponseEntity<MsgResult> postForEntity = http.postForEntity(msgUrl, requestData, MsgResult.class);
if(ObjectUtils.isNotEmpty(postForEntity) && ObjectUtils.isNotEmpty(postForEntity.getBody())){
return postForEntity.getBody();
}
return null;
}
{
"touser": "用户id_1|用户id_2",
"msgtype": "text",
"agentid": agent id,
"text": {
"content": "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。"
},
"safe": 0,
"enable_id_trans": 0,
"enable_duplicate_check": 0
}
输出结果:
你的快递已到,请携带工卡前往邮件中心领取。
出发前可查看邮件中心视频实况,聪明避开排队
说明:
如果是公司内部网络,需要申请it增加网络权限,创建企业微信应用,然后提供不可少的配置西信息:
- corpid(企业ID):wwfg41bddf185ad714851
- corpsecret:dgg6DsTP3QmEM-Y06SqrZghB06OAk6WfKhfumEGCY16ew1
- agent id:1000073
curl -s -G "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=wwfg41bddf185ad714851&corpsecret=dgg6DsTP3QmEM-Y06SqrZghB06OAk6WfKhfumEGCY16ew1"
curl -H "Content-Type:application/json" -X POST -d "{\"touser\": \"2253|2065\",\"msgtype\": \"text\",\"agentid\": 1000073,\"text\": {\"content\": \"你的快递已到,请携带工卡前往邮件中心领取。\\n出发前可查看<a href=\\\"http://work.weixin.qq.com\\\">邮件中心视频实况</a>,聪明避开排队。\"},\"safe\": 0,\"enable_id_trans\": 0,\"enable_duplicate_check\": 0}" https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=NxN_8sN6yGjDX032hvEfavCXtwAJrHmzWsHg56ggf_--1oc8Gl4945EqjdUMLfrx5UHEdnS-ljf73lfsehsxzLZKJUgqFXmfCuYcFoo2p-JA_76w1tpWlluQeLVrW2OWeICyrrqecBFaWx6GHe-rcR0sjKiV92n6_fpzjBsiwlbSr6-iEXG9yCM7r-nzYRxcuOAWbTdsdfsfgJh_5T55dHOJg
参考文档:发送应用消息 - 接口文档 - 企业微信开发者中心
https://developer.work.weixin.qq.com/document/path/90236
本文讲述了如何通过企业微信实现对代码仓库分支创建合规性检查的实时提醒,介绍了使用群机器人和企业微信应用两种方式,以及Java代码示例,包括获取access_token和发送文本消息的过程。
4865

被折叠的 条评论
为什么被折叠?



