Webhookのエッジケースと推奨事項
receivedイベントとupdatedイベントの順序に関するヒントと、途中でWebhookを有効にした場合の対処法です。
リクエストがすでに存在する状態でWebhookを有効にする
一部のリクエストが届いた後にWebhookを有効にすると、対応するprivacy_request.receivedがないままprivacy_request.updatedイベントを受信することがあります。該当するリクエストは手動で修正するか、処理中のリクエストが落ち着いてから新しいリクエストの記録を開始してください。過去のリクエストのWebhookをOptacyから再送してほしい場合は、お問い合わせください。
receivedより先にupdatedが届く場合
受信直後にprivacy_request.updatedが届くことがあり(例:MP3や文字起こしが利用可能になったとき)、privacy_request.receivedより先に到着する場合があります。
推奨するパターン:
privacy_request.receivedを受信したときに、プライバシーリクエストのレコードを作成します。privacy_request.updatedからの更新は、署名のタイムスタンプを使って適用します(最新の状態を保持します)。
先にprivacy_request.updatedを受信した場合は、200以外のレスポンス(例:PrivacyRequestNotFoundエラー)を返してください。Optacyが約30分後に自動的に再試行します。まれなケースですが、発生した場合は次の方法も検討できます。
- Service Codeなどの親レコードでロックを使用する
- 最新のタイムスタンプに基づいてupsertする
- 失敗した更新をキューに入れ、receivedイベントが届いた後に自社側で再試行する