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

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: 9080
  servlet:
    context-path: /
feishu:
  aiUrl: https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxx #飞书机器人通知
  secret: xxxxxxxxxxxxxxxx
  signName: 基础平台

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);
    @Autowired
    private TestService testService;
    @Autowired
    private 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.kler.cn/news/326134.html

相关文章:

  • PTA L1-080 乘法口诀数列
  • C语言线程编程深度解析
  • Elasticsearch UNASSIGNED 怎么修复
  • OJ在线评测系统 后端 用策略模式优化判题机架构
  • MySQL基础篇 - 约束
  • Eclipse Memory Analyzer (MAT)提示No java virtual machine was found ...解决办法
  • Altium Designer脚本的执行方式
  • 【漏洞复现】VEXUS多语言货币交易所存在未授权访问漏洞
  • centos已安装python3.7环境,还行单独安装python3.10环境,如何安装,具体步骤
  • 进程、线程、协程详解:并发编程的三大武器
  • websocket初识
  • 数据集-目标检测系列-兔子检测数据集 rabbit >> DataBall
  • 中国资产“超级星期四”之后,腰部中概股或成增长“黑马”
  • Linux云计算 |【第四阶段】PROJECT2-DAY1
  • 如何使用开发者工具捕获鼠标右键点击事件
  • Tensorflow2.0
  • Spring Boot 进阶-深入了解SpringBoot条件注解
  • VLAN与三层交换机的原理与配置
  • 基于单片机的小车行走加温湿度检测系统
  • 前端框架对比及选择:React、Vue、Angular的深度剖析
  • 图解C#高级教程(一):委托
  • 【MySQL】视图、用户和权限管理
  • JAVA内存模型!=JVM内存模型
  • UI设计师面试整理-工具和技术技能
  • 【大牛!】3DMAX城市交通插件CityTraffic使用方法详解
  • 关于vue2+uniapp+uview+vuex 私募基金项目小程序总结
  • 一文讲清CSS基础之浮动float原理
  • 关于宿主机功能正常docker容器重启后dns失效的解决办法
  • 江科大笔记—LED闪烁 LED流水灯 蜂鸣器
  • 每一个云手机的ip是独立的吗