Webhook 検出サービス
開発者が GPTBots webhook サービスの可用性を検出すること、および対象 Agent に設定された webhook URL の可用性を検出することをサポートします。
Agent に設定された webhook サービスの可用性を検出する
GPTBots は、開発者が API を通じて対象 Agent に設定されたすべての Webhook URL の可用性を検出することをサポートします。これには「メッセージ送信」および「有人対応サービス-webhook」に設定された webhook url の可用性が含まれます。開発者が本インターフェースを呼び出すと、GPTBots は現在の API Key が属する Agent にすでに設定されているすべての Webhook URL を自動的に検出し、検出対象を別途指定する必要はありません。そして各 Webhook の検出結果をレスポンスで項目ごとに返します。istest フィールドが関係する開発者のすべての Webhook サービスは以下のとおりです。
- メッセージ送信 API が webhook にメッセージを応答する際のリクエストボディにこのフィールドが含まれます。詳細を見る
- 有人対応サービスの会話リクエスト通知およびユーザーメッセージを受信する際のリクエストボディにこのフィールドが含まれます。詳細を見る
開発者の Webhook サービスは、リクエストを受信した際にメッセージボディ内の
istestフィールドを識別する必要があります。istest=trueの場合は可用性テストリクエストであり、実際の業務メッセージとして処理すべきではありません(データベースに保存しない、有人対応サービスをトリガーしないなど)。そして HTTP ステータスコード200を返せば、その Webhook が利用可能であることを示します。
リクエストメソッド
POST
リクエストURL
https://api-${endpoint}.gptbots.ai/v1/webhook/check
リクエスト認証
詳細については API Overview の認証方法の説明をご参照ください。本インターフェースは API Key によって対象 Agent を識別し、その Agent に設定された Webhook を検出します。
リクエスト
リクエスト例
curl -X POST 'https://api-${endpoint}.gptbots.ai/v1/webhook/check' \
-H 'Authorization: Bearer ${API Key}' \
-H 'Content-Type: application/json'
リクエストヘッダー
| フィールド | タイプ | 説明 |
|---|---|---|
| Authorization | Bearer ${API Key} | Authorization: Bearer ${API Key} を使用して呼び出し認証を行います。API キーページでキーを取得し、API Key として使用してください。 |
| Content-Type | application/json | データ形式。値は application/json です。 |
リクエストパラメータ
本インターフェースはリクエストパラメータを渡す必要はありません。GPTBots は現在の API Key が属する Agent にすでに設定されているすべての Webhook URL を自動的に検出します。
レスポンス
レスポンス例
{
"results": [
{
"type": "message",
"component_id": null,
"component_name": null,
"webhook_url": "https://your_domain/webhook/message",
"reachable": true,
"http_status": 200,
"latency_ms": 156
},
{
"type": "human_service",
"component_id": "665d88b03ce2b13cf2d57346",
"component_name": "人工服务-售前",
"webhook_url": "https://your_domain/presale/human/service/conversation/establish",
"reachable": true,
"http_status": 200,
"latency_ms": 188
},
{
"type": "human_service",
"component_id": "665d88b03ce2b13cf2d57347",
"component_name": "人工服务-售后",
"webhook_url": "https://your_domain/aftersale/human/service/conversation/establish",
"reachable": false,
"http_status": 502,
"latency_ms": 3000
}
]
}
成功時のレスポンス
| フィールド | タイプ | 説明 |
|---|---|---|
| results | JSON Array | 検出結果のリスト。その Agent に設定された各 Webhook の検出結果を項目ごとに返します。設定されていない Webhook はリストに表示されません。1つの Agent に複数の有人対応サービス(handoff)コンポーネントが設定されている場合、各コンポーネントがそれぞれ1件の human_service 結果に対応します。 |
| type | string | Webhook タイプ。message:Agent の応答メッセージを受信する Webhook。human_service:有人対応サービスコンポーネントの webhook モードで設定された Webhook。 |
| component_id | string | 有人対応サービス(handoff)コンポーネントの一意の識別 ID。複数の有人対応サービスコンポーネントが設定されている場合の区別に使用します。message タイプの場合は null です。 |
| component_name | string | 有人対応サービス(handoff)コンポーネントの名称。message タイプの場合は null です。 |
| webhook_url | string | 検出対象の Webhook URL。 |
| reachable | boolean | その Webhook が利用可能かどうか。true は利用可能、false は利用不可を表します。 |
| http_status | int | 検出リクエストが返した HTTP ステータスコード。接続失敗またはタイムアウトの場合は null または 0 です。 |
| latency_ms | long | 検出リクエストの所要時間(ミリ秒)。 |
可用性判定の推奨
GPTBots は標準のメッセージ形式に従って istest=true を含む検出リクエストを Webhook URL に送信し、返された結果によって可用性を判定します。
| 状況 | 判定 |
|---|---|
HTTP ステータスコード 200 を返す |
その Webhook は利用可能(reachable=true) |
200 以外を返す(4xx/5xx など)/ リクエストタイムアウト / 接続失敗 |
その Webhook は利用不可(reachable=false) |
失敗時のレスポンス
| フィールド | タイプ | 説明 |
|---|---|---|
| code | int | エラーコード。 |
| message | string | エラーの詳細情報。 |
エラーコード
| Code | Message |
|---|---|
| 40000 | パラメータエラー |
| 40127 | 開発者認証に失敗しました |
| 40378 | Agent が削除されています |
| 40379 |
GPTBots Webhook サービス状態検出
GPTBots は webhook サービスを検出するためのヘルスモニタリングインターフェースを提供しており、開発者はこのインターフェースを呼び出して GPTBots webhook サービスが正常に利用可能かどうかを探査できます。インターフェースが HTTP ステータスコード 200 を返し、かつレスポンスボディがサービス正常を示す英語の識別子(service is normal など)であれば、GPTBots webhook サービスが正常に利用可能であることを示します。本インターフェースは認証不要で、平文を返します。
リクエストメソッド
GET
リクエストURL
https://api.gptbots.ai/v1/webhook/service/health
リクエスト例
curl -X GET 'https://api.gptbots.ai/v1/webhook/service/health'
レスポンス
GPTBots サービスが正常に利用可能な場合、HTTP ステータスコード 200 を返し、レスポンスボディにサービス正常を示す英語の識別子を返します。
service is normal
可用性判定の推奨
呼び出し側は HTTP ステータスコードのみを判定基準とすればよいです。
| 状況 | 判定 |
|---|---|
200 を返し、かつレスポンスボディが service is normal |
GPTBots サービスは正常に利用可能 |
200 以外を返す(5xx など)/ リクエストタイムアウト / 接続失敗 |
GPTBots サービスは利用不可 |
適切なリクエストタイムアウト(3〜5 秒など)を設定し、一定の頻度でポーリング探査することを推奨します(QPM:3)。本インターフェースは認証不要のため、呼び出し時に API Key を付与する必要はありません。
