Webhooks
Webhooksを使用すると、APIタスクが完了またはステータスが変化した際に、Meshyからリアルタイムの更新を受け取ることができます。設定が完了すると、Meshyは指定したURLにjson形式のイベントペイロードをPOSTします。
Webhooksを作成する理由
Webhooksを使用することには、特にAPIタスクのステータスを自動的に確認する点でいくつかの利点があります。Webhooksは、タスクのステータス更新を取得するためにAPIを継続的にポーリングするよりも、労力とコストを削減できます。また、Webhooksはほぼリアルタイムの更新を可能にし、APIポーリングよりも最終的にスケーラビリティに優れています。これにより、特に常にポーリングを行っている場合、レート制限をより適切に管理できるようになります。
セットアップと設定
Webhooksを有効にするには、Developer Platform内のWebhooksページを開き、「Create Webhook」ボタンをクリックしてください。Webhooksを受信したいhttps URLを入力し、Webhookを有効にすることで、Meshyからのタスク更新を自動的に受信できるようになります。 1つのMeshyアカウントにつき、最大5つのアクティブなWebhooksを設定できます。Webhookが有効になると、すべてのAPIタスクのステータス更新が自動的にペイロードURLへ送信されます。セキュリティ上の理由により、現時点ではhttps URLへのWebhook送信のみをサポートしています。ローカルテストを設定したい場合は、以下のセクションをご覧ください。
Webhook配信の要件
Webhookが正常に機能し、イベントを継続して受信するためには、以下の条件が必要です。
- サーバーは400未満のHTTPステータスコード(例:
200 OK、202 Accepted)を返す必要があります。 >= 400のステータスコードを含むレスポンスは、配信失敗として扱われます。- 連続した複数回の失敗が発生すると、以下のような事態が起こる可能性があります。
- progressの更新が遅延したり、順序どおりに届かなくなる
- 繰り返しの試行後にWebhookが自動的に無効化される(自動無効化ポリシーを参照)
ヒント: 後続の処理が非同期で行われる場合でも、Webhookペイロードを検証・保存した後は、必ず成功レスポンスを返してください。
タスクの最終イベントが、通常かかる時間のおよそ2倍経過しても届かない場合は、GETエンドポイントを使用してタスクを取得してください。通常の処理時間と待機時間については、タスクのライフサイクルをご覧ください。
ローカルテスト用のWebhook転送
通常httpアドレスで動作するWebhookコードをローカルでテストしたい場合、WebhookプロキシURLを使用して、Webhooksをお使いのコンピューターやコードスペースへ転送できます。以下はsmee.ioを使用した推奨手順ですが、WebhookプロキシURLを生成できるものであれば、任意のサービスを使用して構いません。
WebhookプロキシURLを取得する:
- ブラウザでhttps://smee.io/にアクセスします
- 「Start a new channel」をクリックします
- 「Webhook Proxy URL」の下に表示されている完全なURLをコピーします。このURLは、以降のセットアップ手順で使用します。
Webhooksを転送する:
- smee-clientがまだインストールされていない場合は、ターミナルで以下のコマンドを実行してください。
npm install --global smee-client
- smee.ioから転送されたWebhooksを受信するには、ターミナルで以下のコマンドを実行します。
WEBHOOK_PROXY_URLを、先ほど取得したWebhookプロキシURLに置き換えてください。
smee --url WEBHOOK_PROXY_URL --path /webhook --port 3000
以下のような出力が表示されるはずです。ここでWEBHOOK_PROXY_URLは、あなたのWebhookプロキシURLです。
Forwarding WEBHOOK_PROXY_URL to http://127.0.0.1:3000/webhook
Connected WEBHOOK_PROXY_URL
- Webhookのテストを行っている間は、このプロセスを実行したままにしておいてください。Webhooksの転送を停止したい場合は、Ctrl+Cを入力してください。
パスが/webhookで、ポートが3000であることに注意してください。これらの値は、後ほどWebhook配信を受信するための独自のコードを設定する際に役立つことがあります。
Webhookを作成する:
これで、WebhooksページでWebhookプロキシURLを使用して新しいWebhookを作成できます。
サンプルレスポンス
タスクのステータスが変化すると、Meshyは設定したURLへWebhookペイロードをPOSTします。このペイロードには、JSON形式でタスクオブジェクトが含まれています。すべてのタスクオブジェクトのプロパティとペイロードの例についての完全な説明は、以下をご覧ください。