飞书调用手册
向群发送 Webhook 通知
把系统通知推送到固定飞书群,并说明关键词与签名两种安全配置。
← 返回平台功能接入准备
- 在目标群的群设置 → 群机器人添加自定义机器人;此方式不需要应用 Token。
- 示例正文包含接入测试,可设置该关键词;开启签名时还需签名密钥。
准备环境变量
示例值需要替换为自己的凭证或资源 ID。代码在本机或服务端运行;密钥不应放进公开网页。
FEISHU_WEBHOOK_KEY- Webhook 最后一段 UUID,相当于推送凭证。
FEISHU_SIGN_SECRET可选- 可选,仅开启签名校验时设置;没有开启时不设置。
export FEISHU_WEBHOOK_KEY='replace_with_webhook_uuid'
# 可选,按需启用
# export FEISHU_SIGN_SECRET='replace_with_signing_secret'以上 export 适用于 macOS / Linux 的终端,在同一终端内运行后续代码。Python 示例保存为 request.py 后执行 python3 request.py。
调用步骤
- 01
复制机器人 Webhook,把最后一段 UUID 保存到 FEISHU_WEBHOOK_KEY。
- 02
按安全配置执行代码;Python 示例在设置 FEISHU_SIGN_SECRET 后会计算签名。
- 03
检查业务 code 为 0,再到目标群确认;仅 HTTP 200 不代表发送成功。
调用 01
发送文本通知
自定义机器人凭证只能向所属群推送,不可代替应用令牌读取聊天。签名算法由 Python 示例完整实现。
POST
https://open.feishu.cn/open-apis/bot/v2/hook/${FEISHU_WEBHOOK_KEY}请求头
Content-Typeapplication/json
参数说明
参数表可左右滑动,查看完整说明。
| 字段 / 位置 | 类型 / 必填 | 说明 |
|---|---|---|
msg_type请求体 | string必填 | 本例固定 text。 |
content.text请求体 | string必填 | 文本内容;如果设置关键词,正文需含任一匹配关键词。 |
timestamp / sign请求体 | string可选 | 签名校验开启时必填;timestamp 为秒,与当前时间相差不超过 1 小时;以 timestamp+换行+secret 为 HMAC-SHA256 的 key,对空字节串签名并 Base64 编码。 |
调用代码
替换示例 ID 与请求体内容后运行。
import os, time, json, hmac, hashlib, base64, urllib.request, urllib.error
key = os.environ["FEISHU_WEBHOOK_KEY"]
payload = {"msg_type": "text", "content": {"text": "接入测试:通知服务已启动"}}
# 若群机器人开启了签名校验,同时设置 FEISHU_SIGN_SECRET。
secret = os.environ.get("FEISHU_SIGN_SECRET")
if secret:
timestamp = str(int(time.time()))
signing_key = (timestamp + "\n" + secret).encode()
payload.update(timestamp=timestamp, sign=base64.b64encode(hmac.new(signing_key, b"", hashlib.sha256).digest()).decode())
req = urllib.request.Request("https://open.feishu.cn/open-apis/bot/v2/hook/" + key, data=json.dumps(payload).encode(), headers={"Content-Type": "application/json"}, method="POST")
try:
with urllib.request.urlopen(req, timeout=30) as response:
result = json.load(response)
except urllib.error.HTTPError as exc:
raise SystemExit(f"HTTP {exc.code}: {exc.read().decode()}")
if result.get("code", result.get("StatusCode", 0)) != 0:
raise SystemExit(json.dumps(result, ensure_ascii=False))
print(json.dumps(result, ensure_ascii=False, indent=2))
返回示例
按官方字段整理的节选示意,使用虚构 ID,不是实测结果。群通知成功一般返回 code=0。 以下为结构示意,非本站实测结果。
{
"code": 0,
"msg": "success",
"data": {}
}常见错误与排查
11232发送请求被限流- 退避重试,避开整点批量推送。
签名或关键词校验失败请求未通过群机器人安全配置- 核对关键词、服务端时钟及签名 Secret;不要关闭安全配置来绕过校验。
调用注意
- 单租户单机器人为 100 次/分钟、5 次/秒;请求体不超过 20 KB。
- 仅保存服务端凭证,不把完整 Webhook 放进前端或公共仓库;推送凭证不具备读取群历史的能力。
注意事项
- 群 Webhook 是独立接入路径;群外用户数据、事件接收、任意群发消息需要应用机器人。
核验来源
本站按官方资料整理本场景的必要调用步骤与代码,覆盖范围以本页列出的接口为准。官方资料用于追溯规范及查看变更。
- 01自定义机器人使用指南核验日期 2026-10-15