Webhook 是一种在特定事件发生时,在网站和应用之间自动发送数据的机制。数据通过 HTTP 请求传输:一个应用通过互联网,将数据发送到另一个应用预先指定的地址。

Webhook 的功能
在 FLOWIN 中,Webhook 与转发任务配合使用。它可以在原始聊天(来源)中的消息出现、修改、删除或置顶时触发,也可以在消息转发到的聊天(目标)中有按钮被点击时触发。
通过这种方式,可以将 FLOWIN 与社交网络、交易所、电子表格和 CRM(客户管理系统)连接起来。这种连接称为集成,可用于:
- 将 Telegram 中的咨询请求自动添加到 CRM。
- 将 Telegram 中的交易信号传送至交易所,以进行自动跟单,即根据信号自动执行交易。
- 将 Telegram 消息转发到其他社交网络。
- 将帖子和消息复制到 Google 表格。
- 在机器人中设置自动回复。
每种场景都需要在网站或应用一侧设置数据接收方式和相应操作。
创建 Webhook
我们将在 webhook.site 上测试 Webhook。该网站会提供一个接收数据的地址,并显示收到的请求。我们将向它发送一条 Telegram 新消息的文本。
为此,需要在 FLOWIN 中有一个已设置且正常运行的转发任务。
首次测试
请使用独立的测试聊天和虚构的咨询请求。测试只需传送文本,不必包含姓名、电话号码或其他个人信息。
打开 @flow_in_bot,发送
/start命令,然后点击“控制面板”。在新标签页中打开 webhook.site。复制“Your unique URL”字段中的请求接收地址。
在 FLOWIN 面板中打开“菜单” → “Webhook”,然后点击“创建”。
在顶部字段中粘贴复制的地址。在“请求正文”字段中输入
{"message":"<message-text>"},然后点击“创建”。这是发送数据的模板:FLOWIN 会将<message-text>替换为消息文本,接收方将在message字段中看到它。点击已创建 Webhook 旁的“应用”。勾选所需的转发任务,然后点击“保存”。
向来源聊天发送一条测试消息,例如“咨询请求 №1042:需要家具目录。”返回 webhook.site:收到的第一个请求会自动打开。在“Request Content”区域的
message字段中会出现咨询请求的文本。此后,FLOWIN 会在每条新消息转发到目标聊天之前,自动将其文本发送到指定地址。
Webhook 设置
下面以已创建的 Webhook 为例,介绍如何更改设置以及各字段的含义。
从哪里获取设置参数
要连接其他网站或应用,请参考其文档。数据接收规则通常位于 API 部分,该部分说明如何与其他程序交互。其中列有填写以下字段所需的地址、HTTP 方法和数据格式。
如何更改 Webhook 设置
在“Webhook”列表中,点击所需 Webhook 旁的“更改”。
修改所需字段,然后点击“保存”。
HTTP 方法
HTTP 方法决定请求执行的操作:POST 提交数据供处理,GET 请求获取数据,PUT 替换数据。默认选择 POST,适用于我们的测试。连接其他网站或应用时,请选择其文档中指定的方法。
URL 地址
URL 是互联网上的地址。此处填写从所连接的网站或应用获取的数据接收地址。在本例中,该地址由 webhook.site 提供。
请求正文
请求正文包含以 JSON 格式发送的数据,即“字段名称:值”这样的键值对。具体包含哪些字段,取决于所连接的网站或应用的要求。
元标签是一种占位标记,FLOWIN 会将其替换为消息数据。例如, <message-text> 会被替换为文本,而 <author-name> 会被替换为作者姓名。也可以点击字段下方的“元标签”链接打开元标签列表。
下方列表中的用户、消息、聊天和话题编号,均指它们在 Telegram 中的标识符(ID)。
消息和作者
- 消息文本:
<message-text>。 - 消息日期:
<message-date>。 - 消息时间:
<message-time>。 - 作者编号:
<author-id>。 - 作者姓名:
<author-name>。 - 作者姓名,以指向其个人资料的 HTML 链接形式显示:
<author-name-link>。 - 作者姓名,以话题标签形式显示:
<author-name-tag>。 - 作者用户名:
<author-username>。
来源
- 消息文本:
<src-message-text>。 - 消息编号:
<src-message-id>。 - 消息链接:
<src-message-link>。 - 聊天编号:
<src-chat-id>。 - 聊天名称:
<src-chat-name>。 - 聊天用户名:
<src-chat-username>。 - 话题编号:
<src-topic-id>。 - 话题名称:
<src-topic-name>。
目标
- 消息文本:
<dst-message-text>。 - 消息编号:
<dst-message-id>。 - 消息链接:
<dst-message-link>。 - 聊天编号:
<dst-chat-id>。 - 聊天名称:
<dst-chat-name>。 - 聊天用户名:
<dst-chat-username>。 - 话题编号:
<dst-topic-id>。 - 话题名称:
<dst-topic-name>。
目标中的消息编号和链接在转发后才会生成。要传送这些数据,请在“请求触发器”字段中选择“发送后”。
按钮点击
- 点击按钮的用户编号:
<clicker-id>。 - 点击按钮的用户姓名:
<clicker-name>。 - 按钮数据:
<clicker-data>。 - 点击日期:
<click-date>。 - 点击时间:
<click-time>。
选择文本
- 正则表达式用于设定文本搜索规则。例如,
<regexp>(short|sell)</regexp>会填入找到的第一个与short或sell匹配的内容。 - 随机文本
<random>1|2|3|4|5</random>会填入五个选项中的一个。也可以在标签之间填写自己的选项,用|符号分隔。
请求头
“请求头”包含提供给接收方的辅助信息。例如,访问密钥可用于验证请求的发送者。请求头采用 JSON 格式。通常不必更改此字段;所需值应从所连接的网站或应用的文档中获取。
请求触发器
“请求触发器”决定 Webhook 在什么事件发生时、于哪个时点向指定地址发送请求。可选择以下事件:
- “发送”为默认选项。转发新消息时,Webhook 会触发。
- “修改”会在处理来源中消息的修改时触发。
- “置顶”会在处理来源中消息的置顶时触发。
- “删除”会在处理来源中消息的删除时触发。
- “按钮点击”适用于目标聊天中的回调(callback)按钮。此类按钮会通知机器人有用户点击,并传送为该按钮指定的数据。普通链接按钮不会触发此 Webhook。
发送时点决定请求会在转发过程的哪个阶段发出:
可用的发送时点
“发送”和“修改”事件可使用全部三个选项。“置顶”“删除”和“按钮点击”使用“处理前”,无法选择其他时点。
说明
“说明”是方便您使用的备注,不影响 Webhook 的运行。此字段可以留空。
Webhook 的可用操作
可以在“Webhook”列表中管理已创建的 Webhook:
- “更改”用于打开 Webhook 的主要设置。
- “更多”菜单中的“创建副本”用于复制 Webhook 的设置。
- “更多”菜单中的“选择项目”用于将 Webhook 添加到项目。
- “更多”菜单中的“删除”用于删除 Webhook。
此外,每个 Webhook 都有一个“转发任务 [N]”按钮,用于选择该 Webhook 应用到的转发任务。N 表示已选转发任务的数量。如果尚未选择转发任务,则会显示“应用”按钮。
常见问题
用通俗的话说,什么是 Webhook?
它是一种在特定事件发生时自动向另一个应用传送数据的方式。例如,转发新消息时,FLOWIN 会通过 HTTP 请求,将消息文本发送到您指定的地址。这里,请求由 FLOWIN 发出;Telegram 的 setWebhook 方法则用于设置另一个方向的数据传送:将 Telegram 的更新发送到为机器人提供服务的程序。
只填写 CRM 的地址就够了吗?
不够。需要使用 CRM 文档中的数据接收地址,以及合适的 HTTP 方法、JSON 字段和访问时可能需要的请求头。CRM 网站的普通地址并不适用。FLOWIN 会发送请求,而是否创建咨询记录或执行其他操作,取决于 CRM 如何处理收到的数据。各字段的含义见“Webhook 设置”部分。
为什么目标中的消息链接为空?
新消息成功发送之前,FLOWIN 还没有它在目标中的编号和链接。要传送 <dst-message-id> 和 <dst-message-link>,请在“请求触发器”字段中选择“发送”或“修改”事件,以及“发送后”时点。频道和超级群组的消息会生成链接。对于私聊或普通群组,即使发送后, <dst-message-link> 也会保持为空。
点击普通链接按钮可以触发 Webhook 吗?
不可以。普通链接按钮会打开链接。“按钮点击”事件需要使用目标聊天中的回调(callback)按钮:它会向机器人传送点击数据。两者的区别见“请求触发器”部分。
如何检查外部服务是否收到了数据?
发送一条虚构消息,然后在服务一侧检查收到的请求。在 webhook.site 示例中,咨询请求的文本会出现在“Request Content”区域。Telegram 中成功转发消息,本身并不能证明外部服务已接收数据或执行了所需操作。测试只需使用不含姓名、电话号码或其他个人信息的文本。















