当前位置: 首页 > news >正文

java通过webhook给飞书发送群消息

现在使用飞书的人越来越多了,飞书有一个最大的好处,可以使用webhook简便的发送群消息。而在工作中,也经常会因为一些运维方面的工作,需要给飞书发送群消息,来实时提醒相关负责人,及时处理工作。

一、先看一下效果吧:

最后有整个项目代码下载

二、飞书创建群

三、java通过webhook发飞书发送消息

通过上一步,已经获取到如下信息(根据实际情况复制出来,后面会用到):

webhook地址:https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxx

签名校验:xxxxxxx

上面两个获取到了,下面就是java发送了

1、bootstrap.yml中配置如下:

spring:application:name: base
server:port: 9080servlet:context-path: /
feishu:aiUrl: https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxx #飞书机器人通知secret: xxxxxxxxxxxxxxxxsignName: 基础平台

2、controller代码

package com.ck.controller;import com.ck.config.FeiShuAiClient;
import com.ck.service.TestService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/test")
@Api(tags = "TestController", description = "测试")
public class TestController {private static final Logger logger = LoggerFactory.getLogger(TestController.class);@Autowiredprivate TestService testService;@Autowiredprivate FeiShuAiClient feiShuAiClient;@GetMapping("/send")@ApiOperation("发送内空")public String find(String name) {name="当前发送内容:"+name;feiShuAiClient.sendMsg(name);return "发送成功";}
}

3、发送飞书代码

 /*** 发送结果* @param content*/public void sendMsg(String content){content="【"+signName+"】"+content;Long timestamp = getTimestamp();String sign = Sign(timestamp);FeiShuContentVo contentVo = new FeiShuContentVo(content);FeiShuAiVo aiVo = new FeiShuAiVo();aiVo.setTimestamp(timestamp.toString());aiVo.setSign(sign);aiVo.setMsg_type("text");aiVo.setContent(contentVo);String paramJson = GsonUtils.toJson(aiVo);String result = doPost(aiUrl,paramJson);log.info("飞书发送内容:"+content+",发送结果:"+result);}public String genSign(String secret, long timestamp) {//把timestamp+"\n"+密钥当做签名字符串String stringToSign = timestamp + "\n" + secret;//使用HmacSHA256算法计算签名Mac mac = null;try {mac = Mac.getInstance("HmacSHA256");mac.init(new SecretKeySpec(stringToSign.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));byte[] signData = mac.doFinal(new byte[]{});return new String(Base64.encodeBase64(signData));} catch (Exception e) {e.printStackTrace();}return null;}

四、验证

五:代码下载地址:百度网盘 请输入提取码

通过百度网盘分享的文件:send-feishu-msg
链接:https://pan.baidu.com/s/1Dlyy64Tqwer8sSJu7vJGgQ?pwd=yv0l 
提取码:yv0l

http://www.lryc.cn/news/447213.html

相关文章:

  • 每日一题——第一百零九题
  • 街头摊贩检测系统源码分享
  • 服务器数据恢复—SAN环境下LUN映射出错导致文件系统一致性出错的数据恢复案例
  • 深度学习:自然语言处理的基本原理
  • Win10 Chrome浏览器被强制绑定主页的解决办法
  • 【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第四篇-着色器投影-接收阴影部分】
  • Shell脚本基础——实训项目任务
  • Eclipse Memory Analyzer (MAT)提示No java virtual machine was found ...解决办法
  • 【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
  • 植物大战僵尸杂交版V2.5.1下载(最新版)
  • 基于nodejs+vue的游戏陪玩系统
  • SVN文件不显示修改状态图标
  • GB28181语音对讲协议详解
  • JavaScript 数据可视化:前端开发的核心工具
  • [Redis][哨兵][上]详细讲解
  • 如何展开浏览器开发者模式的Fetch/XHR
  • Pydantic 是一个强大的 Python 库
  • 每日OJ题_牛客_NC40链表相加(二)_链表+高精度加法_C++_Java
  • Dubbo快速入门(一):分布式与微服务、Dubbo基本概念
  • jmeter性能测试---csv数据文件设置
  • 交换基础【计算机网络】
  • Android12的netd分析
  • OpenCV图像文件读写(6)将图像数据写入文件的函数imwrite()的使用
  • JVM(HotSpot):方法区(Method Area)
  • JWT的基础与使用
  • 处理 VA02修改行项目计划行(SCHEDULE LINES )报错:不可能确定一个消耗帐户
  • 【AI基础】pytorch lightning 基础学习
  • 高通量测序技术--组蛋白甲基化修饰、DNA亲和纯化测序,教授(优青)团队指导:从实验设计、结果分析到SCI论文辅助
  • [极客大挑战 2019]RCE ME1
  • 计算机毕业设计 中医院问诊系统的设计与实现 Java实战项目 附源码+文档+视频讲解