电报webhook不工作(bot)

电报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); 
} 

问题是,当我使用网络的钩和我发帖的令牌不工作,但是当我使用网络的钩和我保存令牌一个变量,它正常工作。 我真的不知道为什么它不工作,我已经尝试了一切! 请给我指导,我该如何解决这个问题?我怎样才能克服这个问题?

+0

你能分享发布到这个文件的样本json吗? – RamaKrishna

+0

string(73)“https://api.telegram.org/bot434441867:AAFIcipstLlbLZ0NXFU4j8RA6wB02mkftUM” –

+0

你可以对你的令牌执行json_encode并发布到这个文件,你可以在'file_get_contents(“php:// input”)中得到相同的结果。 ;'和'json_decode'一样。 – RamaKrishna

电报博特网络挂接不会 POST令牌到你的服务器,但你可以把它给网络挂接URL的一部分。例如,https://www.sean.taipei/telegram/hook.php?token=12345:AAJqs_w-4

如果上述解决方案没有奏效,你可以找到通过以下方法问题:

检查getWebhookInfo方法,确保您的网络挂接网址是正确的,并没有last_error_message领域。

POST类似的数据到您的服务器,here是一些数据,你可以在curl -d JSON使用,只需将它复制并在自己的服务器上运行。

最后,检查您的CDN配置(如果您已在该服务器上应用),临时禁用泛滥或任何检查。

+0

我做了所有这些,但没有得到结果,我真的很想找到这个,但我不知道什么是错误? –

我有调试的一般建议可以将这些帮助你:

  1. 安装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" 
    } 

Postman

  1. 如果您的控制器是真实的,你必须确保网络挂接消息由电报发送。您可以下载ngrok并为您的本地主机创建一个https代理。
  2. 使用此命令在ngrok:

    ngrok http 20201 
    

    20201是你的本地主机端口(本地主机:20201)。 现在ngrok给你一个https链接,你必须将该链接设置为你的电报webhook(就像你说的那样)。 在这个时候,如果电报发送一个webhook消息给你的机器人,那么你可以在本地主机上调试它。

    1. 最后,如果您没有发现问题,您必须阅读Marvin's Patent Pending Guide to All Things Webhook以再次检查所有要求。
    1. 支持IPv4,目前不支持IPv6的网络挂接。
    2. 接受端口443,80,88或8443上来自149.154.167.197-233的传入POST。
    3. 能够处理TLS1.0 + HTTPS流量。
    4. 提供支持,非通配符,验证或自签名证书。
    5. 采用的是CN或SAN.that你已经安装上提供的域相匹配。
    6. 提供所有中间证书来完成验证链。
开始=>