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

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

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

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

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

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

以上により、エラーの統計情報を表示できます。統計情報を確認するには、[統計情報]タブに移動し、ドロップダウンより「エラー」を選択してください。

エラーの統計情報

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

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

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

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

原因 説明
could_not_connect LINEプラットフォームからボットサーバーに対してWebhookを送信しようとしましたが、ボットサーバーに正常に接続できませんでした。詳しくは、「原因が「could_not_connect」の場合」を参照してください。
request_timeout LINEプラットフォームからボットサーバーに対してWebhookを送信しましたが、ボットサーバーから2秒以内にレスポンスが返されませんでした。詳しくは、「原因が「request_timeout」の場合」を参照してください。
error_status_code LINEプラットフォームからボットサーバーに対して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 timeout Webhook 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 host Webhook 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を再送する」を参照してください。