模拟 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