Webhook API reference
Webhookは、トピック上のメッセージを消費するための追加の方法を提供します。ウェブフックが作成されると、トピックにアタッチされます。 このトピックにメッセージが公開されると、アウトバウンド http コールが Webhook コールバック url に POST されます。この Webhook に関連付けられたエンドポイントは、Momento がリクエストを POST できるようにパブリックにアクセスできる必要があります。リクエストを 受信を確認するには、元のリクエストに対して空の HTTP 2xx レスポンスを返す必要があります。もし5 秒以内に確認が取れない場合は、メッセージを削除してタイムアウトとします。
Webhook に送信されたすべてのメッセージは、トピックへのサブスクリプションがあれば受信可能です。
Put Webhook API
指定された webhook で新しい webhook を生成します。
Name | Type | Description |
---|---|---|
webhook | Webhook | 作成するウェブフック・オブジェクト |
メソッド・レスポンス・オブジェクト
- Success
secretString
: 文字列 - ウェブフックの署名用シークレット
- Error
具体的な情報はレスポンスオブジェクトを参照してください。
Webhookはリアルタイムの更新と通知に不可欠です。成功時に提供される secretString
を安全に保存してください。
Example
const webhookId: WebhookId = {
cacheName: 'exampleCache',
webhookName: 'exampleWebhook',
};
const result = await webhookClient.putWebhook(webhookId.cacheName, webhookId.webhookName, {
destination: new PostUrlWebhookDestination('https://example.com/webhook'),
topicName: 'exampleTopic',
});
if (result instanceof PutWebhook.Success) {
console.log('Webhook created successfully. Secret:', result.secret);
} else {
console.error('Error creating webhook:', result.error.message);
}
List Webhook API
特定のキャッシュのウェブフックの一覧を取得します。
Name | Type | Description |
---|---|---|
cache | string | The name of the cache to list webhooks for. |
>メソッド・レスポンス・オブジェクト
- Success
webhooks
: Webhook の配列 - 指定したキャッシュのウェブフックのリスト
- Error
具体的な情報はレスポンスオブジェクトを参照してください。
リストウェブフックAPIは、最新のウェブフックのリストを取得するために必要な頻度で呼び出すことができます。しかし 不要な API 呼び出しを減らし、パフォーマンスを向上させるために、結果をキャッシュすることを検討してください。
Example
const cacheName: string = 'exampleCache';
const result = await webhookClient.listWebhooks(cacheName);
if (result instanceof ListWebhooks.Success) {
console.log('Webhooks retrieved successfully:', result.webhooks);
} else {
console.error('Error retrieving webhooks:', result.error.message);
}
Delete Webhook API
指定した識別子のウェブフックを削除します。
Name | Type | Description |
---|---|---|
id | WebhookId | 削除するウェブフックの一意な識別子 |
メソッド・レスポンス・オブジェクト
- Success
- 成功の場合、追加データはありません。
- Error
具体的な情報はレスポンスオブジェクトを参照してください。
Webhook が削除されると、その Webhook はアクティブではなくなり、削除された Webhook への受信リクエストは無視されます。
Example
const webhookId: WebhookId = {
cacheName: 'exampleCache',
webhookName: 'exampleWebhook',
};
const result = await webhookClient.deleteWebhook(webhookId.cacheName, webhookId.webhookName);
if (result instanceof DeleteWebhook.Success) {
console.log('Webhook deleted successfully');
} else {
console.error('Error deleting webhook:', result.error.message);
}
Get Webhook Secret API
特定のウェブフックに関連付けられた秘密の文字列を取得します。
Name | Type | Description |
---|---|---|
id | WebhookId | シークレットを取得するウェブフックの一意な識別子 |
メソッド・レスポンス・オブジェクト
- Success
secret
: 文字列 - ウェブフックの署名用シークレットwebhookName
: string - ウェブフックの名前cacheName
: string - ウェブフックに関連付けられたキャッシュの名前
- Error
具体的な情報はレスポンスオブジェクトを参照してください。
署名シークレットは、受信するウェブフック・リクエストを検証するために不可欠です。取得した取得したシークレットを安全に保管・管理するようにしましょう。
Example
const webhookId: WebhookId = {
cacheName: 'exampleCache',
webhookName: 'exampleWebhook',
};
const result = await webhookClient.getWebhookSecret(webhookId.cacheName, webhookId.webhookName);
if (result instanceof GetWebhookSecret.Success) {
console.log('Webhook secret retrieved successfully:', result.secret);
} else {
console.error('Error retrieving webhook secret:', result.error.message);
}
Rotate Webhook Secret API
ウェブフックに使用されている署名秘密をローテーションします。秘密がローテーションされると、webhook のエンドポイントに送られるすべての新しい POST リクエストは、新しい秘密で署名された 'momento-signature' ヘッダを持つようになります。
Name | Type | Description |
---|---|---|
id | WebhookId | シークレットをローテーションするウェブフックの一意な識別子 |
メソッド・レスポンス・オブジェクト
- Success
secret
: 文字列 - ウェブフックの新しい署名用シークレットwebhookName
: 文字列 - ウェブフックの名前cacheName
: 文字列 - ウェブフックに関連付けられたキャッシュの名前
- Error
具体的な情報はレスポンスオブジェクトを参照してください。
シークレットのローテーションは元に戻せないので、以前のシークレットに対してリクエストを検証しているすべてのウェブフックを更新することが重要です。
Example
const webhookId: WebhookId = {
cacheName: 'exampleCache',
webhookName: 'exampleWebhook',
};
const result = await webhookClient.rotateWebhookSecret(webhookId.cacheName, webhookId.webhookName);
if (result instanceof RotateWebhookSecret.Success) {
console.log('Webhook secret rotated successfully:', result.secret);
} else {
console.error('Error rotating webhook secret:', result.error.message);
}
Webhook object
Webhook
オブジェクトには、Webhook を作成するために必要な情報が含まれています。
Name | Type | Description |
---|---|---|
id | WebhookId | ウェブフックの一意な識別子 |
destination | WebhookDestination | ウェブフックペイロードの送信先。パブリックアクセス可能でなければなりません |
topicName | string | Webhook が購読されているトピックの名前 |
WebhookId object
WebhookId` オブジェクトはウェブフックの一意な識別子を表します。
Name | Type | Description |
---|---|---|
cacheName | string | ウェブフックに関連付けられたキャッシュの名前 |
webhookName | string | ウェブフックの名前 |
WebhookDestination object
WebhookDestination
オブジェクトは、Webhook ペイロードの送信先に関する情報を保持します。
Name | Type | Description |
---|---|---|
postUrl | string | HTTP POSTを使用してペイロードを送信するURL |
FAQ
受信したWebhookリクエストを検証するには?
ポストのボディ構造は?
{
cache: string;
topic: string;
event_timestamp: number;
publish_timestamp: number;
topic_sequence_number: number;
token_id: string; // is an empty string if the message was published with an api key that does not contain a token_id
text: string; // this is the message that was published
}
Webhookのサブスクリプションに失敗した場合はどうすればよいですか?
WebhookのURLが公開されており、有効であることを確認してください。よくある問題としては、間違ったキャッシュ名やトピック名、あるいはpostURL
の問題などです。
ここにない質問は、Discordサーバーまでご連絡ください。サポートチャンネルで専門家にお尋ねください。