用途:构建、发送和处理飞书交互卡片,通过飞书消息接口向指定会话发送带按钮、选择器等可交互元素的消息卡片,并处理用户点击后的回调。
主要能力:支持卡片结构定义,包括 header 标题与模板颜色、div 文本块(lark_md)、hr 分割线、note 备注、action 按钮组和 select_static 选择器;按钮类型有 default、primary、danger 三种,可附带 value 用于回调识别;支持发送卡片和处理卡片回调后更新已有卡片。
使用方式:Base URL 为 https://open.feishu.cn/open-apis/im/v1。先从 feishu_skills 根目录执行共享脚本获取 Token:TOKEN="$(./scripts/get_feishu_token.sh)",请求头使用 Authorization: Bearer ${TOKEN}。若接口返回 token 无效、过期或 401,强制刷新后仅重试一次:TOKEN="$(./scripts/get_feishu_token.sh --force-refresh)"。发送卡片调用 POST /open-apis/im/v1/messages?receive_id_type=chat_id,请求体需包含 receive_id、msg_type 为 interactive、content 为字符串化的卡片 JSON。回调后更新卡片调用 PATCH /open-apis/im/v1/messages/{message_id}。
环境变量与缓存:需配置 FEISHU_APP_ID 和 FEISHU_APP_SECRET;本地缓存文件为 ./.feishu_token_cache.json,未过期时直接复用,默认提前 5 分钟刷新。
限制与注意:content 必须是字符串化的 JSON;回调事件类型为 card.action.trigger,通过 action.value 识别操作。最佳实践包括按钮应带 value、优先更新卡片而非发送新消息以减少刷屏、危险操作用 danger 类型。其他平台支持或额外计费信息暂未提供。