java发送飞书消息卡片

一.背景

飞书(Lark)作为企业级协同办公平台,其消息卡片(富媒体消息)凭借 "结构化展示、交互性强、可视化程度高" 的特性,成为企业内部告警通知、业务审批、数据推送、流程提醒的核心载体。Java 作为企业级后端开发的主流语言,是支撑核心业务系统(如风控系统、订单系统、大数据平台)的核心技术栈,实现 "Java 发送飞书消息卡片" 的需求,源于传统飞书消息推送方式的痛点,以及企业对 "业务系统 - 协同办公" 高效联动、信息精准触达的核心诉求。

1.传统飞书消息推送的核心痛点

  1. 消息形式单一,信息传递效率低传统方式多通过飞书机器人发送纯文本 / 简单 markdown 消息,无法结构化展示复杂业务信息:例如风控系统触发异常告警时,仅能以 "XX 订单风控异常,金额 XX 元" 的文本形式推送,无法直观展示订单详情、异常指标、操作入口等关键信息;业务人员需跳转至业务系统才能查看完整内容,信息获取链路长、响应效率低。

  2. 无交互能力,无法闭环业务流程纯文本消息仅能实现 "信息告知",无法承载交互操作:例如审批类消息无法直接在飞书内完成 "同意 / 驳回" 操作,需人工登录业务系统处理;数据推送类消息无法提供 "查看详情""导出数据" 等快捷入口,导致 "消息推送 - 业务处理" 的流程割裂,增加人工操作成本。

  3. 适配企业级系统集成难企业核心业务系统(如金融交易系统、电商订单系统、大数据监控平台)多基于 Java 开发,传统飞书消息推送依赖手动配置机器人、编写简单脚本,无法无缝集成至 Java 业务系统的业务流程中:例如订单系统完成大额订单生成后,无法自动触发飞书消息卡片推送;大数据平台监控到任务失败时,需人工编写脚本推送告警,时效性差且易遗漏。

  4. 格式不规范,信息展示混乱手动推送飞书消息时,易因格式不统一导致信息展示混乱:例如不同业务线的告警消息卡片字段不一致、样式不统一,业务人员需花费额外时间理解信息;且无法根据接收人角色(如研发、运维、产品)定制消息卡片内容,信息过载或关键信息缺失问题突出。

  5. 缺乏权限与风控管控,合规风险高金融、政企等行业对消息推送的权限、审计要求严苛,传统方式无法管控 "谁发送了消息、发送了什么内容、接收人是谁";且无法对敏感信息(如客户手机号、交易金额)进行脱敏处理,易引发数据泄露风险,难以满足等保、隐私保护等合规要求。

2.Java 发送飞书消息卡片的核心价值

Java 作为企业级开发语言,结合飞书开放平台提供的消息卡片 API,能高效解决传统方式的痛点,实现 "业务系统事件 - 飞书消息卡片 - 业务交互" 的全流程闭环,核心价值体现在:

  1. 结构化展示复杂业务信息,提升信息触达效率Java 可通过飞书消息卡片 API 构建结构化、可视化的卡片内容,将业务系统的复杂信息(如订单详情、告警指标、数据报表)以 "标题 + 字段 + 表格 + 图片" 的形式精准推送:例如大数据平台监控到 Spark 作业失败时,Java 程序可生成包含 "作业名称、失败时间、失败原因、日志链接、重启入口" 的消息卡片,业务人员无需跳转系统即可掌握核心信息,响应效率提升 80% 以上。

  2. 集成交互能力,闭环业务流程飞书消息卡片支持按钮、选择器等交互组件,Java 可在卡片中配置 "同意 / 驳回""重启作业""查看详情" 等操作按钮,并对接业务系统接口:例如审批类消息卡片的 "同意" 按钮点击后,Java 后端可接收飞书回调并自动完成业务系统的审批流程;告警卡片的 "重启作业" 按钮可直接触发大数据平台的作业重启接口,实现 "消息推送 - 操作执行" 的一站式闭环。

  3. 无缝集成企业级 Java 业务系统Java 可将飞书消息卡片推送逻辑封装为通用工具类 / 组件,嵌入核心业务系统的业务流程中,实现 "事件触发 - 自动推送":例如订单系统基于 Spring Boot 开发,可在订单支付完成的业务逻辑后,直接调用消息卡片推送组件,自动向运营人员推送包含订单信息的卡片;大数据监控平台基于 Java 开发,可在检测到任务异常时,实时推送告警卡片至运维群,替代人工干预。

  4. 标准化与定制化结合,适配多场景需求Java 可封装通用的消息卡片模板(如告警模板、审批模板、数据推送模板),保证不同业务线的消息格式统一;同时支持根据接收人角色、业务场景动态调整卡片内容:例如向研发人员推送的告警卡片包含技术日志、堆栈信息,向管理人员推送的卡片仅展示核心指标和处理结果,避免信息过载。

  5. 精细化管控,满足合规诉求Java 程序可对接企业权限系统,在发送消息卡片前校验推送人员 / 应用的权限,仅允许授权角色推送敏感业务信息;同时对卡片中的敏感数据(如身份证号、银行卡号)进行自动脱敏处理;推送过程中记录审计日志(推送人、时间、内容、接收人),满足金融、政企等行业的合规审计要求。

3.典型应用场景

  1. 企业级告警通知:大数据平台、服务器监控系统、风控系统基于 Java 触发异常告警时,推送包含异常详情、操作入口的飞书消息卡片至运维 / 风控群,实现告警信息精准触达、快速响应。
  2. 业务流程审批:OA 系统、采购系统、合同系统等 Java 后端系统发起审批流程时,推送包含审批事项、附件、操作按钮的消息卡片至审批人飞书,支持飞书内直接完成审批操作,闭环审批流程。
  3. 核心业务数据推送:电商、金融行业的订单系统、交易系统将大额订单、核心交易数据以消息卡片形式推送至运营 / 管理人员飞书,直观展示业务关键指标,提升数据监控效率。
  4. 自动化运营提醒:物流系统、客户管理系统基于 Java 触发物流状态变更、客户跟进提醒时,推送包含快捷操作入口的消息卡片至对应员工飞书,降低运营人员操作成本。
  5. 大数据作业监控:Spark/Flink 作业平台(Java 开发)监控到作业失败、数据延迟等问题时,推送包含作业日志、重启按钮的消息卡片至研发群,实现作业故障快速定位与处理。

综上,Java 发送飞书消息卡片,是企业实现 "核心业务系统 - 飞书协同办公" 深度联动的关键路径:既解决了传统消息推送形式单一、流程割裂、集成难的痛点,又通过 Java 语言的企业级特性,保障了消息推送的稳定性、安全性与合规性,为企业提升办公效率、闭环业务流程、精准触达信息提供了高效的技术支撑。

二.具体实现

1.获取token

复制代码
        String url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal";

        JSONObject json = new JSONObject();
            json.put("app_id", "");
            json.put("app_secret", "");

        Map<String, String> headers = new HashMap<>();

            headers.put("Content-Type", "application/json; charset=utf-8");


        String rs = HttpUtil.sendPost(url,json.toString());

        System.out.println(rs);

        String tenant_access_token = JSONObject.parseObject(rs).getString("tenant_access_token");

2.获取发送人的id

复制代码
String url2 = "https://open.feishu.cn/open-apis/contact/v3/users/batch_get_id?user_id_type=open_id";

Map<String, String> headers2 = new HashMap<>();

     headers2.put("Content-Type", "application/json; charset=utf-8");
     headers2.put("Authorization","Bearer "+tenant_access_token);

JSONObject json2 = new JSONObject();
     json2.put("emails",new String[]{xxx"});
     json2.put("mobiles",new String[]{"xxx"});
     json2.put("include_resigned",true);


String rs2 = HttpUtil.sendPost(url2,json2.toString(),headers2);

 

String user_id = JSONObject.parseObject(rs2).getJSONObject("data").getJSONArray("user_list").getJSONObject(0).getString("user_id");

3.发送消息卡片

复制代码
       String url3 = "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=open_id";

        JSONArray arr = new JSONArray();

            JSONObject one = new JSONObject();
                one.put("oldConfig","旧配置测试01");
                one.put("newConfig","新配置测试02");
                one.put("operator","修改");

            arr.add(one);


        JSONObject variable = new JSONObject();
            variable.put("creator","xxx");
            variable.put("project","测试项目");
            variable.put("taskName","测试任务001");
            variable.put("reasonText","业务改造");
            variable.put("approvalTime","xxxxxx");

            variable.put("resources",arr);


        JSONObject templateData = new JSONObject();

            templateData.put("template_id","xxxxx");
            templateData.put("template_version_name","1.0.2");
            templateData.put("template_variable",variable);


        JSONObject template = new JSONObject();

            template.put("type","template");
            template.put("data",templateData);

        JSONObject json3 = new JSONObject();
            json3.put("receive_id",user_id);
            json3.put("msg_type","interactive");
            json3.put("content",template.toJSONString());


        String rs3 = HttpUtil.sendPost(url3,json3.toString(),headers2);
相关推荐
是梦终空3 小时前
JAVA毕业设计253—基于Java+Springboot+vue3+协同过滤推荐算法的传统服饰文化平台(源代码+数据库+任务书+12000字论文)
java·spring boot·vue·毕业设计·课程设计·协同过滤推荐算法·传统服饰文化平台
HerayChen10 小时前
HbuilderX 内存溢出报错
java·大数据·linux
程序员小白条11 小时前
0经验如何找实习?
java·开发语言·数据结构·数据库·链表
小马爱打代码11 小时前
Spring AI:搭建自定义 MCP Server:获取 QQ 信息
java·人工智能·spring
郭涤生11 小时前
QT 架构笔记
java·数据库·系统架构
daidaidaiyu11 小时前
基于LangGraph开发复杂智能体学习一则
java·ai
小小8程序员12 小时前
STL 库(C++ Standard Template Library)全面介绍
java·开发语言·c++
a努力。12 小时前
Redis Java 开发系列#2 数据结构
java·数据结构·redis
a努力。13 小时前
腾讯Java面试被问:String、StringBuffer、StringBuilder区别
java·开发语言·后端·面试·职场和发展·架构