← 全記事
ガイド

Telegram getWebhookInfo:未配信の更新と配信エラーを診断する

Telegram webhook の更新が止まったように見えたら、設定を変更する前に getWebhookInfo を確認しましょう。pending_update_count は配信待ちの更新数であり、アプリケーションの未完了ジョブ数ではありません。last_error_datelast_error_message、受信側のログと合わせて判断します。滞留がゼロでも業務処理の完了は保証されず、エラー記録が残っていても障害が継続しているとは限りません。

要点

  • まず現在の webhook を維持したまま診断します。受信方式の切り替えは別の作業です。
  • 単一の値ではなく、複数回の観測結果とエラー時刻を比較します。
  • リクエスト受信、永続保存、業務処理を別々に確認します。
  • 監視画面を正常に見せるために未配信の更新を破棄しないでください。

getWebhookInfo で分かること

Telegram Bot API 公式リファレンスによると、getWebhookInfo はパラメーター不要で、WebhookInfo オブジェクトを返します。信頼できる環境で既存の Bot API クライアントから呼び出してください。bot token や機密情報を含む webhook URL を共有ログやスクリーンショットに残さないようにします。

フィールド公式の意味診断での使い方
url設定された webhook URL。未設定なら空意図した環境の宛先か確認
pending_update_count配信待ちの更新数滞留の増減を比較
last_error_date任意。直近の webhook 配信エラーの Unix 時刻修正前のエラーか確認
last_error_message任意。そのエラーの可読説明調査先を絞る。固定のエラー列挙値として扱わない
ip_address任意。現在使用中の webhook IP アドレス想定する公開宛先と比較
last_synchronization_error_date任意。Telegram データセンターとの更新同期で発生した直近のエラー時刻受信側への接続失敗とは分けて扱う

URL が設定されていることは、到達できる証明ではありません。任意のエラーフィールドがないことも、CRM やワーカーの処理完了を意味しません。

url が空なら、この bot が本来 webhook を使う構成か確認します。受信方式を変更する必要がある場合は、別記事の getUpdates と setWebhook の切り替え手順を参照してください。本記事は既存 webhook の配信経路を診断するものです。

滞留数とエラー時刻を一緒に読む

最初に基準となる状態を記録し、bot が受信できるはずの管理されたテストメッセージを送ってから、再度状態を確認します。観測時刻は運用メモに記録し、Telegram の返却フィールドとして扱わないでください。

観測結果考えられる状況次の確認
滞留数が増え、配信エラー時刻も更新される観測中も配信が失敗している公開入口、TLS、ルーティング、HTTP 応答ログ
滞留数が減り、エラー時刻は古いまま配信が回復している可能性テスト更新の保存と処理
滞留数はゼロだが業務処理が動かない数値だけでは原因を特定できない保存先、内部キュー、ワーカー、振り分け規則
滞留数が残るが新しいエラーはない単一の観測では判断できない再観測と受信トラフィックの比較
同期エラー時刻が更新されるTelegram の更新同期に関するエラー証拠を保存。証明書変更で直ると決めつけない

これは調査の分岐であり、自動診断ではありません。滞留の減少だけでも完全復旧は確認できません。Telegram は更新を 24 時間より長く保持しないと説明しています。長時間の中断は、後から無制限に回収できるキューではなく、データ欠落の可能性がある期間として扱います。

リクエストの経路を順に確認する

最新のエラー説明で範囲を絞り、自分たちのログで裏付けます。

  1. 公開宛先: 本番のホスト名とパスを照合し、DNS と入口のルーティングを確認します。ip_address があれば比較します。
  2. TLS: 証明書の有効性、ホスト名の一致、実際に提供される証明書チェーンを確認します。公式 webhook ガイドに証明書の確認方法があります。設定不備を隠すために検証を弱めないでください。
  3. HTTP 処理: アプリだけでなく、公開入口が返したステータスを確認します。プロキシがハンドラー実行前に応答することもあります。ブラウザーでページが開いても webhook の POST 経路が動く証明にはなりません。
  4. 永続保存: 更新が確実に保存されたか確認します。推奨構成は、リクエストを認証し、永続的な受信ボックスやキューへの保存を確定してから応答することです。時間のかかる外部処理は後段へ回します。
  5. 業務処理: 保存された更新をワーカーまで追跡します。重複配信で副作用が繰り返されないよう、冪等に処理します。

Telegram は 2XY 以外の応答で失敗した webhook リクエストを再試行し、妥当な試行回数で打ち切ると説明しています。固定の再試行時刻表を公開しているわけではありません。推測した間隔を復旧保証の根拠にしないでください。

滞留を削除せずに復旧を確認する

特定した問題を修正したら、再びテストメッセージを送り、受信リクエスト、永続化された記録、期待する後続動作まで確認します。滞留が減るか、新しい配信エラーが発生するかも観測します。

drop_pending_updates を修復の代わりに使わないでください。公式の意味は未配信更新の破棄であり、TLS やワーカーの修正ではありません。また max_connections を無条件に増やさないでください。これは webhook の同時接続数であり、保存・処理能力を保証する設定ではありません。

説明できない中断期間は照合作業の対象として残します。HTTP 応答による確認は、その境界での配信成功であって、業務全体の成功ではありません。

UnifyPort の役割と限界

getWebhookInfo の対象は Telegram Bot API webhook です。UnifyPort の受信側を調べる機能ではなく、別のアカウントで bot の未配信更新を回収することもできません。受信主体の選択については Telegram Bot API webhook と統一受信 webhook の比較をご覧ください。

UnifyPort の非公式インターフェースは message.received などの独立したイベント契約を使います。webhook 配信リファレンスX-Device-Event-Id、応答、再試行の仕様があります。signing_secret を設定した場合は、X-Device-Timestamp、ピリオド、未加工のリクエスト本文を連結した内容に対する HMAC-SHA256 で X-Device-Signature を検証します。

LINE と Telegram を同じ業務キューへ集約する場合でも、この配信経路の監視と Bot API の状態は分けてください。UnifyPort にはメッセージ履歴を読む REST API や欠落したペイロードの再配信保証はありません。永続的な受信保存は受信側の責任です。bot が必要な製品では公式 Bot API を使います。

FAQ

pending_update_count は未読メッセージ数ですか?

いいえ。配信待ちの更新数です。チャットの未読状態でも、アプリの未完了ジョブ数でもありません。

last_error_message があれば、まだ障害中ですか?

必ずしもそうではありません。直近の配信エラーの説明なので、時刻、後続の観測、管理されたエンドツーエンドテストで確認します。

滞留がゼロになれば対応を終了できますか?

それだけでは不十分です。保存と処理を確認し、Telegram の保持期間を超えた可能性のある中断も調査します。

次のステップと出典

既存 bot では、設定変更より先に getWebhookInfo とテスト更新の経路を確認しましょう。接続済みメッセージアカウントの受信を設計する場合は UnifyPort 配信契約から始めてください。

公式資料の確認日:2026-09-18。

UnifyPort API

メッセージ連携を安定したプロダクトパイプラインへ。

まずは 1 つの API で送信を始め、標準イベントですべての inbound メッセージを業務システムへ戻しましょう。