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 小时前
Kafka 基础介绍
spring boot·kafka·消息队列
用户8307196840825 小时前
spring ai alibaba + nacos +mcp 实现mcp服务负载均衡调用实战
spring boot·spring·mcp
Java水解6 小时前
SpringBoot3全栈开发实战:从入门到精通的完整指南
spring boot·后端
aircrushin9 小时前
从春晚看分布式实时协同算法与灵巧手工程实现
人工智能·机器人
初次攀爬者1 天前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺1 天前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart1 天前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
Nyarlathotep01131 天前
SpringBoot Starter的用法以及原理
java·spring boot
dkbnull2 天前
深入理解Spring两大特性:IoC和AOP
spring boot
洋洋技术笔记2 天前
Spring Boot条件注解详解
java·spring boot