【Java】企业微信群机器人发送消息(文字、图片、MarkDown、文件消息) 您所在的位置:网站首页 机器人招聘信息模板图片 【Java】企业微信群机器人发送消息(文字、图片、MarkDown、文件消息)

【Java】企业微信群机器人发送消息(文字、图片、MarkDown、文件消息)

2024-07-17 22:45| 来源: 网络整理| 查看: 265

Java调用企业微信群机器人发送消息

2022/4/22更新:新增可发送文件消息。

发送文件消息需要先将文件上传到企业微信的临时素材,url为https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?type=file&key=**********,这个key就是群机器人Webhook地址的key参数,在代码里我已经处理好了,只要有Webhook地址就行。获取到media_id,再拿media_id和文件一起就可以调用群机器人的发送接口了。

2021/12/3 周五

主要参考 企业微信接口文档(但这里用的不是文档里的API) 和 企业微信机器人自动发送群消息 提供的方法,

将企业微信群机器人发送 文字、图片、MarkDown、文件消息 封装成了一个工具类。

用于自建的群,即不是使用企业微信api创建的群,不需要群id; 主要使用 okhttp3 调用机器人api和上传文件到临时素材api; 有含代理的构造方法和不含代理的构造方法,可根据需要选择调用; 参数使用的是JSONObject,防止在用字符串拼接参数时出现各种特殊字符转义问题; 发送图片大小不超过2M(企业微信的规定)。

使用步骤:

1. 创建群机器人

在企业微信已经建好的群中,添加群机器人(怎么添加可以参考:企业微信机器人发送消息),获取群机器人的Webhook地址。

需注意:

(1)因为不是用企业微信api创建的群,没有群id,无法指定群机器人只发送到某一个群,所以建议该机器人不要发布到公司或者添加到其他群。

(2)还需注意群机器人Webhook地址的保密性,因为任何人拿到你的地址,就可以朝你的群里发消息了。

关于Webhook:

Webhook是一个 API 概念,简单来说, 就是一个接收 HTTP POST(或GET,PUT,DELETE)的URL。

比如说我可以直接在postman测试工具里,带上需要的参数,向群机器人的Webhook地址发送请求,企业微信对应的群里就能收到这个机器人发送的消息。 用postman请求群机器人发送消息

2. 将工具类放到项目中,需要添加依赖

将工具类放到项目中,代码在最后。

需要在项目pom.xml文件中添加okhttp3和图片操作的依赖:

com.squareup.okhttp3 okhttp 3.14.9 commons-codec commons-codec 1.10

(PS:如果图片过大,可能导致base64编码结果过长超过String的最大长度,导致图片发送失败。另外,企业微信也有规定图片不能超过2M.)

3. 调用

(1)直接 new 一个WeChatBotUtils,带上群机器人Webhook地址和代理服务器相关配置:

WeChatBotUtils robot = new WeChatBotUtils(url, hostname, port);

或者从配置中获取代理信息,就可以用第二个构造方法:

WeChatBotUtils robot = new WeChatBotUtils(url, true);

(如果不需要使用代理,改为false就可以了)

IDEA将代理信息配置在启动参数的方法如下图: IDEA配置代理 (2)带上对应消息内容参数,调用sendTextMsg(String msg)、sendImgMsg(String path)、sendMarKDownMsg(String msg)、sendFileMsg(String path)方法,即可发送请求:

robot.sendTextMsg(msg); 4. 返回参数

除了调用群机器人正常发送消息,还可能会有一些请求报错,比如图片大小无效、md5值不匹配等等,具体原因可以查看 企业微信全局错误码。

5. 代码

0积分下载资源:Java企业微信群机器人发送消息,可以直接放到项目里使用。

以下是代码:

package com.ruoyi.project.tool.robot; import com.alibaba.fastjson.JSONObject; import okhttp3.*; import org.apache.commons.codec.digest.DigestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.InetSocketAddress; import java.net.Proxy; import java.util


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有