2017-10-19 4 views
1

créer bot télégramme avec Laravel et sdk Aujourd'hui, il y a un problème - le robot envoie récursive le même message à l'utilisateur comme celui-ci pictureErreur bot télégramme de gestionnaire

\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 ajouter après problème de détection. Dans mes journaux il y a beaucoup d'erreurs 499 et 500. Que puis-je faire d'autre pour résoudre ce problème? Ajouter try-catch à une autre partie du programme ou à autre chose?

Répondre

0

Vous devez répondre 200 OK sur le webhook, sinon le télégramme essaie d'envoyer le message encore et encore et encore.

Vous devez attraper toutes les exceptions et répondre 200 OK à chaque demande.

Dans votre fait partie du code que vous pouvez utiliser:

try 
     { 
      return \Telegram::sendMessage([ 
       'chat_id' => $chatid, 
       'text' => $report_data, 
      ]); 
     } 
+0

vous dire, que son try-catch correct que j'ajouté (en question)? – sandy

+0

@sandy, vous pouvez le faire, mais le plus important suffit de renvoyer 200 réponse OK. Vous pouvez ajouter 'return response() -> json (['succes' => true])' ou quelque chose comme ça à la et de la méthode du contrôleur –