Telegram 转发中的 Webhook 设置

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

将 Telegram 消息传送至其他网站或应用

Webhook 的功能

在 FLOWIN 中,Webhook 与转发任务配合使用。它可以在原始聊天(来源)中的消息出现、修改、删除或置顶时触发,也可以在消息转发到的聊天(目标)中有按钮被点击时触发。

通过这种方式,可以将 FLOWIN 与社交网络、交易所、电子表格和 CRM(客户管理系统)连接起来。这种连接称为集成,可用于:

  • 将 Telegram 中的咨询请求自动添加到 CRM。
  • 将 Telegram 中的交易信号传送至交易所,以进行自动跟单,即根据信号自动执行交易。
  • 将 Telegram 消息转发到其他社交网络。
  • 将帖子和消息复制到 Google 表格。
  • 在机器人中设置自动回复。

每种场景都需要在网站或应用一侧设置数据接收方式和相应操作。

创建 Webhook

我们将在 webhook.site 上测试 Webhook。该网站会提供一个接收数据的地址,并显示收到的请求。我们将向它发送一条 Telegram 新消息的文本。

为此,需要在 FLOWIN 中有一个已设置且正常运行的转发任务。

首次测试

请使用独立的测试聊天和虚构的咨询请求。测试只需传送文本,不必包含姓名、电话号码或其他个人信息。

  1. 打开 @flow_in_bot,发送 /start 命令,然后点击“控制面板”。

    通过 @flow_in_bot 进入控制面板
    通过 @flow_in_bot 进入控制面板。
  2. 在新标签页中打开 webhook.site。复制“Your unique URL”字段中的请求接收地址。

    用于接收测试请求的地址
    用于接收测试请求的地址。
  3. 在 FLOWIN 面板中打开“菜单” → “Webhook”,然后点击“创建”。

    FLOWIN 菜单中的“Webhook”部分
    FLOWIN 菜单中的“Webhook”部分。
    创建第一个 Webhook
    创建第一个 Webhook。
  4. 在顶部字段中粘贴复制的地址。在“请求正文”字段中输入 {"message":"<message-text>"},然后点击“创建”。这是发送数据的模板:FLOWIN 会将 <message-text> 替换为消息文本,接收方将在 message 字段中看到它。

    测试请求的地址和正文
    测试请求的地址和正文。
  5. 点击已创建 Webhook 旁的“应用”。勾选所需的转发任务,然后点击“保存”。

    将 Webhook 关联到转发任务
    将 Webhook 关联到转发任务。
    为 Webhook 选择转发任务
    为 Webhook 选择转发任务。
  6. 向来源聊天发送一条测试消息,例如“咨询请求 №1042:需要家具目录。”返回 webhook.site:收到的第一个请求会自动打开。在“Request Content”区域的 message 字段中会出现咨询请求的文本。此后,FLOWIN 会在每条新消息转发到目标聊天之前,自动将其文本发送到指定地址。

    来源聊天中的测试咨询请求
    来源聊天中的测试咨询请求。
    webhook.site 收到的咨询请求文本
    webhook.site 收到的咨询请求文本。

Webhook 设置

下面以已创建的 Webhook 为例,介绍如何更改设置以及各字段的含义。

从哪里获取设置参数

要连接其他网站或应用,请参考其文档。数据接收规则通常位于 API 部分,该部分说明如何与其他程序交互。其中列有填写以下字段所需的地址、HTTP 方法和数据格式。

如何更改 Webhook 设置

  1. 在“Webhook”列表中,点击所需 Webhook 旁的“更改”。

    打开 Webhook 设置
    打开 Webhook 设置。
  2. 修改所需字段,然后点击“保存”。

    保存修改后的设置
    保存修改后的设置。
    说明已保存在 Webhook 设置中
    说明已保存在 Webhook 设置中。

HTTP 方法

HTTP 方法决定请求执行的操作:POST 提交数据供处理,GET 请求获取数据,PUT 替换数据。默认选择 POST,适用于我们的测试。连接其他网站或应用时,请选择其文档中指定的方法。

可用的 HTTP 方法
可用的 HTTP 方法。

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。
触发请求的事件
触发请求的事件。

发送时点决定请求会在转发过程的哪个阶段发出:

  • “处理前”:在翻译和人工智能(AI)处理消息之前发送请求。
  • “处理后”:在完成翻译和 AI 处理后发送请求。
  • “发送后”:当消息已在目标聊天中成功发送或修改后发送请求。
请求发送时点
请求发送时点。

可用的发送时点

“发送”和“修改”事件可使用全部三个选项。“置顶”“删除”和“按钮点击”使用“处理前”,无法选择其他时点。

说明

“说明”是方便您使用的备注,不影响 Webhook 的运行。此字段可以留空。

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 设置”部分。

点击普通链接按钮可以触发 Webhook 吗?

不可以。普通链接按钮会打开链接。“按钮点击”事件需要使用目标聊天中的回调(callback)按钮:它会向机器人传送点击数据。两者的区别见“请求触发器”部分。

如何检查外部服务是否收到了数据?

发送一条虚构消息,然后在服务一侧检查收到的请求。在 webhook.site 示例中,咨询请求的文本会出现在“Request Content”区域。Telegram 中成功转发消息,本身并不能证明外部服务已接收数据或执行了所需操作。测试只需使用不含姓名、电话号码或其他个人信息的文本。