ja
3 分で読了 Integrations

Webhooks: HMAC署名、再配信、ベストプラクティス

Webhookで文字起こし結果を受け取る方法: HMAC-SHA256署名、X-VPT-SignatureヘッダーとX-VPT-Eventヘッダー、バックオフ付き再配信6回。

文字起こしが完了したかどうかをAPIへ問い合わせ続ける代わりに、リクエストでwebhook_urlを指定すると、VoxScriberはジョブが完了したときに(成功でもエラーでも)あなたのサーバーへPOSTを送信します。これは推奨される連携方法です:APIリクエストの消費が少なく、結果がすぐに届きます。

仕組み

  1. webhook_url(必須でhttps)を指定して音声を送信します。
  2. 処理が完了すると、結果を添えてこのURLへPOSTを送信します。
  3. サーバーが受信を確認するために2xxステータスで応答します。

各配信には2つの識別ヘッダーが含まれます:

ヘッダー内容
X-VPT-Eventイベントの種類(完了、失敗など)
X-VPT-Signature配信のHMAC-SHA256署名

署名を確認せずにコンテンツを信頼しないでください:受信した本文のHMAC-SHA256を計算し、X-VPT-Signatureヘッダーの値と比較します。有効な署名がないリクエストは破棄してください。誰でもあなたのエンドポイントURLを知り得るためです。

自動再配信

エンドポイントがダウンしているか、応答が遅すぎる場合、再試行します。

  • 試行ごとのタイムアウト: 15秒。
  • 最大試行回数: 6回。
  • 試行間の待機時間(バックオフ): 5分 → 30分 → 2時間 → 6時間 → 24時間。

すべての配信は当社側に永続化されるため、何かが失われた場合はサポートと履歴を監査できます。

Webhookにはすぐに200で応答し、コンテンツを非同期(キュー、ジョブ)で処理してください。処理に15秒以上かかると、配信は失敗と見なされて再配信キューに入ります。同じイベントを2回受信する可能性があるため、イベントは冪等に処理してください。

最終結果は必ず届きます

スタックしたジョブも黙って消えません:

  • キュー内で10分以上停止したジョブは自動的に再キューイングされます。
  • 処理中で60分以上スタックしたジョブは失敗とマークされ、あなたのURLへエラーwebhookが送信されます。

つまり、送信された各音声について、成功または失敗の最終コールバックがあなたのシステムに届きます。

FAQ

サーバーがダウンしていました。結果は失われますか?

おそらく失われません。約24時間にわたって最大6回試行されます。すべて失敗した場合も配信履歴は記録されているので、再処理についてサポートにご連絡ください。

http(TLSなし)のURLを使えますか?

いいえ。セキュリティのため、httpsURLのみ受け付けています。リダイレクトはなく、内部/プライベートアドレスはブロックされます。

成功のwebhookとエラーのwebhookはどう見分けますか?

X-VPT-Eventヘッダーがイベントの種類を識別し、配信本文の内容でも判断できます。

エンドポイントは何を返す必要がありますか?

15秒以内の任意の2xxステータスです。それ以外のステータス(またはタイムアウト)は失敗と見なされ、再配信が行われます。

関連記事

解決しない場合は チケットを開く — チームが迅速に対応します。