Zonos 統合に関するリアルタイムのイベント通知を取得します。
Webhook は、特定のイベントが発生するたびに、Zonos が外部システムに事前に通知する方法を提供します。サブスクライブされたイベントが発生すると、Zonos は指定した Webhook URL に HTTP POST リクエストを送信します。リクエスト本文にはイベントの詳細が含まれるため、システムはイベントをプログラムで処理できるようになります。
Webhook は、Zonos を他のプラットフォームと統合し、自動化されたワークフローをトリガーし、システム間でリアルタイムでデータの同期を維持するのに役立ちます。たとえば、Webhook を使用して次のことができます。
使用可能なすべての Webhook タイプは、WebhookType 列挙型に含まれています。それぞれのペイロードの例は、イベントタイプ ガイドにあります。
WebhookType
API 経由で Webhook を作成するには:
mutation WebhookCreate($input: WebhookCreateInput!) {
webhookCreate(input: $input) {
id
url
type
status
secret
headers {
key
}
Important: Webhookを作成する際は secret の値を必ず保存してください。この値はここでのみ返され、Webhookの署名を検証する際に必要になります。詳しくは、下記のWebhookの署名を検証するを参照してください。
API 経由で既存の Webhook を編集するには:
mutation WebhookUpdate($input: WebhookUpdateInput!) {
webhookUpdate(input: $input) {
Zonos が送信するすべての Webhook リクエストには zonos-signature ヘッダーが含まれており、リクエストが実際に Zonos から送信されたこと、および転送中にペイロードが改ざんされていないことを確認できます。
zonos-signature
ヘッダーの値は次の形式です。
timestamp=<unix-timestamp-ms>,hmac=<base64-encoded-signature>
timestamp
hmac
リクエストを検証するには:
const crypto = require('crypto');
function verifyZonosWebhook(rawBody, signatureHeader, secret) {
const [timestampPart, hmacPart] = signatureHeader.split(',');
const receivedHmac = hmacPart.split('=')[1];
const expectedHmac = crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('base64');
const receivedBuffer = Buffer.from(receivedHmac);
const expectedBuffer = Buffer.from(expectedHmac);
if (receivedBuffer.length !== expectedBuffer.length) {
return false;
return crypto.timingSafeEqual(receivedBuffer, expectedBuffer);
Note: Webhook にカスタムヘッダーを設定している場合、それらのヘッダーは zonos-signature と共にすべてのリクエストにそのまま含まれます。
API 経由で Webhook ログを表示するには:
query WebhookLogs(
$first: Int
$after: String
$filter: WebhookLogsFilterInput
) {
webhookLogs(first: $first, after: $after, filter: $filter) {
edges {
node {
createdAt
responseStatus
WebhookCreateInput WebhookLogsFilterInput WebhookUpdateInput
webhookCreate webhookUpdate
Webhooks
Webhook を使用してイベントをリッスンする
Zonos 統合に関するリアルタイムのイベント通知を取得します。
Webhook は、特定のイベントが発生するたびに、Zonos が外部システムに事前に通知する方法を提供します。サブスクライブされたイベントが発生すると、Zonos は指定した Webhook URL に HTTP POST リクエストを送信します。リクエスト本文にはイベントの詳細が含まれるため、システムはイベントをプログラムで処理できるようになります。
Webhook は、Zonos を他のプラットフォームと統合し、自動化されたワークフローをトリガーし、システム間でリアルタイムでデータの同期を維持するのに役立ちます。たとえば、Webhook を使用して次のことができます。
Webhook タイプ
使用可能なすべての Webhook タイプは、
WebhookType列挙型に含まれています。それぞれのペイロードの例は、イベントタイプ ガイドにあります。Webhook の作成
API 経由で Webhook を作成するには:
mutation WebhookCreate($input: WebhookCreateInput!) {webhookCreate(input: $input) {idurltypestatussecretheaders {key}}}Webhook の詳細を編集する
API 経由で既存の Webhook を編集するには:
mutation WebhookUpdate($input: WebhookUpdateInput!) {webhookUpdate(input: $input) {idurltypestatus}}Webhook の署名を検証する
Zonos が送信するすべての Webhook リクエストには
zonos-signatureヘッダーが含まれており、リクエストが実際に Zonos から送信されたこと、および転送中にペイロードが改ざんされていないことを確認できます。ヘッダーの値は次の形式です。
timestamp— リクエストが署名された時刻(Unix エポックミリ秒)。hmac— Webhook のシークレットをキーとして計算された、生の JSON リクエスト本文の HMAC-SHA256 署名(Base64 エンコード済み)。リクエストを検証するには:
zonos-signatureヘッダーからtimestampとhmacの値を解析します。hmacの値と一定時間比較で照合し、一致しない場合はリクエストを拒否します。timestampが数分以上前のリクエストを拒否し、キャプチャされたリクエストのリプレイを防ぐこともできます。Zonos 自体は配信のタイムウィンドウを強制しないため、このチェックを行うかどうかはお客様次第です。const crypto = require('crypto');function verifyZonosWebhook(rawBody, signatureHeader, secret) {const [timestampPart, hmacPart] = signatureHeader.split(',');const receivedHmac = hmacPart.split('=')[1];const expectedHmac = crypto.createHmac('sha256', secret).update(rawBody).digest('base64');const receivedBuffer = Buffer.from(receivedHmac);const expectedBuffer = Buffer.from(expectedHmac);if (receivedBuffer.length !== expectedBuffer.length) {return false;}return crypto.timingSafeEqual(receivedBuffer, expectedBuffer);}Webhook ログを表示する
API 経由で Webhook ログを表示するには:
query WebhookLogs($first: Int$after: String$filter: WebhookLogsFilterInput) {webhookLogs(first: $first, after: $after, filter: $filter) {edges {node {idtypeurlcreatedAtresponseStatus}}}}WebhookCreateInput WebhookLogsFilterInput WebhookUpdateInput
webhookCreate webhookUpdate
このページは役に立ちましたか?