引言

原来系统中报警采用短信和邮件方式,短信采用阿里的短信,近期由于 一些原因,项目中想将报警信息发送到 企业微信中,由于之前小编玩zabbix的时候实现过这个需求,所以认为通过java应该比较简单, 下面分享接入代码,直接上干货。

一、创建应用

1)、登录企业微信后台管理页面,选择应用管理

2)、在最下面 创建应用

这里面可以控制那些人收到报警信息,其中质量的Secret 就是我们后面代码中的秘钥

3)获得企业id

在 管理后台-》我的企业 一栏的最下面可以找到企业ID

二、代码实现

添看到依赖

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.6</version>
</dependency>
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.5</version>
</dependency>

代码实现

1、实体类

package com.jack.common.utils;/*** @Description:* @author: zhenghao* @date: 2020/3/5 17:24
*/
public class IacsUrlDataVo {String corpid;String corpsecret;String Get_Token_Url;String SendMessage_Url;public String getCorpid() {return corpid;}public void setCorpid(String corpid) {this.corpid = corpid;}public String getCorpsecret() {return corpsecret;}public void setCorpsecret(String corpsecret) {this.corpsecret = corpsecret;}public void setGet_Token_Url(String corpid,String corpsecret) {this.Get_Token_Url ="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+corpid+"&corpsecret="+corpsecret;}public String getGet_Token_Url() {return Get_Token_Url;}public String getSendMessage_Url(){SendMessage_Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=";return SendMessage_Url;}
}
package com.jack.common.utils;/*** @Description:* @author: zhenghao* @date: 2020/3/5 17:24
*/
public class IacsWeChatDataVo {String touser;String msgtype;int agentid;Object text;//实际接收Map类型数据public Object getText() {return text;}public void setText(Object text) {this.text = text;}public String getMsgtype() {return msgtype;}public void setMsgtype(String msgtype) {this.msgtype = msgtype;}public int getAgentid() {return agentid;}public void setAgentid(int agentid) {this.agentid = agentid;}public String getTouser() {return touser;}public void setTouser(String touser) {this.touser = touser;}}

2、消息发送代码

package com.jack.common.utils;import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;/*** @Description: 企业微信发送代码* @author: zhenghao* @date: 2020/3/5 17:25
*/
public class SendWeChatUtils {private CloseableHttpClient httpClient;private static HttpPost httpPost;//用于提交登陆数据private  static  HttpGet httpGet;//用于获得登录后的页面public static final String CONTENT_TYPE = "Content-Type";static  SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");private static Gson gson = new Gson();/*** 微信授权请求,GET类型,获取授权响应,用于其他方法截取token** @param Get_Token_Url* @return String 授权响应内容* @throws IOException*/public 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);} finally {response.close();}LoggerFactory.getLogger(getClass()).info(" resp:{}", resp);return resp;}/*** 获取toAuth(String Get_Token_Url)返回结果中键值对中access_token键的值** @param corpid 应用组织编号   corpsecret 应用秘钥*/public static String getToken(String corpid, String corpsecret) throws IOException {SendWeChatUtils sw = new SendWeChatUtils();IacsUrlDataVo uData = new IacsUrlDataVo();uData.setGet_Token_Url(corpid, corpsecret);String resp = sw.toAuth(uData.getGet_Token_Url());Map<String, Object> map = gson.fromJson(resp,new TypeToken<Map<String, Object>>() {}.getType());return map.get("access_token").toString();}/*** @param touser         发送消息接收者    ,msgtype消息类型(文本/图片等),* @param application_id 应用编号。* @return String* @Title:创建微信发送请求post数据*/public static String createpostdata(String touser, String msgtype,int application_id, String contentKey, String contentValue) {IacsWeChatDataVo wcd = new IacsWeChatDataVo();wcd.setTouser(touser);wcd.setAgentid(application_id);wcd.setMsgtype(msgtype);Map<Object, Object> content = new HashMap<Object, Object>();content.put(contentKey, contentValue + "\n--------\n" + df.format(new Date()));wcd.setText(content);return gson.toJson(wcd);}/*** @param charset 消息编码    ,contentType 消息体内容类型,* @param url     微信消息发送请求地址,data为post数据,token鉴权token* @return String* @Title 创建微信发送请求post实体*/public static 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(SendWeChatUtils.class).info("call [{}], param:{}, resp:{}", url, data, resp);return resp;}public static void sendMsg(String strContent){try {String token = getToken("企业id", "秘钥");String postdata = createpostdata("@all", "text", 1000011, "content",strContent);String resp = post("utf-8", "text", (new IacsUrlDataVo()).getSendMessage_Url(), postdata, token);
//            System.out.println("获取到的token======>" + token);
//            System.out.println("请求数据======>" + postdata);
//            System.out.println("发送微信的响应数据======>" + resp);} catch (Exception e) {e.printStackTrace();}}
}

上面代码中我们需要填写我们自己的企业id和秘钥;

3、业务调用

如需发送其他类型信息,附参考文档

腾讯企业微信官方文档:https://work.weixin.qq.com/api/doc#10167

JAVA实现接入企业微信报警相关推荐

  1. java微信报警,JAVA实现接入企业微信报警

    引言 原来系统中报警采用短信和邮件方式,短信采用阿里的短信,近期由于 一些原因,项目中想将报警信息发送到 企业微信中,由于之前小编玩zabbix的时候实现过这个需求,所以认为通过java应该比较简单, ...

  2. 如何将chatGpt接入企业微信

    1.准备工作 这次更新之后,国内服务器已没法直接访问openai的接口,需要自己买个国外的服务器. 一台海外服务器(服务器上安装Java8,操作系统选Ubuntu,如果用windows,要自己研究) ...

  3. 朋友圈产品文档_企业微信上线朋友圈等新功能,超250万企业接入企业微信

    12月23日,企业微信团队宣布在最新版本中升级群聊功能.开放客户朋友圈内测以及推出高效协同工具套装等重磅能力,进一步强化企业微信与微信生态互通能力. 腾讯微信事业群副总裁黄铁鸣介绍说,目前企业微信已经 ...

  4. zabbix4.0添加mysql报警_Zabbix 3.4.3实现企业微信报警

    Zabbix 3.4.3实现企业微信报警 [日期:2017-11-08] 来源:Linux社区  作者:wzlinux [字体:大 中 小] 一.企业微信注册 微信的报警方式可以让我们随时随地接收到信 ...

  5. Zabbix实现企业微信报警

    zabbix实现企业微信报警 1.下载安装手机版企业微信 2.注册账户,并创建一个企业,之后向企业中添加员工 3.找到我的企业->记录企业ID:ww1d1845f4b25a12fb 4.在企业下 ...

  6. AlertManager实现企业微信报警(十三)

    AlertManager实现企业微信报警 1.AlertManager对接企业微信 ALertManager支持的报警方式有邮件报警.钉钉报警.微信报警,本次将实现企业微信报警 2.企业微信配置 2. ...

  7. Prometheus配置企业微信报警

    Prometheus配置企业微信报警 更多技术博客,请关注微信公众号:运维之美 Prometheus被号称是下一代的监控,可以解决云上K8S集群的监控问题,搭配部署alertmanager,可以实现告 ...

  8. Android(安卓) 接入企业微信

    安卓接入企业微信 概述:博主是个三流代码搬运工,最近接手某个课题,需要做一个数据可视化的 app ,将一些信息直观的统计并且展示在地图上,所以也会用到高德地图 API 的接口,所以后续也会分享一下使用 ...

  9. chatgpt怎么接入企业微信使用

    要接入企业微信使用,需要在企业微信后台配置机器人. 首先,你需要登录企业微信管理端,在"应用与小程序" -> "添加应用" 中创建一个新应用,选择&quo ...

最新文章

  1. c3p0 数据库连接池
  2. 约瑟夫环(约瑟夫问题)求最后出列的人数
  3. python拿什么做可视化界面好-手把手教你用Python做个可视化的“剪刀石头布”小游戏...
  4. opencv 显示图片(直接)
  5. 字典删除多个键值对方法_Life is short,you need Python——Python序列(元组、字典、集合)...
  6. 开发者应如何看待iOS平台和Android平台
  7. linux rpm和deb的区别,rpm与deb的区别
  8. Mybatis-generator,自动生成文件.问题及解决
  9. QT与游戏手柄测试(数据与UI相连,ui界面作出反应)
  10. Python3学习笔记(1): print函数用法总结
  11. 【论文阅读】Low-Resource Knowledge-Grounded Dialogue Generatio
  12. 【设计模式03】 建造者模式
  13. 实战:搭建高效率生鲜B2B平台八大模块及技术要求
  14. word文档中插入公式的技巧--利用表格
  15. 为什么 128 KB 的魂斗罗可以实现那么长的剧情 ?
  16. 想学linux需要的电脑配置相关
  17. thinksns开源微博系统 V3上传漏洞
  18. Linux常用命令——rm命令
  19. git学习三——打发布标签(tag)
  20. 100天精通Python(进阶篇)——第40天:pymongo操作MongoDB数据库基础+代码实战

热门文章

  1. 《点燃我,温暖你》爱心代码复现
  2. krita源码提供了Tarball 和KDE Repository两套源码的区别
  3. centos 上搭建FC SAN
  4. 怎么把视频做成高清的GIF动态图?简单又快的方法
  5. 王家林人工智能AI第14课:通过K-Nearest Neighbors改进在Social Network上销售汽车推荐系统的精准性 老师微信13928463918
  6. 使用GUID分区表(GPT)的笔记本硬盘做移动硬盘,windowsXP系统不识别的问题
  7. C++统计一个文件的行数,大写字母数,小写字母数,数字数
  8. calcite mysql_jsqlparser和calcite和druid功能对比
  9. 【最终省二】全国大学生数学建模大赛-参赛经历
  10. Mac使用ssh密钥登录Linux