Webhookのサポートを積極的に拡大しています。新機能: 指数バックオフによる自動再試行 — 失敗した配信は30分間に最大5回再試行されます。近日公開予定:
- チーム全体のデフォルトWebhook URL
- ペイロード検証のための暗号署名
概要
Webhookは、長時間実行される操作が完了したときに、リアルタイムのHTTP POST通知をサーバーに送信します。ステータスをポーリングする代わりに、アプリケーションは即時の更新を受け取ります。使用例
非同期処理
バッチやクロールが完了したときに通知を受け取り、ポーリングを避ける
パイプラインのトリガー
データが準備できたときに自動的に下流の処理をトリガーする
アラート
完了時にSlack、メール、その他のシステムにアラートを送信する
データ同期
データベースをOlostepの結果と同期させる
サポートされているイベント
batch.completed
batch.completed
バッチの処理が完了したときに発生します(すべてのアイテムが完了または失敗)。
crawl.completed
crawl.completed
クロールが完了し、発見されたすべてのページが処理されたときに発生します。
Webhookの設定
リソースを作成するときにwebhookを渡します。このURLが完了通知を受け取ります。
パラメータ名: 標準のパラメータは
webhookです。後方互換性のために、webhook_urlもエイリアスとして受け入れられます。Webhookペイロード
すべてのWebhookペイロードは統一されたエンベロープ構造に従います:エンベロープフィールド
| フィールド | 説明 |
|---|---|
id | イベントID — すべての再試行で同じ |
object | イベントタイプ(例: event.batch.completed) |
timestamp | この配信試行が送信された時刻(エポックミリ秒) |
delivery_attempt | 現在の試行 / 最大試行回数(例: 1/5, 3/5) |
data | 実際のリソースデータ(APIレスポンスと同じ形式) |
再試行の動作
失敗したWebhook配信は、30分間のウィンドウで指数バックオフを使用して自動的に再試行されます:| 試行 | 試行前の遅延 | 累積時間 |
|---|---|---|
| 1 | 即時 | 0分 |
| 2 | 約2分 | 約2分 |
| 3 | 約4分 | 約6分 |
| 4 | 約7分 | 約13分 |
| 5 | 約15分 | 約28分 |
リクエストごとのタイムアウト: 30秒
成功と見なされる条件
エンドポイントは30秒以内に2xxステータスコードを返す必要があります。それ以外のレスポンスは再試行をトリガーします。
| レスポンス | 結果 |
|---|---|
200 OK | ✅ 配信済み |
201 Created | ✅ 配信済み |
301 Redirect | ❌ 再試行(リダイレクトは追跡しません) |
400 Bad Request | ❌ 再試行 |
500 Server Error | ❌ 再試行 |
| タイムアウト (>30s) | ❌ 再試行 |
| 接続拒否 | ❌ 再試行 |
ベストプラクティス
迅速に応答し、非同期で処理する
迅速に応答し、非同期で処理する
200 OKを即座に返し、Webhookを非同期で処理します。処理が30秒以上かかる場合、再試行されるため、重複配信が発生します。冪等性のあるハンドラを実装する
冪等性のあるハンドラを実装する
idフィールドを使用して重複を排除します。処理済みのイベントIDを保存し、重複をスキップします。Webhookの受信をログに記録する
Webhookの受信をログに記録する
デバッグのためにすべてのWebhook受信をログに記録します。イベントID、タイムスタンプ、処理結果を含めます。
HTTPSエンドポイントを使用する
HTTPSエンドポイントを使用する
常にWebhookエンドポイントにはHTTPSを使用してください。HTTPエンドポイントは盗聴や中間者攻撃に対して脆弱です。
トラブルシューティング
Webhookを受信しない
Webhookを受信しない
- リクエストに
webhookパラメータが含まれていることを確認する - エンドポイントが公開アクセス可能であることを確認する(localhostではない)
- サーバーログで受信リクエストを確認する
2xxステータスコードを返していることを確認する
重複したWebhookを受信する
重複したWebhookを受信する
これは再試行中に予想される動作です。
idフィールドを使用して冪等性のある処理を実装します:Webhookがタイムアウトする
Webhookがタイムアウトする
エンドポイントは30秒以内に応答する必要があります。Webhookを非同期で処理します:
近日公開予定
チームデフォルトURL
アカウント設定でデフォルトのWebhook URLを設定します。すべてのリクエストはこのURLを使用しますが、上書き可能です。
署名検証
OlostepからのWebhookペイロードであることを確認するための暗号署名(HMAC-SHA256)。
これらの機能への早期アクセスをご希望ですか?info@olostep.comまでご連絡いただくか、Slackコミュニティに参加してください。