Webhookのエラーの原因と統計情報を確認する

Messaging APIでは、Webhookの送信におけるエラーの原因と統計情報を確認できる機能を提供しています。ボットサーバー側の不具合などによりWebhookを受け取ることができなかった場合において、Webhookの送信状況を把握するときなどに役立ちます。

ボットサーバーからエラーが返ってくるとエラーの統計情報で表示されます

エラーの統計情報を有効にする

エラーの統計情報の表示は、初期設定では無効になっています。エラーの統計情報を表示するには、LINE Developersコンソールより次の手順を行います。

  1. エラーの統計情報を表示したいチャネルの設定画面を開く
  2. Messaging API設定]タブをクリックする
  3. Webhookの利用]をオンにする
  4. エラーの統計情報]をオンにする

以上により、エラーの統計情報を表示できます。統計情報を確認するには、[統計情報]タブに移動し、ドロップダウンより「エラー」を選択してください。表示されるエラーの、日付や時刻の基準となるタイムゾーンはUTC+9です。

エラーの統計情報

Webhook URLを検証した際のリクエストはエラーの統計情報に含まれません

エラーの統計情報には実際に送信を試みたWebhookのみが表示されます。Webhook URLを検証した際の疎通確認用のリクエストは成功、失敗にかかわらずエラーの統計情報には含まれません。

エラーが発生した原因を確認する

エラーの統計情報では、エラーが発生した原因とその詳細を確認できます。原因には、次の4種類があります。

原因説明
could_not_connectLINEプラットフォームからボットサーバーに対してWebhookを送信しようとしましたが、ボットサーバーに正常に接続できませんでした。詳しくは、「原因が「could_not_connect」の場合」を参照してください。
request_timeoutLINEプラットフォームからボットサーバーに対してWebhookを送信しましたが、ボットサーバーから2秒以内にレスポンスが返されませんでした。詳しくは、「原因が「request_timeout」の場合」を参照してください。
error_status_codeLINEプラットフォームからボットサーバーに対してWebhookを送信しましたが、ボットサーバーからHTTPステータスコード200番台以外のレスポンスが返されました。詳しくは、「原因が「error_status_code」の場合」を参照してください。
unclassified上記に分類できない、不明なエラーが発生しました。詳しくは、「原因が「unclassified」の場合」を参照してください。

エラーの詳細を確認する

エラーが発生した原因ごとの詳細は、次のとおりです。

原因が「could_not_connect」の場合

LINEプラットフォームからボットサーバーに対してWebhookを送信しようとしたが、ボットサーバーに正常に接続できなかった場合、原因はcould_not_connectになります。この場合における詳細は次のとおりです。

詳細説明
Connection failedボットサーバーへの接続に失敗しました。
Connection failed (received GOAWAY)ボットサーバーへの接続時に、接続が拒否されました。
Connection failed (session closed)ボットサーバへの接続が予期せず終了されました。
Connection timeoutボットサーバーへの接続が一定時間内に完了しませんでした。
DNS Query timeoutWebhook URLの名前解決を行いましたが、一定時間内に名前解決を完了できませんでした。
Invalid URL syntax不正なWebhook URLが指定されています(RFC違反等)。
Session protocol negotiation failureボットサーバーへ接続しましたが、プロトコルネゴシエーションが失敗しました。
No SSL/TLS recordボットサーバーの応答がSSL/TLSで暗号化されていません。
TLS handshake failureボットサーバーへ接続しましたが、TLSハンドシェイクが失敗しました。ボットサーバーが「Webhook送信元のSSL/TLS仕様」に対応しているか確認してください。
Unknown hostWebhook URLに指定されたホストが見つかりませんでした。

原因が「request_timeout」の場合

LINEプラットフォームからボットサーバーに対してWebhookを送信したが、LINEプラットフォームがレスポンスを受け取れなかった、または送信が途中で失敗した場合、原因はrequest_timeoutになります。この場合における詳細は次のとおりです。なお、ボットサーバー側ではWebhookが正常に受信できている可能性があります。

詳細説明
Request timeoutボットサーバーに対してWebhookを送信しましたが、一定期間内にレスポンスが返されませんでした。

原因が「error_status_code」の場合

原因がerror_status_codeの場合、詳細にはHTTPステータスコードが入ります。

原因が「unclassified」の場合

分類できないエラーが発生した場合、原因はunclassifiedになります。この場合における詳細は次のとおりです。

詳細説明
Session closed unexpectedlyボットサーバーに対してWebhookを送信しましたが、接続が予期せず途中で切断されました。
Stream closed unexpectedlyボットサーバーに対してWebhookを送信しましたが、ストリームが予期せず途中で切断されました。
Unclassified webhook dispatch error分類できない想定外のエラーが発生しました。

エラーに備えてWebhookの再送を有効にしておく

あらかじめWebhookの再送を有効にしておくことで、エラーの発生時にWebhookが再送されます。詳しくは、「受け取りに失敗したWebhookを再送する」を参照してください。