SpringBoot对接飞书机器人

账号创建

复制代码
    本地是在电脑端,点击左上角的加号,选择创建群组,之后在对应群组页面的右上角打开设置,点击群机器人,添加机器人,选择下面这一个即可

点击创建机器人后可以获取到对应的 webhook 地址

签名校验 :如若不勾选此项,是没有加权限校验的实现,也就是说只要获取到 webhook 链接,谁都可以向这个群里发送消息,针对此情况可以开启群机器人的 权限校验,从这里开启,获取到秘钥之后,点击保存即可。


代码实现

1、添加配置

将 webhook 加到 application.yml (配置文件)中,然后用配置类来读取,将配置类交由 spring 管理:

yml 复制代码
feishu:  
  aiUrl: https://open.feishu.cn/open-apis/bot/v2/hook/
  secret:  
  signName: 来客资喽
java 复制代码
@Slf4j  
@Configuration  
@ConfigurationProperties(prefix = "feishu")  
@Data  
public class FeiShuClient {  
    private String aiUrl;  
    private String secret;  
    private String signName;  
  
    public void sendMsg(String notice) {  
        String timestamp = String.valueOf(System.currentTimeMillis() / 1000); // 当前时间戳,单位秒  
        String sign = calculateSignature(timestamp, secret);  
        Map<String,Object> json=new HashMap();  
        Map<String,Object> text=new HashMap();  
        text.put("text", "【" + signName + "】" + "企业名称:" + notice);  
        json.put("msg_type", "text");  
        json.put("content", text);  
        json.put("timestamp", timestamp);  
        json.put("sign", sign);  
        //发送post请求  
        String result = HttpRequest.post(this.aiUrl)  
                .body(JSON.toJSONString(json), "application/json;charset=UTF-8").execute()  
                .body();  
        log.info("feishu resp:{}", result);  
    }  
  
    private static String calculateSignature(String timestamp, String secret) {  
        try {  
            //把timestamp+"\n"+密钥当做签名字符串  
            String stringToSign = timestamp + "\n" + secret;  
            //使用HmacSHA256算法计算签名  
            Mac mac = Mac.getInstance("HmacSHA256");  
            mac.init(new SecretKeySpec(stringToSign.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));  
            byte[] signData = mac.doFinal(new byte[]{});  
            return Base64.getEncoder().encodeToString(signData);  
        } catch (Exception e) {  
            throw new RuntimeException("sign 计算异常");  
        }    }  
}

2、测试接口

将需要发送的消息,传递给接口,测试下 效果如下:

相关推荐
别动我齐刘海6 小时前
ROS2 Jazzy + C++ 实战路线——进阶学习3
c++·人工智能·vscode·python·算法·机器学习·机器人
Bs_MoneyMagnet6 小时前
基于springboot+vue的非遗物质文化遗产系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
计算机毕设定制辅导-无忧学长6 小时前
《基于SpringBoot的未成年人健康知识科普平台的设计与实现》
java·开发语言·vue.js·spring boot·未成年人健康知识科普平台
连山齐名6 小时前
spring的面试八股文
spring boot
专业程序开发源8 小时前
springboot篮球联赛管理系统13635-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
毕业设计7038 小时前
(免费领源码) SpringBoot 游戏交易平台17600-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
java·spring boot·mysql·决策树·mybatis·idea·推荐算法
微信ipad协议开发9 小时前
教培机构微信自动化:从招生引流到社群运维的完整链路
微信·机器人·自动化·教育电商
一 乐9 小时前
自习室座位预约管理系统|基于springboot + vue自习室座位预约管理系统(源码+数据库+文档)
java·vue.js·spring boot
行百里er9 小时前
轻量级 Spring 监测工具——Spring Insight 发布了
spring boot·后端·监控
PNP Robotics9 小时前
【PNP具身解读】GPT6 Astra:具身智能新范式,大模型 + Franka机器人快速落地验证一、GPT6 Astra 背后的布局、数据与具身方向
人工智能·学习·机器学习·机器人