飞书调用手册

向群发送 Webhook 通知

把系统通知推送到固定飞书群,并说明关键词与签名两种安全配置。

官方资料核对 2026-10-15示例代码,未进行真实接口实测
← 返回平台功能

接入准备

  • 在目标群的群设置 → 群机器人添加自定义机器人;此方式不需要应用 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。

调用步骤

  1. 01

    复制机器人 Webhook,把最后一段 UUID 保存到 FEISHU_WEBHOOK_KEY。

  2. 02

    按安全配置执行代码;Python 示例在设置 FEISHU_SIGN_SECRET 后会计算签名。

  3. 03

    检查业务 code 为 0,再到目标群确认;仅 HTTP 200 不代表发送成功。

调用 01

发送文本通知

自定义机器人凭证只能向所属群推送,不可代替应用令牌读取聊天。签名算法由 Python 示例完整实现。

POSThttps://open.feishu.cn/open-apis/bot/v2/hook/${FEISHU_WEBHOOK_KEY}

请求头

Content-Type
application/json

参数说明

参数表可左右滑动,查看完整说明。

字段 / 位置类型 / 必填说明
msg_type请求体string必填本例固定 text。
content.text请求体string必填文本内容;如果设置关键词,正文需含任一匹配关键词。
timestamp / sign请求体string可选签名校验开启时必填;timestamp 为秒,与当前时间相差不超过 1 小时;以 timestamp+换行+secret 为 HMAC-SHA256 的 key,对空字节串签名并 Base64 编码。

调用代码

替换示例 ID 与请求体内容后运行。

Python 3
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。 以下为结构示意,非本站实测结果。

JSON
{
  "code": 0,
  "msg": "success",
  "data": {}
}

常见错误与排查

11232发送请求被限流
退避重试,避开整点批量推送。
签名或关键词校验失败请求未通过群机器人安全配置
核对关键词、服务端时钟及签名 Secret;不要关闭安全配置来绕过校验。

调用注意

  • 单租户单机器人为 100 次/分钟、5 次/秒;请求体不超过 20 KB。
  • 仅保存服务端凭证,不把完整 Webhook 放进前端或公共仓库;推送凭证不具备读取群历史的能力。

注意事项

  • 群 Webhook 是独立接入路径;群外用户数据、事件接收、任意群发消息需要应用机器人。

核验来源

本站按官方资料整理本场景的必要调用步骤与代码,覆盖范围以本页列出的接口为准。官方资料用于追溯规范及查看变更。

  1. 01
    自定义机器人使用指南核验日期 2026-10-15

飞书的其他调用手册

← 返回飞书的全部功能