Skip to main content
アクティブな SI セッション内でメッセージを送信します。ホストはこのタスクを呼び出し、ユーザーメッセージやアクションレスポンスをブランドエージェントに中継します。

リクエスト

FieldTypeRequiredDescription
session_idstringYessi_initiate_session のセッション ID
messagestringNoユーザーのテキストメッセージ
action_responseobjectNoUI アクション(ボタンクリック、フォーム送信)へのレスポンス
message または action_response のいずれかは必須です。

Action Response オブジェクト

ユーザーが UI 要素とやり取りした場合:
FieldTypeRequiredDescription
actionstringYesUI 要素由来のアクション識別子
element_idstringNo特定の UI 要素の ID
payloadobjectNoやり取りから得た追加データ

レスポンス

FieldTypeDescription
session_idstringアクティブなセッションの確認
responseobjectブランドエージェントからのレスポンス
session_statusstring現在のセッション状態
handoffobjectsession_status が “pending_handoff” のときに含まれる

Session Status 値

StatusDescription
activeセッションが通常継続中
pending_handoffブランドエージェントがハンドオフ準備完了を示す
complete会話が完了

Handoff オブジェクト

session_statuspending_handoff の場合:
FieldTypeDescription
typestring”transaction” または “complete”
intentobject取引の場合: ユーザーが購入したい内容
context_for_checkoutobjectACP ハンドオフ用のサマリー

シンプルなメッセージ交換

Request:
{
  "session_id": "sess_abc123",
  "message": "Do you have any earlier flights?"
}
Response:
{
  "session_id": "sess_abc123",
  "response": {
    "message": "Yes! There's DL628 departing at 5:30 AM. It's a bit earlier but also qualifies for the Premium Economy upgrade.",
    "ui_elements": [
      {
        "type": "carousel",
        "data": {
          "items": [
            {
              "title": "DL628 - 5:30 AM",
              "subtitle": "Arrives 8:57 AM",
              "price": "$199",
              "badge": "Free Upgrade"
            },
            {
              "title": "DL632 - 6:15 AM",
              "subtitle": "Arrives 9:42 AM",
              "price": "$199",
              "badge": "Free Upgrade"
            }
          ]
        }
      }
    ]
  },
  "session_status": "active"
}

アクションレスポンス(ボタンクリック)

Request:
{
  "session_id": "sess_abc123",
  "action_response": {
    "action": "select_flight",
    "payload": {
      "flight_number": "DL628",
      "departure_time": "05:30"
    }
  }
}
Response:
{
  "session_id": "sess_abc123",
  "response": {
    "message": "Great choice! DL628 is confirmed with your Premium Economy upgrade. Ready to book?",
    "ui_elements": [
      {
        "type": "product_card",
        "data": {
          "title": "DL628 to Boston",
          "subtitle": "Tue Jan 27, 5:30 AM → 8:57 AM",
          "price": "$199",
          "badge": "Premium Economy",
          "cta": { "label": "Book Now", "action": "checkout" }
        }
      }
    ]
  },
  "session_status": "active"
}

トランザクションハンドオフ

ユーザーが購入準備完了の場合: Request:
{
  "session_id": "sess_abc123",
  "action_response": {
    "action": "checkout"
  }
}
Response:
{
  "session_id": "sess_abc123",
  "response": {
    "message": "Perfect! I'll hand you back to complete the booking."
  },
  "session_status": "pending_handoff",
  "handoff": {
    "type": "transaction",
    "intent": {
      "action": "purchase",
      "product": {
        "type": "flight",
        "flight_number": "DL628",
        "departure": "2026-01-27T05:30:00-05:00",
        "arrival": "2026-01-27T08:57:00-05:00",
        "origin": "JFK",
        "destination": "BOS",
        "class": "premium_economy"
      },
      "price": {
        "amount": 199,
        "currency": "USD"
      }
    },
    "context_for_checkout": {
      "conversation_summary": "Jane selected DL628 JFK→BOS on Jan 27 with free Premium Economy upgrade via campaign offer",
      "applied_offers": ["delta_chatgpt_3313"]
    }
  }
}

ハンドオフの扱い

session_status: "pending_handoff" を受け取ったら:
  1. type: "transaction" の場合 - 提供された intent とコンテキストで ACP チェックアウトを開始する
  2. type: "complete" の場合 - 会話完了として通常チャットに戻る
ハンドオフ処理後、ホストは si_terminate_session を呼び出して適切にセッションを閉じるべきです。

キーポイント

  1. message または action_response - 各リクエストには少なくともどちらかが必要です。ユーザーはメッセージ入力か UI 操作でやり取りします。
  2. セッションステータスがフローを決める - 各レスポンスで session_status を確認し、会話継続かハンドオフ必要かを判断します。
  3. ハンドオフでコンテキストを保持 - context_for_checkout オブジェクトが ACP にシームレスな購入体験に必要な情報を提供します。
  4. UI 要素は任意 - カードやカルーセルをいつ含めるかは、ブランドエージェントが会話に応じて判断します。