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、测试接口

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

相关推荐
计算机学姐5 分钟前
基于SpringBoot的在线学习网站平台【个性化推荐+数据可视化+课程章节学习】
java·vue.js·spring boot·后端·学习·mysql·信息可视化
星晨雪海14 分钟前
Spring Boot 常用注解
java·spring boot·后端
Deepoch22 分钟前
VLA分布式协同中枢:Deepoc开发板激活采摘机器人集群智能
人工智能·科技·机器人·具身模型·deepoc·采摘
二进制person29 分钟前
JavaEE进阶 --Spring Framework、Spring Boot和Spring Web MVC(3)
spring boot·spring·java-ee
xufengzhu30 分钟前
Springboot项目信创选型
java·spring boot·后端
一 乐38 分钟前
非遗文化传承网站|基于springboot + vue非遗文化传承网站系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·非遗文化传承网站
chase。1 小时前
【学习笔记】训练时动作条件化:一种更高效的机器人实时控制方案
笔记·学习·机器人
Sapphire小蓝1 小时前
机器人全产业链汇总
人工智能·机器人
renhongxia11 小时前
多机器人任务分配的事件触发自适应共识
人工智能·微服务·语言模型·机器人·prompt