Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >企业微信发送消息api_微信公众号发消息给用户

企业微信发送消息api_微信公众号发消息给用户

作者头像
全栈程序员站长
发布于 2022-11-10 10:27:15
发布于 2022-11-10 10:27:15
2K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

最近,接手了告警的一个需求。详细需求:监控一个应用的某些指标超标了,要提醒用户,通过企业微信给指定用户发送告警信息;今日自己实现了一下,总结出来分享给大家。

注意:代码亲自编写,已自测通过

文章目录

前言

通过企业微信给指定用户发送告警信息

一、编码?

1.依赖

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.12.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>

2.SendWX.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/** * Created by Domi on 2020/10/21. */
public class SendWX { 

/** * 发送消息的执行方法 * @Param [alertTitle, alertMsg] * @return void **/
public static void send(String alertTitle, String alertMsg){ 

WeChatMsgSend swx = new WeChatMsgSend();
try { 

//token--企业微信获取
String token = swx.getToken("ww78696d5d79e37874", "TczeIo8tQQ8AqtKxAnw380ZNNDS_jaSgNtX2AMs-K7E");
//发送的数据
String postdata = swx.createpostdata("SongPengJu", "text", 1000002, "content", "告警信息:" + alertTitle + "\n内容:" + alertMsg);
//响应结果
String resp = swx.post("utf-8", WeChatMsgSend.CONTENT_TYPE, (new WeChatUrlData()).getSendMessage_Url(), postdata, token);
System.out.println("获取到的token======>" + token);
System.out.println("请求数据======>" + postdata);
System.out.println("发送微信的响应数据======>" + resp);
}catch (Exception e){ 

e.getStackTrace();
}
}
/** * 测试 * @Param [args] * @return void **/
public static void main(String[] args) { 

send("您的应用XXX","告警啦告警啦告警啦告警啦~");
}
}

3.WeChatMsgSend.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/** * Created by Domi on 2020/10/21. */
public class WeChatMsgSend { 

private CloseableHttpClient httpClient;
// 用于提交登录数据
private HttpPost httpPost;
// 用于获得登陆后页面
private HttpGet httpGet;
public static final String CONTENT_TYPE = "Content-Type";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static Gson gson = new Gson();
/** * 微信授权请求,GET类型,获取授权响应,用于其他方法截取token * @Param Get_Token_Url * @return String 授权响应内容 **/
protected String toAuth(String Get_Token_Url) throws IOException { 

httpClient = HttpClients.createDefault();
httpGet = new HttpGet(Get_Token_Url);
CloseableHttpResponse response = httpClient.execute(httpGet);
String resp = "";
try { 

HttpEntity entity = response.getEntity();
resp = EntityUtils.toString(entity, "utf-8");
EntityUtils.consume(entity);
} catch (Exception e) { 

e.getStackTrace();
} finally { 

response.close();
}
LoggerFactory.getLogger(getClass()).info(" resp:{}", resp);
return resp;
}
/** * corpid应用组织编号 corpsecret应用秘钥 * 获取toAuth(String Get_Token_Url)返回结果中键值对中access_token键的值 * @Param [corpid, corpsecret] * @return java.lang.String **/
public String getToken(String corpid, String corpsecret) throws IOException { 

WeChatMsgSend sw = new WeChatMsgSend();
WeChatUrlData uData = new WeChatUrlData();
uData.setGet_Token_Url(corpid, corpsecret);//拿到token连接
String resp = sw.toAuth(uData.getGet_Token_Url());//授权信息
System.out.println("resp=====:" + resp);//输出日志
try { 

Map<String, Object> map = gson.fromJson(resp, new TypeToken<Map<String, Object>>() { 

}.getType());
return map.get("access_token").toString();
} catch (Exception e) { 

e.getStackTrace();
return resp;
}
}
/** * 创建微信发送请求post数据 touser发送消息接收者 ,msgtype消息类型(文本/图片等), application_id应用编号。 * 本方法适用于text型微信消息,contentKey和contentValue只能组一对 * @Param [touser, msgtype, application_id, contentKey, contentValue] * @return java.lang.String **/
public String createpostdata(String touser, String msgtype, int application_id, String contentKey,
String contentValue) { 

WeChatData wcd = new WeChatData();
wcd.setTouser(touser);
wcd.setAgentid(application_id + "");
wcd.setMsgtype(msgtype);
Map<Object, Object> content = new HashMap<Object, Object>();
content.put(contentKey, contentValue);
wcd.setText(content);
return gson.toJson(wcd);
}
/** * @Title 创建微信发送请求post实体,charset消息编码 ,contentType消息体内容类型, * url微信消息发送请求地址,data为post数据,token鉴权token * @Param [charset, contentType, url, data, token] * @return java.lang.String **/
public String post(String charset, String contentType, String url, String data, String token) throws IOException { 

CloseableHttpClient httpclient = HttpClients.createDefault();
httpPost = new HttpPost(url + token);
httpPost.setHeader(CONTENT_TYPE, contentType);
httpPost.setEntity(new StringEntity(data, charset));
CloseableHttpResponse response = httpclient.execute(httpPost);
String resp;
try { 

HttpEntity entity = response.getEntity();
resp = EntityUtils.toString(entity, charset);
EntityUtils.consume(entity);
} finally { 

response.close();
}
LoggerFactory.getLogger(getClass()).info("call [{}], param:{}, resp:{}", url, data, resp);
return resp;
}
}

4.WeChatData.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/** * Created by Domi on 2020/10/21. */
@Data
public class WeChatData { 

private String touser;
private String msgtype;
private String agentid;
private Object text;
}

5.WeChatUrlData.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/** * Created by Domi on 2020/10/21. */
@Data
public class WeChatUrlData { 

private String corpid;
private String corpsecret;
private String Get_Token_Url;
private String SendMessage_Url;
public void setGet_Token_Url(String corpid,String corpsecret) { 

Get_Token_Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+corpid+"&corpsecret="+corpsecret;
}
public String getSendMessage_Url() { 

SendMessage_Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=";
return SendMessage_Url;
}
public void setSendMessage_Url(String sendMessage_Url) { 

SendMessage_Url = sendMessage_Url;
}
}

二、参数

1.构建自己的企业微信

开始创建企业微信官网https://work.weixin.qq.com/注册,并登陆。 点击‘应用管理’,自建里面创建应用:

2.参数详细获取

然后进入自己创建的应用,找到这两个信息:

对应代码的:

然后打开我的企业最下面有个企业ID:

对应代码的:

最后,打开通讯录:

对应代码:

总结

快去试一试吧~~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/188440.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月27日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
企业微信机器人定时发送信息
我的老板小花是一个到点就下班的人,有一天我的老板小花已经下班半小时了突然站起来说:“谁能在企业微信群众做一个定时发送消息的功能!!?”
全栈程序员站长
2022/07/04
1.6K0
企业微信机器人定时发送信息
Java企业微信开发_04_消息推送之发送消息(主动)
(1)流程不同:发送消息是第三方服务器主动通知微信服务器向用户发消息。而被动回复消息是 用户发送消息之后,微信服务器将消息传递给 第三方服务器,第三方服务器接收到消息后,再对消息做出相应的回复消息。
shirayner
2018/08/10
6.2K1
python发送微信及企业微信消息
直接使用第三方库 itchat,其文档中有详细使用方式; https://itchat.readthedocs.io/zh/latest/
用户1558882
2019/06/21
10.4K0
python发送微信及企业微信消息
调用企业微信API发送文本,图片,文件消息[通俗易懂]
(1) touser–>str,接收消息者的标识(已在企业微信的通讯录中添加,添加后微信后台会自动分配标识),多个用户使用 “|” 隔开(如”zhdb|zhj|wqq”),所有人(“@all”); (2) corp_id–>str,企业ID,申请企业微信时获得; (3) secret, agent_id–>str, 创建企业应用时获得.
全栈程序员站长
2022/11/09
3.8K0
微信一键登录功能的实现
最近在学习微信支付和扫码登录这块功能开发,了解到现在很多网站上都会有一些第三方登录的入口,比如:QQ、微信、微博等,这些用起来很方便快捷,直接通过扫码即可完成一键登录网站,从而省去了很多注册信息的填写,也就不需要牢记繁多的用户名和密码了。也间接避免了个人信息的暴露。非常之方便!本次,在闲暇之余记录一下微信扫码登录功能的实现教程。
AI码真香
2022/09/13
5.5K0
微信一键登录功能的实现
zabbix报警微信接口最新版[python]
本脚本初始版本来自网上,作者不详,有知道可以联系我,让我等认识下 微信中查看代码可能有些错乱,可以移步 https://github.com/zhuima/wechat_for_zabbix/blob/master/zabbix_alert.py
追马
2020/07/02
5200
Zabbix 随笔:企业微信小程序告警篇
本文利用企业微信的方式告警。不过该方式有一个比较重要的前提,Zabbix Server 需要有访问外网的能力,接收端也需要有访问互联网的能力。
IT小白Kasar
2022/02/16
4.6K2
Zabbix 随笔:企业微信小程序告警篇
java签到百度贴吧
获取百度贴吧的BDUSS 在电脑端登录百度贴吧,按F12进入开发者控制台,点击Application 找到BDUSS,记录当中的值 申请Server酱中的Key并且绑定微信 代码如下 <?xml ve
jaychou
2022/12/26
1.8K0
微信公众号开发-素材/消息管理接口
本文是 微信公众号开发者模式介绍及接入 的后续,如没看过前文的话,可能看本文会有些懵逼。本文主要介绍微信公众平台的素材、消息管理接口的开发。由于个人的订阅号是没有大多数接口的权限的,所以我们需要使用微信官方提供的测试号来进行开发。测试号的申请可参考下文:
端碗吹水
2020/09/23
2.7K0
微信公众号开发-素材/消息管理接口
实战技巧:Python爬取OEM 12C上的告警信息并推送至微信企业号
作者 | 徐美兰 ,邮政软件开发工程师,广东、湖南邮政金融数据中心任职多年,擅长Oracle数据库性能诊断与调优,对基于Python的数据分析与挖掘开发具有浓厚兴趣。
数据和云
2018/07/27
7460
实战技巧:Python爬取OEM 12C上的告警信息并推送至微信企业号
微信发送模板消息
由于微信自 2023 年 9 月 20 日起,下发统一消息接口将被收回,无法下发小程序模板消息与公众号模板消息。
默存
2023/11/05
1.1K0
微信发送模板消息
企业微信推送-云Api监测轻量应用服务器流量使用情况
腾讯云轻量无忧计划 新老用户同享优惠 低至15元/月起 终身续费同价 更赠送一年顶级域名,并享长期续费优惠
小宇-xiaoyu
2021/12/02
1.3K0
如何使用Java进行网络爬虫
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
用户6297767
2023/11/21
5280
如何使用Java进行网络爬虫
从零玩转第三方登录之QQ登录
在真正开始对接之前,我们先来聊一聊后台的方案设计。既然是对接第三方登录,那就免不了如何将用户信息保存。首先需要明确一点的是,用户在第三方登录成功之后,
杨不易呀
2022/01/18
2.2K0
从零玩转第三方登录之QQ登录
微信公众号开发系统入门教程(公众号注册、开发环境搭建、access_token管理、Demo实现、natapp外网穿透)
微信公众号分为服务号、订阅号、企业号,订阅号可以个人申请,服务号和企业号要有企业资质才可以。
全栈程序员站长
2022/09/06
3.1K0
微信公众号开发系统入门教程(公众号注册、开发环境搭建、access_token管理、Demo实现、natapp外网穿透)
微信公众号消息接入(普通消息+模板消息)
  1、“硅谷课堂”公众号实现根据关键字搜索相关课程,如:输入“java”,可返回java相关的一个课程;
别团等shy哥发育
2023/02/25
3.8K0
微信公众号消息接入(普通消息+模板消息)
java版微信公众号开发(二):配置token
设置AppId以及APPSecret,并填写IP白名单(在线ip查询:http://www.ip138.com/)。
全栈程序员站长
2022/06/29
1.1K0
java版微信公众号开发(二):配置token
快看,如何用 Python 发送告警通知到微信?
短信和电话,通常是收费的(若你有不收费的,可以评论分享一下),而邮件又不是那么及时,因此最后我选择微信通知。
陈晨135
2021/12/23
9420
快看,如何用 Python 发送告警通知到微信?
解析微信公众号回调xml
引入依赖 <!-- https://mvnrepository.com/artifact/dom4j/dom4j --> <dependency> <groupId>dom4j
用户5899361
2020/12/07
1.4K0
公众号开发:获取用户消息和回复消息
最近在看微信公众号的开发文档,觉得很有意思,可以自定义开发一些功能,比如有人关注了公众号之后,你可以做出稍微复杂点的回复(简单的回复在公众号后台配置就好啦);比如关注者发送了「学习」消息,你可以给他推送一些文章,发送「天气」的消息,你可以回复当前的天气状况;还可以进行素材的管理,用户的管理等等。
Java技术编程
2020/06/10
6K0
公众号开发:获取用户消息和回复消息
推荐阅读
相关推荐
企业微信机器人定时发送信息
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验