通过飞书发送加急消息提醒用户。支持应用内加急和电话加急(真正打电话到手机)。
通过飞书发送加急消息,实现紧急提醒。支持电话加急(真正打电话到手机)和应用内加急(飞书 App 强推送)两种方式。
每次执行技能前,必须先检查环境变量。 缺哪项补哪项,不要全量重配。
echo "APP_ID=${FEISHU_APP_ID:-(未设置)}" && echo "APP_SECRET=${FEISHU_APP_SECRET:-(未设置)}" && echo "USER_OPEN_ID=${FEISHU_USER_OPEN_ID:-(未设置)}"
仅当 APP_ID 或 APP_SECRET 缺失时执行。
向用户索取凭证:
需要配置飞书应用凭证才能使用。请提供:
- 和 — 在 → 应用详情 → 凭证与基础信息 中获取
如果还没有飞书应用,请参考下方「飞书应用创建指南」创建。
用户提供后,写入专用配置文件(幂等):
# 创建或更新 ~/.feishu.env(专用配置文件,避免污染 ~/.zshrc)
touch ~/.feishu.env && chmod 600 ~/.feishu.env
# 幂等写入:已存在则替换,不存在则追加
grep -q '^export FEISHU_APP_ID=' ~/.feishu.env \
&& sed -i '' 's|^export FEISHU_APP_ID=.*|export FEISHU_APP_ID="用户提供的AppID"|' ~/.feishu.env \
|| echo 'export FEISHU_APP_ID="用户提供的AppID"' >> ~/.feishu.env
grep -q '^export FEISHU_APP_SECRET=' ~/.feishu.env \
&& sed -i '' 's|^export FEISHU_APP_SECRET=.*|export FEISHU_APP_SECRET="用户提供的AppSecret"|' ~/.feishu.env \
|| echo 'export FEISHU_APP_SECRET="用户提供的AppSecret"' >> ~/.feishu.env
# 确保 ~/.zshrc 会加载此文件(幂等,只加一次)
grep -q 'source ~/.feishu.env' ~/.zshrc || echo '[ -f ~/.feishu.env ] && source ~/.feishu.env' >> ~/.zshrc
# 当前会话立即生效
source ~/.feishu.env
安全提醒:写入完成后,不要在聊天中回显 App Secret 明文。只需告诉用户「凭证已保存」。
仅当 FEISHU_USER_OPEN_ID 缺失时执行。需要 APP_ID/SECRET 已就绪。
向用户索取手机号或邮箱,然后 lookup:
# 当前命令显式注入环境变量(确保子进程可用),同时执行 lookup
source ~/.feishu.env && python3 {baseDir}/scripts/feishu_meeting.py lookup --phone "用户的手机号"
查到 open_id 后,写入配置文件(幂等):
grep -q '^export FEISHU_USER_OPEN_ID=' ~/.feishu.env \
&& sed -i '' 's|^export FEISHU_USER_OPEN_ID=.*|export FEISHU_USER_OPEN_ID="查到的open_id"|' ~/.feishu.env \
|| echo 'export FEISHU_USER_OPEN_ID="查到的open_id"' >> ~/.feishu.env
source ~/.feishu.env
补全所有缺失项后告诉用户:
飞书配置已保存到
~/.feishu.env,后续使用无需再次配置。
然后继续执行用户原本的请求(发提醒、打电话等),执行命令前先 source ~/.feishu.env 确保变量可用:
source ~/.feishu.env && python3 {baseDir}/scripts/feishu_meeting.py notify --message "xxx"
如果用户还没有飞书应用,引导他们:
im:message(发送消息)im:message:urgent(应用内加急)im:message.urgent:phone(电话加急,可选)contact:user.id:readonly(查找用户,可选)执行提醒前,你需要判断提醒发给谁:
用户说「提醒我」「给我打个电话」「叫我一下」等没有提到其他人的情况,直接使用默认的 FEISHU_USER_OPEN_ID(即用户自己)。
# 不需要 --user-id,自动使用环境变量中配置的用户
python3 {baseDir}/scripts/feishu_meeting.py notify --message "小龙虾提醒你:该干活了"
如果 FEISHU_USER_OPEN_ID 环境变量未配置,回到上方「首次使用配置」流程引导用户完成配置。
用户说「提醒 13912345678 的张三」「给 [email protected] 打个电话」等包含手机号或邮箱的情况:
注意: 对方必须满足以下条件才能被提醒:
- 对方已注册飞书账号(手机号/邮箱已关联飞书)
- 对方与你在同一个飞书组织(租户)内
- 对方已被添加到应用的可用范围中
如果 lookup 查不到用户,请提醒用户确认以上条件。
第一步:用 lookup 查找对方的 open_id
# 手机号不需要用户手动加 +86,脚本会自动补全
python3 {baseDir}/scripts/feishu_meeting.py lookup --phone "13912345678"
第二步:用查到的 open_id 发起提醒
python3 {baseDir}/scripts/feishu_meeting.py notify --message "小龙虾提醒你:xxx" --user-id "查到的open_id" --phone-call
用户提供的手机号不需要加 +86 前缀,脚本会自动处理:
13800138000 → 自动补全为 +86138001380008613800138000 → 自动补全为 +8613800138000+8613800138000 → 保持不变FEISHU_USER_OPEN_IDlookup 查 open_id,再用 --user-id 指定FEISHU_USER_OPEN_ID 未配置且未提供手机号 → 提示用户先配置# 发送加急消息(应用内加急)
python3 {baseDir}/scripts/feishu_meeting.py notify --message "小龙虾提醒你:该干活了"
# 电话加急(真正打电话到手机!)
python3 {baseDir}/scripts/feishu_meeting.py notify --message "紧急!线上故障" --phone-call
# 提醒其他人(先查 open_id,再提醒)
python3 {baseDir}/scripts/feishu_meeting.py lookup --phone "13912345678"
python3 {baseDir}/scripts/feishu_meeting.py notify --message "小龙虾提醒你:xxx" --user-id "查到的open_id" --phone-call
notify — 发送加急消息(推荐)发送一条加急文本消息,支持应用内加急和电话加急。
# 应用内加急(默认)
python3 {baseDir}/scripts/feishu_meeting.py notify --message "你的任务快到截止日期了"
# 电话加急(真正打电话到手机!)
python3 {baseDir}/scripts/feishu_meeting.py notify --message "紧急!" --phone-call
| 参数 | 说明 | 默认值 |
|---|---|---|
--message / -m | 消息内容(必填) | - |
--user-id / -u | 用户 open_id | 从 FEISHU_USER_OPEN_ID 读取 |
--phone-call | 使用电话加急(拨打手机),不加则默认应用内加急 | 默认不加 |
lookup — 查找用户 open_idpython3 {baseDir}/scripts/feishu_meeting.py lookup --email "[email protected]"
python3 {baseDir}/scripts/feishu_meeting.py lookup --phone "+8613800138000"
| 场景 | 推荐命令 | 说明 |
|---|---|---|
| 重要任务到期 | notify | 发送加急消息提醒 |
| 紧急消息通知 | notify | 应用内加急推送 |
| 需要电话提醒 | notify --phone-call | 直接打电话到手机 |
| 查找其他用户 | lookup | 通过手机号/邮箱查找 open_id |
python3 {baseDir}/scripts/feishu_meeting.py notify --message "小龙虾提醒你:15分钟后有客户会议"
python3 {baseDir}/scripts/feishu_meeting.py notify --message "小龙虾提醒你:紧急线上故障" --phone-call
python3 {baseDir}/scripts/feishu_meeting.py notify --message "数据分析报告已完成,请查收"
小龙虾提醒你:具体事项执行成功后,脚本会输出详细信息。你必须将以下关键信息反馈给用户:
示例反馈格式:
已向你发送飞书紧急提醒:
- 消息内容:小龙虾提醒你:该干活了
- 消息发送:✅ 已发送
- 加急状态:✅ 已加急推送
如果失败,也要如实反馈,例如:
提醒发送失败:
- 消息发送:❌ 失败(缺少 im:message 权限)
- 建议:请在飞书开放平台开通 im:message 和 im:message:urgent 权限
如果脚本输出了权限错误提示(如 -> 应用未启用机器人能力),也要将提示信息转告用户。
| 权限 | 说明 | 用途 | 必需 |
|---|---|---|---|
im:message | 机器人发送消息 | notify 命令 | 是 |
im:message:urgent | 应用内加急 | 默认加急方式(免费) | 是 |
im:message.urgent:phone | 电话加急 | --phone-call 时使用(消耗企业配额) | 用到电话加急时必需 |
contact:user.id:readonly | 通过邮箱/手机号查找用户 | lookup 命令 | 用到 lookup 时必需 |
im:message),点击 「开通」发送消息功能要求应用具有机器人能力:
被提醒的用户必须在应用的可用范围内:
| 错误现象 | 原因 | 解决方法 |
|---|---|---|
| 消息发送失败 (230006) | 应用未启用机器人能力 | 应用详情 → 应用能力 → 添加「机器人」 |
| 消息发送失败 (230013) | 用户不在可用范围 | 版本管理 → 可用范围 → 添加用户 |
| 消息发送失败 (230002) | 机器人不在会话中 | 让用户在飞书中搜索并打开该机器人 |
| 加急失败 (230027) | 缺少加急权限 | 权限管理 → 开通 im:message:urgent 或 im:message.urgent:phone |
| 加急失败 (230023) | 用户未读加急超 200 条 | 让用户先处理部分加急消息 |
| 加急失败 (230024) | 电话加急配额用完 | 联系企业管理员充值或等待恢复 |
| 加急失败 (230052) | 群聊限制了加急 | 检查群聊加急权限设置 |
| 认证失败 | App ID 或 Secret 错误 | 检查环境变量 FEISHU_APP_ID 和 FEISHU_APP_SECRET |
本技能会向以下地址发送请求:
| 接口 | 地址 | 发送的数据 |
|---|---|---|
| 飞书认证 | https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal | App ID、App Secret |
| 飞书消息 | https://open.feishu.cn/open-apis/im/v1/messages | 消息内容、用户 ID |
| 飞书加急 | https://open.feishu.cn/open-apis/im/v1/messages/{id}/urgent_app 或 urgent_phone | 用户 ID |
| 飞书通讯录 | https://open.feishu.cn/open-apis/contact/v3/users/batch_get_id | 邮箱或手机号(仅 lookup) |
除上述接口外,不会向任何其他地址发送数据。