首页 > 编程语言 >企业微信群机器人发送消息(三)java端如何控制

企业微信群机器人发送消息(三)java端如何控制

时间:2023-10-16 23:01:51浏览次数:47  
标签:发送 textTemplate java String 微信群 机器人 return content new

1.先在群里添加机器人,然后获取机器人的webhook地址:

假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa

2.有多种方式发送群消息,可以采用curl,也可以采用发送http请求的方式,我这里采用okhttp发送http请求,pom如下:

<!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.9.0</version>
        </dependency>

调用okhttp核心代码如下:

/**
*    @content:要发送的消息
*    WECHAT_GROUP:机器人的webhook
*/
public static String callWeChatBot(String content) {
        OkHttpClient client = new OkHttpClient()
                .newBuilder()
                .build();
        MediaType mediaType = MediaType.parse("application/json");
        RequestBody body = RequestBody.create(content,mediaType);
        Request request = new Request.Builder()
                .url(WECHAT_GROUP)
                .method("POST", body)
                .addHeader("Content-Type", "application/json")
                .build();
        Response response = null;
        try {
            response = client.newCall(request).execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return response.message();
    }

3.生成核心方法的参数,

如果发送markdown格式的消息:

public static String generalBotBodyInfo(File f1, File f2, String cusenv, String myenv) {
        String content = "**信息摘要:** \n" +
                ">文件1:<font color=\\\"info\\\">" + f1.getName() + "</font>\n " +
                ">服务器路径:<font color=\\\"info\\\">" + f1.getAbsolutePath() + "</font>\n" +
                ">文件传输环境:<font color=\\\"info\\\">" + myenv + "</font>\n " +
                ">客户接受环境:<font color=\\\"info\\\">" + cusenv + "</font>\n" +
                ">时间:<font color=\\\"info\\\">" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + "</font>";

        String textTemplate = "{\n" +
                "    \"msgtype\": \"markdown\",\n" +
                "    \"markdown\": {\n" +
                "        \"content\": \"" + content + "\",\n" +
                "    }\n" +
                "}";
        return textTemplate;
    }

如果发送text格式的消息:

public static String generalBotBodyAT() {
        String textTemplate = "{\n" +
                "    \"msgtype\": \"text\",\n" +
                "    \"text\": {\n" +
                "        \"content\": \"今天下午大暴雨\",\n" +
                "        \"mentioned_list\":[\"@all\"],\n" +
                "    }\n" +
                "}";
        return textTemplate;
    }

如果发送图片,不能超过2M,支持的格式为JPG,PNG格式:

public static String generalBotBodyImage() {
        String base64 = "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDABsSFBcUERsXFhceHBsgKEIrKCUlKFE6PTBCYFVlZF9VXVtqeJmBanGQc1tdhbWGkJ6jq62rZ4C8ybqmx5moq6T/2wBDARweHigjKE4rK06kbl1upKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKT/wAARCABjAF4DAREAAhEBAxEB/8QAGwAAAQUBAQAAAAAAAAAAAAAABQECAwQGAAf/xAA4EAACAQMBBAYIBgEFAAAAAAABAgMABBEFEiExQQYTIjJRcRQVQmGBkbHRNFJUocHhI1Nic4Ky/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCxrWsrYj0a1wZh3jyX+6DPHV9QLZ9Lk+dAY0bpA7SiC9cEN3ZDux50Bh9UthkRF52HswqW+lBF6ZqM34ex6tfzTtj9hQP6vVTvNxbL7hGT/NAh9axjOLef3DKGgcNRMe67t5LfxbvL8xQW45I5Iw6OGUjIINAOudfsLd9jrDIw49WMj50ElrrVjdsESXZc8FcYzQEcCg86upWnuZJW4uxJoIaAloumtf3YDKepXe5/ig2sMMcEQjiQIg4AUElB2aDqBCM7jQC7/S2kglFnIYHcHaVdyv8AagxkiNG7I6lWU4IPKgaDjhQbTo7eteWOy7ZkiOySeY5UGOmjaKZ43GGUkEUC28L3EyQxLl3OAKDeafaJY2qQoBuHaPiaCzQduoFoEJA4nFB1AtBlOlVj1cyXSDdJufzoM/QaLoeT19xjhsj60E/SDR3nc3dqu0/toOJ94oGdE7Qh5rh1wR2FyOHjQaWgpX7Xu5bQJv4k8qATc2utAFmuCR/sags6JdzZ9GnDFhwLUE+qQ+klY1VmI8DQLp1ncWzZadyn5H34oCNBV1G1F5YywHGWHZzyPKgwOw23sYO1nGKDZdHbB7OzLyJiWQ5IPIcqAlcTLBA8rd1F2jQRWMZjtlLgCR+2/md9BZoK10l0/wCHlSLxYptH4UAmGy1GW5IfUZ+r8SpH9UBtIUXDYBYDG1zNA25gMygB3TBz2Tgn3UFDTI7xJ36+5dxnejIcD4mgK0CigF2lrDHqd2TEhkJDqxG8Aj7igKZoKGpHrDb23+tINryG8/SgvDhQdQdQQ3NwltEZHzgchxJoFikzEHkdRnfx4UDxIjg7Dqx86CKC4WVnjOBKm51oJ6BaCiezrCk+3CQPg390F2gzen3jaj0gEilhFGjbIPIcKA/c3UNrHtzyCNScZPjQLBcQ3EYkhkV18QaCSgayKxBIBxwzQANR6PtJIz28yopOdhiQBQM07SJttkuZ1EY/I/eoD3oyCZZUADAYJ8RQTUC0AfWLsWV/YzHuHaVvI4oC6sHUEHIIyDQYjQLkW2qRFjhX7B+P94oNjdrC9rJ16ho9klgaDFafqk2nSSGAAq/styoNJousDUNqOYKkq8AD3hQFznZJG80GQdLq8u5XmtbmYK2NkHGKDru0IhPUaXdxsDnbLE0Gj0kTjTYRcAiQLvB4+6guUC0GY6YMNq1TmAx+lBa6M6gJrQ27vh4uGea0GUkXYkZQeBxmgu3Wr3d1bJBJJ2AMHA3t50A+gmtpmt7iOZO8jBhQaUdJ42AEVrK7cxmgnmvdRhCTpbGSGQAlCO0nuoJrbVJbhwgs5Ebnk7hQEt+KDqBk80cETSSsFRRkk0GG1a/N/dmXGygGyg91BVimeJiyMVyMbqCOg6g6g0GkaLbXCrJPdI5O/qkb60GojjjiQLGgVRyAoH5oOyKBkkkca7Ujqo8WOKAZd9IbG3yEczN4Jw+dBm9U1afUWAbsRDggoB1B1AcTovfMN8kC/wDY/agkXorcHvXMQ8gTQSjonu7V38k/ugY/RoqQYL2PI5tu+lBZSy1+Bf8AHeROBwBOfqKCux6RSd05HDKMlBE8HSEjtPIPKVf4NBVfSdXn3vE8mPGQH+aCP1NqG1s+itnjjIoF9R6l+kf5j70HepNR/SP8xQJ6m1L9I/7UG7oOoIpmKxMQjNu4LjNBnhblohCsW9ozhtld44Z40Bp1nmjRV/wxkYf8/kOQ86CK1jYDrLcIi7ZVoznZIBIyPA4FBRnAa5uVQdYXZMHZAAPWAED9s+VBZ0oqJpzuBYL2eyCMEg5wBigkefGpq+4wqOpZ/Bic/YfGgJA5oFoEoG+z8KBRQVtUdksJWQkHHEUAOVymoiEYMaRkKrKGAGR40B+zdnt0LHJxQM0/8O3/ACP/AOjQC9SlcXFwQ2CnV7Pu7YqBzSPCZTGxUtbrI2ObeNARigi9BCbA2WU5Hjkb6oZpMjyWSs7FiCRk+6gvUHUH/9k=";
        String md5 = "862715fb36992d6746641ff02ee85b8c";

        String textTemplate = "{\n" +
                "    \"msgtype\": \"image\",\n" +
                "    \"image\": {\n" +
                "        \"base64\": \"" + base64 + "\",\n" +
                "        \"md5\": \"" + md5 + "\"\n" +
                "    }\n" +
                "}";
        return textTemplate;
    }

发送图片需要对图片进行base64编码并计算图片的md5值,把计算的方法也一并献上,需要注意图片不要过大,不然base64编码的结果会超级长,甚至超过String的最大长度,java.util.Base64这个工具类有现成的,直接用就行

public static String getFileBase64(String path){
        try {
            FileInputStream inputStream = new FileInputStream(new File(path));
            byte [] bs = new byte[inputStream.available()];
            inputStream.read(bs);
            return Base64.getEncoder().encodeToString(bs);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }catch (IOException e){
            e.printStackTrace();
        }
        return null;
    }

 

标签:发送,textTemplate,java,String,微信群,机器人,return,content,new
From: https://www.cnblogs.com/tiandi/p/17768638.html

相关文章

  • Java语言用static修饰符进行静态导入的作用和语法
    大力:“Java语言引入了静态导入语法(importstatic),有什么作用?”卫琴:“能够在需要经常访问同一个类的方法或成员变量的场合,简化程序代码。”static修饰符静态导入可以简化程序代码下面是一个未使用静态导入的例子:classTestStatic{publicstaticvoidmain(String[]args){S......
  • Java基础语法(超级详细哦!!!)
     1.注释注释是对代码的解释和说明文字。Java中的注释分为三种:单行注释://这是单行注释文字多行注释:/*这是多行注释文字这是多行注释文字这是多行注释文字*/注意:多行注释不能嵌套使用。文档注释(暂时用不到):/**这是多行注释文字这是多行注释文字这是多行注释文字*/使用的技......
  • 面试题支招:Java基本类型和引用类型有哪些区别?
    大力:“基本类型与引用类型有什么区别?”卫琴:“概括起来,两者有三个区别。掌握了这三个区别,就会对这两种Java类型的本质一目了然。”区别一:基本类型只表示数据,而引用类型(数组类型除外)所引用的对象除了表示数据,还可以拥有方法。下面以double基本类型和Double类类型为例,来解释这两者的区......
  • elasticsearch通过Java class类的@Setting和@Mapping来定义索引index
    今天就来和大家讲讲如何将es索引中的mapping和setting在索引index和class联系起来,其实在这个问题也困扰我好久了,一直没有解决,在elasticsearch7.x版本的时候貌似好像可以用request在程序中来建立索引,像Stringindex=“{“mapping”:...}”之类的操作,干起来比较复杂,在elasticsearch......
  • 企业微信群机器人发送消息(二)机器人配置说明
    如何使用群机器人在终端某个群组添加机器人之后,创建者可以在机器人详情页看的该机器人特有的webhookurl。开发者可以按以下说明a向这个地址发起HTTPPOST请求,即可实现给该群组发送消息。下面举个简单的例子.假设webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key......
  • 用java.net.URL类等访问HTTP服务器读取网页数据
    大力:“Java网络编程需要通过套接字去进行客户程序与服务器程序的交互,这种底层的通信实现起来比较麻烦,有没有现成的API呢?”卫琴:“JDK为基于HTTP协议的网络通信提供了协议处理框架API,Java客户程序通过它来访问HTTP服务器,会很方便。”本文以HTTP客户程序为例,介绍URL类和URLConnection......
  • Java String类
    1.substring()方法返回字符串的子字符串。publicStringsubstring(intbeginIndex)或publicStringsubstring(intbeginIndex,intendIndex)1classMain{2publicstaticvoidmain(String[]args){3Stringstr=newString("thismypractice");4......
  • Java中 length 和 length()的区别
    在Java中,str.length针对的是数组,而str.length()针对的是针对的字符串数组(str.length) 的特点有:长度固定,类型固定。因此数组的长度就可以被视为是一种数组的属性字符串(str.length()) :string的内部机制是一个char数组,而char数组有自己的长度属性,所以string就没必要......
  • java 获取月初的第一天
    一、背景点击查看代码SimpleDateFormatdf1=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");Datedate=newDate();Dateda=newDate(date.getYear(),date.getMonth(),01);Timestamptimestamp=Timestamp.valueOf(df1.format(da......
  • 在Java中,如何避免检查空值?
    内容来自DOChttps://q.houxu6.top/?s=在Java中,如何避免检查空值?我使用x!=null来避免空指针异常。有没有其他的替代方法?if(x!=null){//...}在我看来,这是一个相对常见的问题,初级到中级的开发人员在某个时候都会遇到:他们要么不知道,要么不信任他们参与的合同,......