当前位置:   article > 正文

SpringBoot对接企业微信群机器人_springboot 机器人 对接微信群

springboot 机器人 对接微信群

注意注意!

微信群必须是内部群  外部群添加不了群机器人

第一步:添加群机器人

第二步: 获取到机器人的key值

第三步:创建springboot项目 并导入对应的依赖

  1. <dependency>
  2. <groupId>com.dtflys.forest</groupId>
  3. <artifactId>forest-spring-boot-starter</artifactId>
  4. <version>1.5.14</version>
  5. </dependency>

第四步:配置yml文件

  1. ## 轻量级HTTP客户端框架forest
  2. forest:
  3. # 配置底层API为 okhttp3
  4. backend: okhttp3
  5. # 连接池最大连接数,默认值为500
  6. max-connections: 1000
  7. # 每个路由的最大连接数,默认值为500
  8. max-route-connections: 500
  9. # 请求超时时间,单位为毫秒, 默认值为3000
  10. timeout: 3000
  11. # 连接超时时间,单位为毫秒, 默认值为2000
  12. connect-timeout: 3000
  13. # 请求失败后重试次数,默认为0次不重试
  14. retry-count: 1
  15. # 单向验证的HTTPS的默认SSL协议,默认为SSLv3
  16. ssl-protocol: SSLv3
  17. # 打开或关闭日志,默认为true
  18. logEnabled: true
  19. # 打开/关闭Forest请求日志(默认为 true)
  20. log-request: true
  21. # 打开/关闭Forest响应状态日志(默认为 true)
  22. log-response-status: true
  23. # 打开/关闭Forest响应内容日志(默认为 false)
  24. log-response-content: true
  25. wechat:
  26. notice:
  27. key: 这里复制机器人的key值
  28. server:
  29. port: 8571 #后端的ip端口

第五步  配置url的地址 并发送消息

  1. @Component
  2. public interface WechatNoticeClient {
  3. @Post(
  4. url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={key}",
  5. headers = {
  6. "Accept-Charset: utf-8",
  7. "Content-Type: application/json"
  8. },
  9. dataType = "json")
  10. void sendWechatMsg(@Var("key") String key, @JSONBody Map<String, Object> body);
  11. }

第六步:编写controller(发送请求)

controller

  1. @RestController
  2. public class RebotController {
  3. @Autowired
  4. MyNoticeUtil myNoticeUtil;
  5. @GetMapping("/doTest/{testType}")
  6. public String doTest(@PathVariable("testType") String testType){
  7. if (testType.equals("1")){
  8. myNoticeUtil.sendTextMsg();
  9. }
  10. if (testType.equals("2")){
  11. myNoticeUtil.sendMarkDownTextMsg();
  12. }
  13. if (testType.equals("3")){
  14. myNoticeUtil.sendImageMsg();
  15. }
  16. if (testType.equals("4")){
  17. myNoticeUtil.sendImageAndTxtMsg();
  18. }
  19. return "success";
  20. }
  21. }

第七步:发送具体的消息

  1. @Component
  2. public class MyNoticeUtil {
  3. @Autowired
  4. private WechatNoticeClient wechatNoticeClient;
  5. @Value("${wechat.notice.key}")
  6. private String NOTICE_KEY;
  7. /**
  8. * 发送文本消息
  9. */
  10. public void sendTextMsg() {
  11. Map<String, Object> sendMap = new HashMap<>();
  12. //设置消息类型 txt文本
  13. sendMap.put("msgtype", "text");
  14. Map<String, String> contentMap = new HashMap<>();
  15. contentMap.put("content", "你好,lupeng的机器人");
  16. sendMap.put("text", contentMap);
  17. wechatNoticeClient.sendWechatMsg(NOTICE_KEY, sendMap);
  18. }
  19. /**
  20. * 发送markdown文本消息
  21. */
  22. public void sendMarkDownTextMsg() {
  23. Map<String, Object> sendMap = new HashMap<>();
  24. //设置消息类型 markdown文本
  25. sendMap.put("msgtype", "markdown");
  26. Map<String, String> contentMap = new HashMap<>();
  27. contentMap.put("content", "支付宝到账<font color=\\\"warning\\\">100元</font>,开心起来吧。\\\n" +
  28. " >付款方:<font color=\\\"comment\\\">空气</font>");
  29. sendMap.put("markdown", contentMap);
  30. wechatNoticeClient.sendWechatMsg(NOTICE_KEY, sendMap);
  31. }
  32. /**
  33. * 发送图片消息
  34. */
  35. public void sendImageMsg() {
  36. String url = "D:\\javaWeb\\image\\image-20231006212440733.png";
  37. Map<String, Object> sendMap = new HashMap<>();
  38. sendMap.put("msgtype", "image");
  39. Map<String, String> contentMap = new HashMap<>();
  40. contentMap.put("md5", getMd5(url));
  41. contentMap.put("base64", getBase64(url).replaceAll("\r|\n", ""));
  42. sendMap.put("image", contentMap);
  43. wechatNoticeClient.sendWechatMsg(NOTICE_KEY, sendMap);
  44. }
  45. /**
  46. * 发送图文消息
  47. */
  48. public void sendImageAndTxtMsg() {
  49. Map<String, Object> sendMap = new HashMap<>();
  50. sendMap.put("msgtype", "news");
  51. Map<String, Object> contentMap = new HashMap<>();
  52. List<Map<String, Object>> list = new ArrayList<>();
  53. Map<String, Object> obj = new HashMap<>();
  54. obj.put("title", "lupeng的博客");
  55. obj.put("description", "大家给他点点赞!点击图片立即跳转");
  56. obj.put("url", "https://blog.csdn.net/qq_44910673?type=blog");
  57. obj.put("picurl", "https://pic.iqshw.com/d/file/wzgdq/tx/2018/05/06/efa1b8c542784d05804c21bb9ec5f77e.jpg");
  58. list.add(obj);
  59. contentMap.put("articles", list);
  60. sendMap.put("news", contentMap);
  61. wechatNoticeClient.sendWechatMsg(NOTICE_KEY, sendMap);
  62. }
  63. /**
  64. * 图片转为base64编码
  65. */
  66. public String getBase64(String imgFile) {
  67. InputStream in = null;
  68. byte[] data = null;
  69. // 读取图片字节数组
  70. try {
  71. in = new FileInputStream(imgFile);
  72. data = new byte[in.available()];
  73. in.read(data);
  74. in.close();
  75. } catch (IOException e) {
  76. e.printStackTrace();
  77. }
  78. // 对字节数组Base64编码
  79. BASE64Encoder encoder = new BASE64Encoder();
  80. // 返回Base64编码过的字节数组字符串
  81. return encoder.encode(data);
  82. }
  83. /**
  84. * 获取文件的MD5值
  85. *
  86. * @param path
  87. * @return
  88. */
  89. public String getMd5(String path) {
  90. try {
  91. MessageDigest md5 = MessageDigest.getInstance("MD5");
  92. FileInputStream fis = new FileInputStream(path);
  93. byte[] buffer = new byte[1024];
  94. int len;
  95. while ((len = fis.read(buffer)) != -1) {
  96. md5.update(buffer, 0, len);
  97. }
  98. fis.close();
  99. byte[] byteArray = md5.digest();
  100. StringBuilder sb = new StringBuilder();
  101. for (byte b : byteArray) {
  102. sb.append(String.format("%02x", b));
  103. }
  104. return sb.toString();
  105. } catch (Exception e) {
  106. e.printStackTrace();
  107. }
  108. return null;
  109. }
  110. }

最后运行!

消息效果:

发送md效果

发送卡片效果

......

可以根据自己的需求进行更改

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/542734
推荐阅读
相关标签
  

闽ICP备14008679号