为什么 Telegram 在 webhook 上给我一个空的 POST 请求?
Why does Telegram give me an empty POST request on the webhook?
我遵循了这些步骤:
- 向 BotFather 注册了一个机器人。
- 发送 post 网络钩子请求(https://api.telegram.org/bot[BOTID]/setWebhook) with the URL being https://example.com/myscript.php
- 再次检查 getWebhookInfo,它表明它已正确注册。
- 当我向机器人发送消息时,正在调用脚本,但 POST 负载为空。在 documentation 中,他们说他们将向指定的 url 发送一个 HTTPS POST 请求,其中包含一个 JSON-序列化更新。
是否还有其他人遇到此问题并且可能知道解决此问题的方法?
我要记录的 php 脚本:
$file = dirname(__FILE__) . '/telegram-log.txt';
$entry = (object)array();
$entry->date = date("r");
$entry->GET = $_GET;
$entry->POST = $_POST;
$entry->REQUEST = $_REQUEST;
$entry->HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
$entry->REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
file_put_contents($file, json_encode($entry) . "\n", FILE_APPEND | LOCK_EX);
回复:
{"date":"Thu, 17 Jun 2021 13:42:49 +0200","GET":[],"POST":[],"REQUEST":[],"HTTP_USER_AGENT":null,"REMOTE_ADDR":"91.108.6.133"}
使用 $content = file_get_contents("php://input")
接收更新。
Telegram 的响应是内容类型application/json
。
$_POST
仅在使用 application/x-www-form-urlencoded
或 multipart/form-data
作为请求中的 HTTP Content-Type 时有效。
我遵循了这些步骤:
- 向 BotFather 注册了一个机器人。
- 发送 post 网络钩子请求(https://api.telegram.org/bot[BOTID]/setWebhook) with the URL being https://example.com/myscript.php
- 再次检查 getWebhookInfo,它表明它已正确注册。
- 当我向机器人发送消息时,正在调用脚本,但 POST 负载为空。在 documentation 中,他们说他们将向指定的 url 发送一个 HTTPS POST 请求,其中包含一个 JSON-序列化更新。
是否还有其他人遇到此问题并且可能知道解决此问题的方法?
我要记录的 php 脚本:
$file = dirname(__FILE__) . '/telegram-log.txt';
$entry = (object)array();
$entry->date = date("r");
$entry->GET = $_GET;
$entry->POST = $_POST;
$entry->REQUEST = $_REQUEST;
$entry->HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
$entry->REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
file_put_contents($file, json_encode($entry) . "\n", FILE_APPEND | LOCK_EX);
回复:
{"date":"Thu, 17 Jun 2021 13:42:49 +0200","GET":[],"POST":[],"REQUEST":[],"HTTP_USER_AGENT":null,"REMOTE_ADDR":"91.108.6.133"}
使用 $content = file_get_contents("php://input")
接收更新。
Telegram 的响应是内容类型application/json
。
$_POST
仅在使用 application/x-www-form-urlencoded
或 multipart/form-data
作为请求中的 HTTP Content-Type 时有效。