企业微信发送消息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:
在这里插入图片描述
对应代码的:
在这里插入图片描述
最后,打开通讯录:
在这里插入图片描述
对应代码:
在这里插入图片描述


总结

快去试一试吧~~

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • rk3399调试ov2659(camera模块@dvp接口)–移植过程

    rk3399调试ov2659(camera模块@dvp接口)–移植过程刚接手某款硬件,嵌入式开发者往往对硬件熟悉,而对实现硬件行为的软件及其软件框架不太熟。所以,我们一般从硬件拓扑图入手,分析数据流和硬件动作过程来熟悉或编写软件框架,并向该框架填充一些逻辑/业务代码来实现最终的驱动代码。

    2022年4月30日
    254
  • 解决VMware 15虚拟机桥接模式无法上网 问题

    解决VMware 15虚拟机桥接模式无法上网 问题详细描述解决VMware15虚拟机桥接模式无法上网问题步骤1:查看本地以太网属性是否安装VMwareBridgeProtocol控制面板>>网络和Internet>>网络连接>>以太网右键属性>>查看是否有安装VMwareBridgeProtocol共享网络给虚拟机(有些电脑不用)步骤2:查看VMware虚拟网络编辑器的VMne…

    2022年6月6日
    111
  • SQL数据库查询语句

    SQL数据库查询语句一、Select语句:select语句除了可以查看数据库中的表格和视图的信息外,还可以查看SQLServer的系统信息、复制、创建数据表。其查询功能强大,是SQL语言的灵魂语句,也是SQL中使用频率最高的语句。基本select语句:一个基本的select语句可以分解成三个部分:查找什么数据(select)、从哪里查找(from)、查找的条件是什么(where)。selec

    2022年5月16日
    60
  • java是面向对象还是面向过程_Java教程分享Java面向对象与面向过程[通俗易懂]

    java是面向对象还是面向过程_Java教程分享Java面向对象与面向过程[通俗易懂]Java教程分享Java面向对象与面向过程,面向对象:是一种看待问题,解决问题的思维方式,着眼点在于找到一个能够帮助解决问题的实体,然后委托这个实体来解决问题面向过程:是一种看待问题,解决问题的思维方式,着眼点在于问题是怎样一步步的解决的,然后亲力亲为的去解决这个问题Java是一种面向对象的语言:​用Java这门语言,可以很容易的写出具有面向对象思维方式的代码用面向对象的编程语…

    2022年7月9日
    16
  • cuda编程基础(编程软件有哪些)

    CUDA(ComputeUnifiedDeviceArchitecture),是显卡厂商NVIDIA推出的运算平台。CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

    2022年4月18日
    48
  • springboot 与spring的区别_SpringBootVFS

    springboot 与spring的区别_SpringBootVFS一、概念1、SpringSpring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反转(IOC),和面向切面(AOP),简单的说就是一个分层的轻量级开源框架。2、SpringMVCSpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。SpringMVC是一种web层mvc框架,用于替代servlet(处理|响应请求,获取表单参数,表单校

    2022年8月20日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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