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

企业微信发送消息api_微信公众号发消息给用户最近,接手了告警的一个需求。详细需求:监控一个应用的某些指标超标了,要提醒用户,通过企业微信给指定用户发送告警信息;今日自己实现了一下,总结出来分享给大家。注意:代码亲自编写,已自测通过文章目录前言一、编码?1.依赖2.SendWX.java3.WeChatMsgSend.java4.WeChatData.java5.WeChatUrlData.java二、参数1.构建自己的企业微信2.参数详细获取总结前言通过企业微信给指定用户发送告警信息一、编码?1.依赖<dependencie

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

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


前言

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


一、编码?

1.依赖

<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

/** * 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

/** * 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

/** * 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

/** * 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:
在这里插入图片描述
对应代码的:
在这里插入图片描述
最后,打开通讯录:
在这里插入图片描述
对应代码:
在这里插入图片描述


总结

快去试一试吧~~

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 大话设计模式C++实现-第22章-桥接模式

    大话设计模式C++实现-第22章-桥接模式

  • 在图像的傅里叶变换中,什么是基本图像_傅立叶变换

    在图像的傅里叶变换中,什么是基本图像_傅立叶变换从现代数学的眼光来看,傅里叶变换是一种特殊的积分变换。它能将满足一定条件的某个函数表示成正弦基函数的线性组合或者积分。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。 傅立叶变换属于调和分析的内容。”分析”二字,可以解释为深入的研究。从字面上来看,”分析”二字,实际就是”条分缕析”而已。它通过对函数的”条分缕析”来达到对复杂函数的深入理解和研究。从哲学上看

  • PCIe扫盲——Flow Control基础(一)

    PCIe扫盲——Flow Control基础(一)FlowControl即流量控制,这一概念起源于网络通信中。PCIe总线采用FlowControl的目的是,保证发送端的PCIe设备永远不会发送接收端的PCIe设备不能接收的TLP(事务层包)。也就是说,发送端在发送前可以通过FlowControl机制知道接收端能否接收即将发送的TLP。在PCI总线中,并没有FlowControl这样的机制,因此发送端并不知道当前时刻,接收端能否接收对应的TLP。因此,发送端只能先尝试发送,期间可能会被插入多个等待周期(接收设备尚未就绪等原因),甚至是重发(Re

  • 两个向量的点乘和叉乘怎么算_数学基础 —— 向量运算:点乘和叉乘

    两个向量的点乘和叉乘怎么算_数学基础 —— 向量运算:点乘和叉乘向量的点乘:a*b公式:a*b=|a|*|b|*cosθ点乘又叫向量的内积、数量积,是一个向量和它在另一个向量上的投影的长度的乘积;是标量。点乘反映着两个向量的“相似度”,两个向量越“相似”,它们的点乘越大。向量的叉乘:a∧ba∧b=|a|*|b|*sinθ向量积被定义为:模长:(在这里θ表示两向量之间的夹角(共起点的前提下)(0°≤θ≤180°),…

  • 如何关闭开启硬件加速[通俗易懂]

    如何关闭开启硬件加速       硬件加速是windwos一个图像显示优化功能。它会使计算机图像显示更快速,但在某些游戏、软件里面如果开启硬件加速,会导致黑屏或影像无法正常显示问题,这个时候就应该关闭这个功能了。Windows7方法/步骤  首先是开启电脑,并返回到桌面(CTRL+D)  在桌面空白处点击击鼠标右键→选择属性→点击设置选项卡→在点击高级命令按钮→在单…

  • webservice体系结构中包括_致命框架1第六关

    webservice体系结构中包括_致命框架1第六关   Web服务可以用来解决跨网络应用集合问题的开发模式,目的是保证不同平台的应用服务可以相互操作 JAX-WS实现WebServicepackagecom.service;importjavax.jws.WebService;/** WebService准备发布的接口* @WebService注解说明该类为Web服务发布类*/@WebServi…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号