我使用laravel和sdk创建电报机器人今天有一个问题 - 机器人递归地向用户发送相同的消息,如picture
\Telegram::sendMessage([
'chat_id' => $chatid,
'text' => "Считаю...",
]);
$controller = $this->getReportControllerName($text);
$method = $this->getReportMethodName($text);
$report_data = new $controller();
$report_data = $report_data->$method($chatid);
try
{
\Telegram::sendMessage([
'chat_id' => $chatid,
'text' => $report_data,
]);
}
catch (TelegramResponseException $e)
{
$errorData = $e->getResponseData();
if ($errorData['ok'] === false) {
\Telegram::sendMessage([
'chat_id' => '123456789',
'text' => 'There was an error for a user. ' . $errorData['error_code'] . ' ' . $errorData['description'],
]);
}
}
Try-catch block
添加检测后问题。在我的日志中,有很多499
和500
错误。我还能做些什么来解决这个问题?将try-catch
添加到程序的其他部分或其他内容?
答案 0 :(得分:0)
您需要在webhook上回复200 OK,否则电报会一次又一次地尝试发送消息。
您需要捕获所有异常并在每个请求上回复200 OK。
您可以使用以下代码部分:
try
{
return \Telegram::sendMessage([
'chat_id' => $chatid,
'text' => $report_data,
]);
}