Skip to main content

Webhook

Webhookを使用すると、何かが発生した瞬間にVoiceCheapがサーバーに通知できるため、ポーリングを停止できます GET /v1/translate/{projectId}/status.
配信は1回だけ試行され、再試行はありません。見逃せないイベントについては、ステータスのポーリングも続けてください。

セットアップ

  1. VoiceCheapアカウントでAPIページを開きます。
  2. Webhookで署名シークレットを生成を選びます。whsec_で始まるシークレットは一度だけ表示されるため、コピーしてサーバーに保存してください。
  3. エンドポイント URLにhttpsのURLを入力し、保存を選びます。
以上です。それ以降に開始するすべてのプロジェクトは、そのエンドポイントにイベントを送信します。
Webhook URL はポート 443 の HTTPS を使用し、公開ネットワークアドレスに名前解決される必要があります。認証情報やフラグメントを含む URL、プライベートアドレスや予約済みアドレス、リダイレクトは拒否されます。これはアカウントのエンドポイントとプロジェクトごとの上書き URL の両方に適用されます。
アクション API または MCP から webhooks_get、webhooks_update、webhooks_delete を使用できます。webhooks_create_secret は REST アクション API のみで使用してください。返された署名シークレットは安全に保存してください。MCP では、このアクションの実行も結果のポーリングもできません。

リクエストごとにエンドポイントを上書きする

POST /v1/translateおよびPOST /v1/projectsは、オプションのwebhookUrlフィールドを受け入れます。これは、 そのプロジェクトのアカウントエンドポイントのみを上書きします。ステージングトラフィックを別の場所に送信する場合に便利です。 既存のプロジェクトの送信先は、POST /v1/projects/{projectId}/dubでwebhookUrlを指定して変更することもできます。
署名シークレットは常にアカウントシークレットであり、送信先のみが変更されます。

イベント

文字起こし専用のイベントはありません。プロジェクト作成の応答は文字起こしの完了前に返ります。project.createdは文字起こしが保存された後にのみ送信され、その後でPOST /v1/projects/{projectId}/transcriptから取得できます。

ペイロード

すべての配信は、JSONボディを含むPOSTです:
ペイロードは意図的に軽量化されています。コンテンツそのものについてはREST APIを呼び出してください。

署名の検証

すべての配信には以下のヘッダーが含まれます: 署名は <timestamp>.<raw body> をカバーしているため、配信ごとに異なり、以下の両方を証明します。 リクエストが VoiceCheap から送信されたこと、および転送中に本文が改ざんされていないこと。
配信を信頼する前に署名を検証してください。エンドポイントはパブリックURLであり、署名は 本物の VoiceCheap イベントと、そこに到達する他のあらゆるものとを区別するものです。

応答

2xxステータスで応答して確認してください。10秒以内に回答してください。処理を先に行うのではなく、まず確認の応答を返してから作業を行ってください。 処理を先に行うのではなく、まず確認の応答を返してから作業を行ってください。 2xx以外の応答またはタイムアウトは配信失敗として記録され、現時点では再試行されません。

シークレットのローテーション

APIページでRotateを選択して、新しいシークレットを生成します。以前のシークレットは 直ちに機能しなくなるため、ローテーション後は速やかに新しいシークレットをサーバーにデプロイしてください。 Webhookを削除すると、エンドポイントとシークレットの両方が削除され、配信が停止します。