电报setwebhook没有收到更新

时间:2017-06-26 04:30:20

标签: php google-app-engine ssl-certificate telegram-bot php-telegram-bot

我正在使用Google Cloudshell平台创建一个用于托管webhook的经过ssl认证的网址。所以我最初开始使用getupdates来查找chat_id并发送机器人消息。以下代码,旨在获取用户的聊天ID,然后将其发送给他“文本”,工作正常。

<?php 
$botToken = "insert bot token" ;
$website = "https://api.telegram.org/bot".$botToken ;

$update = file_get_contents($website."\getupdates");
$updateArray = json_decode($update, TRUE) ;

$chatId = $updateArray["result"][0]["message"]["chat"]["id"] ;
file_get_contents($website."/sendmessage?chat_id=".$chatId."&text=test") ;
?>

然后我使用setwebhook设置了一个webhook并修改了上面的代码。

<?php 
$botToken = "insert bot token" ;
$website = "https://api.telegram.org/bot".$botToken ;

$update = file_get_contents("php://input");
$updateArray = json_decode($update, TRUE) ;

$chatId = $updateArray["result"][0]["message"]["chat"]["id"] ;
file_get_contents($website."/sendmessage?chat_id=".$chatId."&text=test") ;
?>

换句话说,我用“php:// input”更改了\ getupdates。它确实工作。

我认为谷歌应用引擎可能不会自动签署其ssl证书,也许这就是为什么webhook不起作用的原因。

任何帮助将不胜感激。

编辑:为了回应下面的答案/评论,我尝试了getWebhookinfo方法并获得了

“url:”https://my_url.com“,”has_custom_certificate“:false,”pending_update_count“:0,”max_connections“:40

1 个答案:

答案 0 :(得分:0)

您可以通过以下方法找出问题:

检查getWebhookInfo方法,确保您的webhook网址正确无误,并且没有last_error_message字段。

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

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