2017-10-19 5 views
1

I Telegramm bietet mit Laravel und sdk Heute schaff' es gibt ein Problem - die Bot rekursiv die gleiche Nachricht wie diese an den Benutzer sendet nach der Erkennung Problem pictureFehlerbehandlung Telegramm bietet

\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 hinzufügen. In meinen Protokollen gibt es viele 499 und 500 Fehler. Was kann ich noch tun, um dieses Problem zu lösen? Hinzufügen try-catch zu einem anderen Teil des Programms oder etwas anderes?

Antwort

0

Sie müssen 200 OK auf Webhook antworten, sonst versucht Telegramm Nachricht immer wieder und wieder zu senden.

Sie müssen alle Ausnahmen abfangen und 200 OK bei jeder Anfrage antworten.

In Ihrem Teil des Codes können Sie verwenden:

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

Sie meinen, dass der korrekte Try-Catch, die ich (in Frage) hinzugefügt? – sandy

+0

@sandy, Sie können das tun, aber wichtiger, nur 200 OK Antwort zurückgeben. Sie können 'return response() -> json (['success' => true])' oder etwas anderes wie dieses bei der Methode and des Controllers hinzufügen –

Verwandte Themen