我有网钩的问题!我有一个表格,用于为我的电报机器人提供令牌,并回答我的机器人根据表格中的令牌插入。当我使用get update方法时,一切都很好,但是当我使用web hook时,不起作用!我的URL有SS l证书,设置了Web挂钩。
$botToken = $_POST['token'];
//$botToken = json_decode($botToken, TRUE);
$webSite = "https://api.telegram.org/bot" . $botToken;
$update = file_get_contents("php://input");
$update = json_decode($update, TRUE);
$chatId = $update["message"]["chat"]["id"];
$message = $update["message"]["text"];
$message = strtolower($message);
switch ($message) {
case "/start":
sendMessage($chatId, "start!م");
break;
case "hi":
sendMessage($chatId, "hiii");
break;
case "khubi":
sendMessage($chatId, "bad nistam!");
break;
case "che khabar":
sendMessage($chatId, "salamati");
break;
default:
sendMessage($chatId, "chi migi ??");
// sendMessage($chatId, "$chatId");
}
function sendMessage($chatId, $message)
{
$url = $GLOBALS['webSite'] . "/sendMessage?chat_id=" . $chatId . "&text=" . urlencode($message);
file_get_contents($url);
}
问题是当我使用web-hook而我发布令牌不起作用时,但是当我使用web-hook并将令牌存储在变量中时,它可以正常工作。 我真的不知道为什么它不起作用,我已经尝试了一切!!!! 请给我指导,我该如何解决?我怎样才能克服这个问题?
答案 0 :(得分:1)
Telegram Bot Webhook 不会 POST令牌到您的服务器,但您可以将其作为webhook URL的一部分。例如,https://www.sean.taipei/telegram/hook.php?token=12345:AAJqs_w-4
如果上述解决方案不起作用,您可以通过以下方法找出问题:
检查getWebhookInfo方法,确保您的webhook网址正确无误,并且没有last_error_message
字段。
将类似数据发布到您的服务器,here是您可以在curl -d JSON
中使用的一些数据,只需将其复制并在您自己的服务器上运行。
最后,检查您的CDN配置(如果您已在该服务器上申请),临时禁用洪水或任何检查。
答案 1 :(得分:0)
我有一些调试的一般建议,这些可以帮助你:
邮差样本:
{
"update_id":10000,
"message":{
"date":1441645532,
"chat":{
"last_name":"Test Lastname",
"id":1111111,
"first_name":"Test",
"username":"Test"
},
"message_id":1365,
"from":{
"last_name":"Test Lastname",
"id":1111111,
"first_name":"Test",
"username":"Test"
},
"text":"/start"
}
在ngrok中使用此命令:
ngrok http 20201
20201是您的本地主机端口(localhost:20201)。 现在ngrok给你一个https链接,你必须将该链接设置为你的电报webhook(就像你说的那样)。 此时如果电报为您的机器人发送webhook消息,那么您可以在localhost中调试它。
- 支持IPv4,Webhooks目前不支持IPv6。
- 在端口443,80,88或8443上接受来自149.154.167.197-233的传入POST。
- 能够处理TLS1.0 + HTTPS流量。
- 提供受支持的非通配符,已验证或自签名证书。
- 使用CN或SAN。它与您在设置时提供的域匹配。
- 提供所有中间证书以完成验证链。
醇>
答案 2 :(得分:0)
对于需要在本地主机上运行/调试电报机器人的人,也许您可以使用此npm软件包。
https://github.com/qutek/telehook
只需使用以下命令将其作为全局软件包安装在计算机上即可
npm install -g telehook
,然后运行命令
telehook run your-bot:token-key http://localhost/your-hook