logo
Development
検索
有人対応サービス(Manual Service)

有人対応サービス(Manual Service)

開発者がWebhook を手動サービスの接続方式として選択した場合、まず自分のサーバー環境に Webhook サービスを構築する必要があります。
開発者は、有人対応リクエスト、ユーザーメッセージ、およびオペレーターからの返信メッセージを受信するために、仕様に従って以下の3つのインターフェースを提供する必要があります
また、GPTBots 側も、カスタマーサービスの返信メッセージと会話の終了指示を受け取るための2つのインターフェースを提供しています。

注意事項:

  1. 開発者は Webhook サービスが正常に利用可能な状態を確保する必要があります。そうでない場合、有人対応サービスの正常な利用に影響を及ぼす可能性があります。
  • 有人対応サービスを開始した後に「ビジー状態」と表示される場合、開発者の Webhook サービスが異常であることを示します。
  • 有人対応サービスを開始した後に「接続中」と表示される場合、開発者の Webhook サービスが正常であることを示します。
  1. 有人対応サービスのリクエストが正常に開始された後:

有人対応サービスリクエストの通知

エンドユーザーが有人対応サービスをリクエストすると、GPTBotsはそのリクエストを開発者のWebhookサービスに転送します。開発者のインターフェースサービスが200を返すと、有人対応サービスの作成が成功したことを意味します。

リクエストメソッド

POST

エンドポイント

https://your_domain/conversation/establish

リクエスト例

curl -X POST 'https://YOUR_DOMAIN/human/service/conversation/establish' \ -H 'Content-Type: application/json' \ -d '{ "body": [ { "text": "human service", "message_type": "QUESTION" }, { "text": "", "message_type": "ANSWER" } ], "timestamp": 1742265090895, "email": "bob@gmail.com", "conversation_id": "67d8db020fa31d1ef64f53dg", "bot_id": "665d88b03ce2b13cf2d573454", "user_info": { "phone": null, "email": "bob@gmail.com", "user_id": "KDslas", "anonymous_id": "652face5184b30540a6ea7fe" } }'
                      
                      curl -X POST 'https://YOUR_DOMAIN/human/service/conversation/establish' \
-H 'Content-Type: application/json' \
-d '{
  "body": [
    {
      "text": "human service",
      "message_type": "QUESTION"
    },
    {
      "text": "",
      "message_type": "ANSWER"
    }
  ],
  "timestamp": 1742265090895,
  "email": "bob@gmail.com",
  "conversation_id": "67d8db020fa31d1ef64f53dg",
  "bot_id": "665d88b03ce2b13cf2d573454",
  "user_info": {
    "phone": null,
    "email": "bob@gmail.com",
    "user_id": "KDslas",
    "anonymous_id": "652face5184b30540a6ea7fe"
  }
}'

                    
このコードブロックをポップアップで表示

注意:このリクエストボディの conversation_id は、有人対応サービスの会話シナリオを識別するための一意のIDとして使用され、会話IDの作成 でエージェント会話シナリオ用に生成される一意のIDとは異なります。

リクエストパラメータ

パラメータ タイプ 説明
conversation_id String 有人対応サービスのシナリオにおける会話ID(エージェント会話シナリオの会話IDとは異なります)。カスタマーサービスの返信インターフェースでGPTBotsに渡す必要があります。
timestamp Long タイムスタンプ
email String ユーザーのメールアドレス。一部の有人対応システムでは、適切なサービス提供のためにメールが必要です。
bot_id String エージェント(旧ボット)のID
body List<Object> メッセージ本文
body.message_type String メッセージの種類、QUESTION/ANSWER
body.text String ユーザーがカスタマーサービスに対して送信する質問およびそのコンテキスト
user_info Object ユーザー情報
user_info.phone String ユーザーの電話番号。現在は WhatsApp 経由で有人対応に切り替える場合のみ取得可能です。
user_info.email String ユーザーのメールアドレス。ユーザーがメールアドレスを入力した場合に取得可能。
user_info.user_id String ユーザーID。企業の開発者が定義した固有の識別子で、匿名IDに対して開発者が設定します。
user_info.anonymous_id String 匿名ID。API以外のチャネルでユーザーがエージェントと会話を始めた場合、システムがチャネル情報を含む匿名IDを生成します。

email フィールドに関する注意事項:

  • iframe/共有リンク/バブルウィジェット 経由で有人対応を開始する場合、ユーザーはメールアドレスの入力が必要です。ただし、開発者がユーザーのメールアドレスをカスタマイズ設定することで、入力を省略させることも可能です。
  • WhatsApp/Telegram/LiveChat などの外部プラットフォーム経由で有人対応をリクエストする場合、デフォルトで使用されるメールアドレスは support@gptbots.ai です。なお、LiveChatでは開発者がユーザーのメールアドレスをカスタマイズ可能です。
  • API 経由で有人対応をリクエストする場合、email フィールドは空でも構いません。空の場合、デフォルトで support@gptbots.ai が使用されます。

レスポンス

パラメータ タイプ 説明
code Int レスポンスコード
message String 詳細

チャットインターフェース

作成したconversation_idを使用して、ユーザーのメッセージを有人対応サービスに送信します。

リクエストメソッド

POST

エンドポイント

https://your_domain/chat

リクエスト例

{ "conversation_id": "conv_xxx", "message_id": "msg_abc124", "create_time": 1750000005000, "agent_id": "bot_xxx", "body": "これは私の注文のスクリーンショットです", "timestamp": 1750000005200, "files": [ { "content_type": "Image", "url": "https://files.gptbots.ai/xxx/order.png", "name": "order.png", "format": "png" } ] }
                      
                      {
  "conversation_id": "conv_xxx",
  "message_id": "msg_abc124",
  "create_time": 1750000005000,
  "agent_id": "bot_xxx",
  "body": "これは私の注文のスクリーンショットです",
  "timestamp": 1750000005200,
  "files": [
    {
      "content_type": "Image",
      "url": "https://files.gptbots.ai/xxx/order.png",
      "name": "order.png",
      "format": "png"
    }
  ]
}

                    
このコードブロックをポップアップで表示

リクエストのパラメータ

パラメータ タイプ 説明
conversation_id String 作成された conversation_id を使用して、ユーザーのメッセージを有人対応サービスに送信します
timestamp Long タイムスタンプ
body String ユーザーのメッセージ
message_id string ユーザーのこのメッセージの ID
create_time long ユーザーのこのメッセージの作成時刻(ミリ秒)
agent_id string エージェント(Agent/Bot)ID
files array ユーザーがメッセージとともにアップロードした添付ファイルのリスト。添付ファイルがない場合は渡さないか空にします
content_type string コンテンツタイプの列挙:Image / Audio / Video / Document / File / Text など
url string 添付ファイルのダウンロード可能なURL(GPTBots 側でアクセス可能。開発者は自身でダウンロード/転送する必要があります)
name string ファイル名(拡張子を含む)。「会話詳細の取得」API と一致します
format string ファイル形式/拡張子。「会話詳細の取得」API と一致します

レスポンス

パラメータ タイプ 説明
code Int レスポンスコード
message String 詳細

会話終了インターフェース

ユーザーとの会話がタイムアウトした場合や、エージェントユーザーが自発的に会話を終了した場合に、このインターフェースが呼び出されて会話を終了します。

リクエストメソッド

POST

エンドポイント

https://your_domain/conversation/close

リクエストヘッダー

フィールド タイプ 説明
Authorization Bearer ${API Key} 認証には Authorization: Bearer ${API Key} を使用してください。トークンはAPIキーページから取得できます。
Content-Type application/json データの形式は application/json を設定してください。

リクエストのパラメータ

パラメータ タイプ 説明
conversation_id String 会話ID。カスタマーサービスの返信インターフェースで GPTBots に渡す必要があります。
timestamp Long タイムスタンプ
type String 終了タイプ。TIMEOUT(タイムアウトによる終了)または USER_CLOSED(ユーザーによる手動終了)から選びます。

レスポンス

パラメータ タイプ 説明
code Int レスポンスコード
message String 詳細

ユーザーメッセージへの返信

開発者がwebhookを有人対応サービスの連携方式として選択した場合、GPTBotsはユーザーメッセージへの返信用インターフェースを提供します。このインターフェースを通じて、有人オペレーターからのメッセージをユーザーに送信することができます。

リクエストメソッド

POST

エンドポイント

https://api-${endpoint}.gptbots.ai/v1/human/message/receive

リクエストヘッダー

フィールド タイプ 説明
Authorization Bearer ${API Key} 認証には Authorization: Bearer ${API Key} を使用してください。トークンはAPIキーページから取得できます。
Content-Type application/json データの形式は application/json を設定してください。

リクエスト例

{ "conversation_id": "conv_xxx", "timestamp": 1750000000000, "body": "こちらがご依頼の請求書です", "files": [ { "content_type": "Document", "url": "https://your-cdn.com/files/invoice.pdf", "name": "invoice.pdf", "format": "pdf" }, { "content_type": "Image", "url": "https://your-cdn.com/files/screenshot.png", "name": "screenshot.png", "format": "png" } ] }
                      
                      {
  "conversation_id": "conv_xxx",
  "timestamp": 1750000000000,
  "body": "こちらがご依頼の請求書です",
  "files": [
    { "content_type": "Document", "url": "https://your-cdn.com/files/invoice.pdf", "name": "invoice.pdf", "format": "pdf" },
    { "content_type": "Image", "url": "https://your-cdn.com/files/screenshot.png", "name": "screenshot.png", "format": "png" }
  ]
}

                    
このコードブロックをポップアップで表示

リクエストのパラメータ

パラメータ タイプ 説明 必須
conversation_id String 会話ID。会話作成インターフェースおよびチャットインターフェースで渡されるもので、そのまま引き継いで渡します。 必須
timestamp Long タイムスタンプ 必須
body String 有人対応サービスからの返信内容 必須
files array ユーザーがメッセージとともにアップロードした添付ファイルのリスト。添付ファイルがない場合は渡さないか空にします
content_type string コンテンツタイプの列挙:Image / Audio / Video / Document / File / Text など
url string 添付ファイルのダウンロード可能なURL(GPTBots 側でアクセス可能。開発者は自身でダウンロード/転送する必要があります)
name string ファイル名(拡張子を含む)。「会話詳細の取得」API と一致します
format string ファイル形式/拡張子。「会話詳細の取得」API と一致します

レスポンス

パラメータ タイプ 説明
code Int レスポンスコード
message String 詳細

有人対応サービスによる会話の終了

開発者が webhook を有人対応サービスの連携方法として選択した場合、 GPTBots が提供する有人対応サービスは必要に応じて能動的に会話を終了することができます。
会話が終了すると、ユーザーが再度有人カスタマーサービスの会話を開始しない限り、有人対応サービスからメッセージを受け取ることはありません。

リクエストメソッド

POST

エンドポイント

https://api-${endpoint}.gptbots.ai/v1/human/close

リクエストヘッダー

フィールド タイプ 説明
Authorization Bearer ${API Key} 認証には Authorization: Bearer ${API Key} を使用してください。トークンはAPIキーページから取得できます。
Content-Type application/json データの形式は application/json を設定してください。

リクエストパラメータ

パラメータ タイプ 説明
conversation_id String 会話ID。カスタマーサービスの返信インターフェースで GPTBots に渡す必要があります。
timestamp Long タイムスタンプ

レスポンス

パラメータ タイプ 説明 必須
conversation_id String 会話ID。会話作成インターフェースおよびチャットインターフェースで渡されるもので、そのまま引き継いで渡します。 必須
timestamp Long タイムスタンプ 必須

GPTBots サービス状態の検出

GPTBots は、自身の有人対応サービスを監視するためのヘルスモニタリングインターフェースを提供しています。開発者はこのインターフェースを呼び出して、GPTBots の有人対応サービスが正常に利用可能かどうかを確認できます。HTTP ステータスコード 200 が返され、かつレスポンスボディがサービス正常を示す英語の識別子(例:service is normal)であれば、GPTBots の有人対応サービスが正常に利用可能であることを意味します。このインターフェースは認証不要で、プレーンテキストを返します。

リクエストメソッド

GET

エンドポイント

https://api.gptbots.ai/v1/human/health

リクエスト例

curl -X GET 'https://api.gptbots.ai/v1/human/health'
                      
                      curl -X GET 'https://api.gptbots.ai/v1/human/health'

                    
このコードブロックをポップアップで表示

レスポンス

GPTBots サービスが正常に利用可能な場合、HTTP ステータスコード 200 が返され、レスポンスボディにサービス正常を示す英語の識別子が返されます。

service is normal
                      
                      service is normal

                    
このコードブロックをポップアップで表示

可用性の判定に関する推奨事項

呼び出し側は、HTTP ステータスコードのみを判定基準とすれば十分です:

状況 判定
200 が返され、かつレスポンスボディが service is normal GPTBots サービスは正常に利用可能
200 以外(例:5xx)が返される/リクエストタイムアウト/接続失敗 GPTBots サービスは利用不可

適切なリクエストタイムアウト(例:3~5秒)を設定し、一定の頻度でポーリング検出する(QPM:3)ことを推奨します。このインターフェースは認証不要で、呼び出し時に API Key を付与する必要はありません。