模拟 Telegram 机器人 Webhook

一个 POST 模拟,通过调用 sendMessage 回到同一聊天来响应 Telegram Update。

Telegram 允许 webhook 通过在响应正文本体中返回一个 Bot API 方法调用来响应 Update,而不是发出第二个出站请求。这个模板做到了这一点:它从传入的 Update 读取聊天 ID,并回复一个发回给同一聊天的 sendMessage,以便您在编写任何机器人代码之前看到往返工作情况。

接收传入的调用并按照服务预期的方式进行响应。

响应负载

{
  "method": "sendMessage",
  "chat_id": {{request.body.message.chat.id}},
  "text": "Thanks, got it!"
}

值得了解的字段

字段 含义
method Webhook 响应自身执行的 Bot API 方法名称。
chat_id 通过 {{request.body.message.chat.id}} 从传入的 Update 获取。
text 回复文本;编辑它以测试不同的机器人响应。

创建模拟数据

curl -X POST https://quickmock.dev/api/mocks \
  -H 'Content-Type: application/json' \
  -d '{
  "method": "POST",
  "response_status": 200,
  "content_type": "application/json",
  "response_body": "{\"method\":\"sendMessage\",\"chat_id\":{{request.body.message.chat.id}},\"text\":\"Thanks, got it!\"}"
}'

调用它

curl -X POST -H 'Content-Type: application/json' -d '{"update_id":900000001,"message":{"message_id":42,"date":1717200000,"chat":{"id":987654321,"type":"private"},"text":"/start"}}' https://quickmock.dev/m/<slug>

您将获得什么

POST a Telegram Update -> 200 {"method":"sendMessage","chat_id":987654321,"text":"Thanks, got it!"}
the webhook response itself is treated as a Bot API method call

这与真实情况有何不同

不检查 Telegram 的 Webhook 秘密令牌 —— 这个模拟对任何发送匹配 Update 的人做出回复,而不仅仅是对 Telegram 自己的服务器。

来源

常见问题解答

在响应正文中回复是如何工作的?
Telegram 从 webhook 自己的响应中读取 Bot API 方法名称及其参数,因此简单的机器人可以回答而无需单独调用 API。这是最低延迟的回复方式,也是最容易模拟的。
它会检查秘密令牌吗?
不会。没有验证 Telegram 的 Webhook 秘密令牌,因此模拟会对任何发布匹配 Update 的人做出回复。将该检查视为您的处理程序的工作。
chat_id 来自哪里?
来自传入的 Update,通过读取 message.chat.id 的请求令牌。如果您的测试有效负载省略了该路径,则令牌将原样留在响应中而不是被解析,并且由于 chat_id 未用引号括起来,因此返回的回复是无效的 JSON,而不是一个空字段。值得一看:形状异常的真实 Update 行为相同。

准备好使用了吗?

在模拟构建器中打开以先进行调整

与本指南非常搭配: 回显请求数据

相关模板

← 所有模板

最后更新: 2026-10-17