关于消息推送,相信大家都或多或少的接触过。

今日小胡在这里给大家分享下关于如何企业微信应用如何将消息推送到企业微信。

官方开发文档链接如下企业微信开发文档

首先我们要知道的是,企业微信应用推送消息,只有自建应用以及基础应用是支持的,集成的第三方应
用是不支持消息推送的,因为这里牵扯到获取密钥,获取token的问题。

一:管理员身份创建应用
以管理员身份登录企业微信控制后台,在这里我们可以自建应用(非集成第三方程序),值得注意的是,企业微信官方对2022-09年之前创建的应用,不需要配置IP白名单就可以进行消息推送,但是对于2022-09年之后创建的应用需要配置IP白名单(如何配置稍后再说)。

二: 获取应用的TOKEN
创建应用之后,我们打开应用详情,可以获取到AgentId(应用ID),Secret(密钥)。同时也要获取到我们的企业微信ID。

获取token 方式需要两个参数:企业微信ID和每个应用的密钥Secret。

由此推断,企业微信的token是基于应用而不是企业微信本身,就是说每个应用都会有一个对应的token,而且不同。有效期两个小时(官方推荐不要频繁获取token)。

三:推送消息类型
推送消息类型支持图片,音频,文本,卡片等到。每个类型都有对应的API。在这里我就说一下文本类型消息,直接上代码:这里是封装文本类型的消息体

/**
     * 文本通知
     * @param touser  企业微信用户id:可批量--格式: A|B|C|D 
     * @param agent_id  应用id,整型
     * @param contentValue 报文内容
     * @return
     */
    public static String WxTextData(String touser, int agent_id,  String contentValue) {
        WeChatData weChatData=new WeChatData();
        weChatData.setTouser(touser);
        weChatData.setAgentid(agent_id);
        weChatData.setMsgtype("text");
        Map<Object, Object> textParam = new HashMap<Object, Object>();
        textParam.put("content", contentValue);
        weChatData.setText(textParam);
        String message=gson.toJson(weChatData);
        logger.info(message);
        return message;
    }

好,拿到消息体了,接下来我们就可以进行消息推送了,消息推送需要参数如下:
推送的请求api,应用ID,token

java 发送消息到企业微信部门组 java企业微信消息推送_企业微信

至此我们消息推送的业务算是完成了。
然后我们要注意的是应用创建时间是否为2022年9月之前,若是,则可以直接推送,若不是,则需要配置白名单。

值得注意的是:配置白名单前需要配置一个和企业微信主题一致的域名。
对于个人开发者或者小型企业非常不友好,恶心的一笔。

如下

java 发送消息到企业微信部门组 java企业微信消息推送_微信_02

输入域名后,会有一个txt文件,将这个txt文件下载下来,放置在你输入的域名所在的服务器下(可以通过域名访问txt,我们域名是配置nginx,所以放在了nginx的html文件夹里)。

能成功访问txt后,就证明配置成功了,这个时候你就可以配置白名单了,白名单不是你电脑的ip,而是电脑对应的公共ip地址。如下

java 发送消息到企业微信部门组 java企业微信消息推送_java 发送消息到企业微信部门组_03

效果如下

java 发送消息到企业微信部门组 java企业微信消息推送_微信_04

有需要卡片模板的话,可以参考开发文档推送不同类型消息

好了,本次的分享就到此结束了,有疑惑的地方大家可以互相交流。