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
相关文章:
java通过webhook给飞书发送群消息
现在使用飞书的人越来越多了,飞书有一个最大的好处,可以使用webhook简便的发送群消息。而在工作中,也经常会因为一些运维方面的工作,需要给飞书发送群消息,来实时提醒相关负责人,及时处理工作。 一、先看一下效果吧&a…...
每日一题——第一百零九题
题目:进制转换合集。任意r进制与十进制之间的转换 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> long stringToDecimal(const char* str, int base); void convertToBaseR(int num, int r);int main() {ch…...
街头摊贩检测系统源码分享
街头摊贩检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…...
服务器数据恢复—SAN环境下LUN映射出错导致文件系统一致性出错的数据恢复案例
服务器数据恢复环境: SAN环境下一台存储设备中有一组由6块硬盘组建的RAID6磁盘阵列,划分若干LUN,MAP到不同业务的SOLARIS操作系统服务器上。 服务器故障: 用户新增了一台服务器,将存储中的某个LUN映射到新增加的这台服…...
深度学习:自然语言处理的基本原理
概念: 自然语言处理(Natural Language Processing,简称NLP)是人工智能和语言学领域的一个分支,它致力于研究如何让计算机能够理解、解释和生成人类语言,以及如何实现人与计算机之间的有效通信。自然语言处理…...
Win10 Chrome浏览器被强制绑定主页的解决办法
Win10 Chrome浏览器被强制绑定主页的解决办法 背景 刚刚重装的系统默认是某杀毒软件,使用浏览器时发现浏览器主页老是hao123,还改不了。于是卸载了此杀毒软件,换了别的。发现还是解决不了浏览器主页被绑定且改不了的问题 体现 chrome://se…...
【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第四篇-着色器投影-接收阴影部分】
上一章中实现了体积渲染的光照与自阴影,那我们这篇来实现投影 回顾 勘误 在开始本篇内容之前,我已经对上一章中的内容的错误进行了修改。为了确保不会错过这些更正,同时也避免大家重新阅读一遍,我将在这里为大家演示一下修改的…...
Shell脚本基础——实训项目任务
项目一 项目实训 (初始Shell脚本) 项目一 项目实训 (初始Shell脚本)项目实施任务一 输入输出重定向任务二 数据输入输出操作任务三 Shell变量操作任务四 算术运算符操作任务五 设置环境变量 【实训任务】 本实训的主要任务是通过编写简单的shell脚本,完成使用数据…...
Eclipse Memory Analyzer (MAT)提示No java virtual machine was found ...解决办法
1,下载mat后安装,打开时提示 jdk版本低,需要升级到jdk17及以上版本,无奈就下载了jdk17,结果安装后提示没有jre环境,然后手动生成jre目录,命令如下: 进入jdk17目录:执行&…...
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
文章目录 C list 容器详解:从入门到精通前言第一章:C list 容器简介1.1 C STL 容器概述1.2 list 的特点 第二章:list 的构造方法2.1 常见构造函数2.1.1 示例:不同构造方法2.1.2 相关文档 第三章:list 迭代器的使用3.1 …...
植物大战僵尸杂交版V2.5.1下载(最新版)
2.5.1版本更新公告: 在最新的2.5.1版本中,游戏对“两面夹击”关卡进行了多项重要调整。出怪倍率和种类均有所降低,部分关卡的初始阳光量也得到了调整,以增强玩家的策略性。同时,玩家可以在这些关卡中使用投手类植物&a…...
基于nodejs+vue的游戏陪玩系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…...
SVN文件不显示修改状态图标
今天安装试用SVN时发现文件不显示修改状态 以下为解决方法: 1,在有.svn的文件夹中右键--tortoiseSvn--setting 2,选中icon Overlays,右侧的status cache 选shell 3,点击icon set 如下图所示 4,修改icon…...
GB28181语音对讲协议详解
GB28181-2016语音对讲流程如下图1所示: 图1.语音对讲流程。 其中, 信令 1 、2 、 3 、 4 为语音广播通知、 语音广播应答消息流程; 信令 5 、 1 2 、 1 3 、 1 4 、 1 5 、 1 6 为 S I P 服务器接收到客户端的呼叫请求通过 B 2 B UA 代理方式建立语音流接收者与媒…...
JavaScript 数据可视化:前端开发的核心工具
随着互联网和大数据的快速发展,数据呈爆炸式增长,如何有效地展示和理解数据成为了一项关键技能。JavaScript 作为前端开发的主要语言,不仅在构建网页方面无可替代,也在数据可视化领域发挥了重要作用。从简单的图表到复杂的交互式展…...
[Redis][哨兵][上]详细讲解
目录 0.前言1.基本概念1.相关名词解释2.主从复制的问题3.人工恢复主节点故障4.哨兵自动恢复主节点故障 0.前言 说明:该章节相关操作不需要记忆,理解流程和原理即可,用的时候能自主查到即可Redis的主从复制模式下,⼀旦主节点由于故…...
如何展开浏览器开发者模式的Fetch/XHR
说明:大多数程序员都用浏览器的F12,开发者模式查看接口,我也不例外。我常用下面这个选项,它会过滤掉掉其他文档、样式请求,只展示访问服务器的接口请求 有次,不知道点了什么,这个菜单消失找不…...
Pydantic 是一个强大的 Python 库
Pydantic 是一个强大的 Python 库,专门用于数据验证和设置管理。以下是对 Pydantic 的详细介绍: 一、主要功能和特点 数据验证: Pydantic 通过 Python 类型注解来定义数据模型,并自动验证输入数据是否符合预定义的类型和结构。提…...
每日OJ题_牛客_NC40链表相加(二)_链表+高精度加法_C++_Java
目录 牛客_NC40链表相加(二)_链表高精度加法 题目解析 C代码 Java代码 牛客_NC40链表相加(二)_链表高精度加法 链表相加(二)_牛客题霸_牛客网 题目解析 模拟⾼精度加法的过程,只不过是在链表中模拟。 C代码 /*…...
Dubbo快速入门(一):分布式与微服务、Dubbo基本概念
文章目录 一、分布式与微服务概念1.大型互联网架构目标2.集群和分布式(1)集群 (Cluster)(2)分布式计算 (Distributed Computing)(3)集群与分布式的关系(4)实践中的应用案例 3.架构演…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
