电报webhook不工作(bot)
我有网络钩子的问题!我有一个为我的电报机器人提供令牌的表单,并回答我的机器人根据表单中的令牌插入。当我使用get update方法时,一切都很好,但是当我使用web钩子时,不要工作!我的网址有SS l证书,设置了Web钩子。电报webhook不工作(bot)
$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);
}
问题是,当我使用网络的钩和我发帖的令牌不工作,但是当我使用网络的钩和我保存令牌一个变量,它正常工作。 我真的不知道为什么它不工作,我已经尝试了一切! 请给我指导,我该如何解决这个问题?我怎样才能克服这个问题?
电报博特网络挂接不会 POST令牌到你的服务器,但你可以把它给网络挂接URL的一部分。例如,https://www.sean.taipei/telegram/hook.php?token=12345:AAJqs_w-4
如果上述解决方案没有奏效,你可以找到通过以下方法问题:
检查getWebhookInfo方法,确保您的网络挂接网址是正确的,并没有last_error_message
领域。
POST类似的数据到您的服务器,here是一些数据,你可以在curl -d JSON
使用,只需将它复制并在自己的服务器上运行。
最后,检查您的CDN配置(如果您已在该服务器上应用),临时禁用泛滥或任何检查。
我做了所有这些,但没有得到结果,我真的很想找到这个,但我不知道什么是错误? –
我有调试的一般建议可以将这些帮助你:
- 安装Postman和后像电报网络挂接消息控制器手动消息。然后确保你的控制器没有错误。
邮递员样本:
{
"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并为您的本地主机创建一个https代理。
- 最后,如果您没有发现问题,您必须阅读Marvin's Patent Pending Guide to All Things Webhook以再次检查所有要求。
- 支持IPv4,目前不支持IPv6的网络挂接。
- 接受端口443,80,88或8443上来自149.154.167.197-233的传入POST。
- 能够处理TLS1.0 + HTTPS流量。
- 提供支持,非通配符,验证或自签名证书。
- 采用的是CN或SAN.that你已经安装上提供的域相匹配。
- 提供所有中间证书来完成验证链。
使用此命令在ngrok:
ngrok http 20201
20201是你的本地主机端口(本地主机:20201)。 现在ngrok给你一个https链接,你必须将该链接设置为你的电报webhook(就像你说的那样)。 在这个时候,如果电报发送一个webhook消息给你的机器人,那么你可以在本地主机上调试它。
你能分享发布到这个文件的样本json吗? – RamaKrishna
string(73)“https://api.telegram.org/bot434441867:AAFIcipstLlbLZ0NXFU4j8RA6wB02mkftUM” –
你可以对你的令牌执行json_encode并发布到这个文件,你可以在'file_get_contents(“php:// input”)中得到相同的结果。 ;'和'json_decode'一样。 – RamaKrishna