このタスクを使うタイミング
SI セッションを開始する有効なフローは 2 つあります。フロー A: セッション前の照会(スポンサード結果に推奨)
offering_token がセッション前のコンテキストを橋渡しするため、「2 つ目のもの」といった参照が成立します。
例: 検索結果ページで、ユーザーがエンゲージする前に「Nike にはあなたのサイズのランニングシューズが 3 足あり、$89 から」と表示する。
フロー B: 直接セッション
si_get_offering は 同意前の匿名プレビュー 用です。すぐにセッションへ進むなら省略できます。
目的
オファーの照会には 3 つの目的があります。- 提供内容の提示 - 同意前に価格、提供可否、説明を表示する
- 一致する商品の提示 - コンテキストがあれば、関連商品を返す
- セッション継続性 - 返されるトークンで提示内容を保持し、セッション開始時にブランドエージェントが文脈を把握できるようにする
リクエスト
| Field | Type | Required | Description |
|---|---|---|---|
offering_id | string | Yes | プロモートされた提供内容の ID |
context | string | No | パーソナライズのための自然言語コンテキスト(PII は禁止) |
include_products | boolean | No | 一致する商品を含めるか(デフォルト: false) |
product_limit | integer | No | 返す商品の最大数(デフォルト: 5、最大: 50) |
プライバシー
このリクエストには個人を特定できる情報を含めてはいけません。context フィールドには意図の説明を記載できますが、匿名である必要があります(例: “mens size 14 near Cincinnati” は可、メールアドレスは不可)。
レスポンス
| Field | Type | Description |
|---|---|---|
available | boolean | 提供が現在利用可能か |
offering_token | string | si_initiate_session に渡すトークン |
ttl_seconds | integer | 情報が有効な秒数 |
checked_at | string | 照会時刻の ISO 8601 タイムスタンプ |
offering | object | 提供内容の詳細 |
matching_products | array | コンテキストに一致する商品(要求された場合) |
total_matching | integer | 一致商品の総数(返却数を上回る場合あり) |
unavailable_reason | string | 提供不可の理由(利用不可の場合) |
alternative_offering_ids | array | 代替オファーの候補 |
Offering Object
| Field | Type | Description |
|---|---|---|
offering_id | string | 提供内容の ID |
title | string | タイトル |
summary | string | 簡潔な説明 |
tagline | string | 短い宣伝フレーズ |
expires_at | string | 提供終了時刻 |
price_hint | string | 価格の目安(例: “from $89”) |
image_url | string | ヒーロー画像の URL |
landing_url | string | ランディングページ URL |
Matching Product Object
| Field | Type | Description |
|---|---|---|
product_id | string | 商品 ID |
name | string | 商品名 |
price | string | 表示価格 |
original_price | string | セール時の元価格 |
image_url | string | 商品画像の URL |
availability_summary | string | 簡単な在庫情報 |
url | string | 商品詳細ページの URL |
Unavailable Reasons
| Reason | Description |
|---|---|
sold_out | 商品/オファー在庫が枯渇 |
expired | 提供期間が終了 |
region_restricted | ユーザー地域では提供不可 |
inactive | キャンペーンが停止または終了 |
例
基本的な提供内容の照会
Response
商品コンテキストを付与
商品を含むレスポンス
「Nike にはあなたのサイズのランニングシューズが 12 足あり、$89 からです。アシスタントと詳しく見てみますか?」
提供不可の場合のレスポンス
Offering トークンの利用
offering_token は セッション継続性 の鍵です。si_get_offering で商品を表示した後に会話を開始するとき、このトークンによりブランドエージェントは何が提示されたかを正確に把握できます。
セッション継続性が重要な理由
Without the token, this conversation breaks:ブランドエージェントがトークンを使う方法
offering_token を生成する際は、クエリの状態をサーバー側に保存します。
si_initiate_session でトークンを受け取ったら:
セッション開始時にトークンを含める
提供内容を取得した後にセッションを開始する場合、トークンを含めます。重要ポイント
- 匿名設計 - 提供内容の照会にはユーザーデータを送信しません。プライバシーを守りつつリッチなプレビューを実現します。
- セッション継続性 - Offering トークンは提示内容の記憶です。「最初の選択肢」や「あの青いもの」といった参照をブランドエージェントが解決できます。
-
商品マッチング -
include_productsが true でcontextがあれば、ブランドは関連商品を返せます。「あなたのサイズの靴が 12 足、$89 から」といったプレビューを実現します。 -
キャッシュ - ホストは
ttl_secondsまでレスポンスをキャッシュできます。頻繁に照会されるオファーでブランドエージェントの負荷を下げます。 - 段階的なフォールバック - 照会が失敗またはタイムアウトしても、ホストはセッションを直接開始できます。照会は必須ではありません。
-
代替提案 - 提供不可の場合は
alternative_offering_idsを通じて代替案を提示できます。
ベストプラクティス
ホスト向け
- スポンサード結果を表示する前に提供内容を取得する
- リッチなプレビューにはコンテキスト付きで
include_productsを使う - TTL を守ってキャッシュし、古いデータを避ける
- 提供不可の場合の扱いを丁寧にし、期限切れのオファーを表示しない
- 可能であればセッション開始時に offering トークンを含める
ブランドエージェント向け
- 正確な表示のためにリッチな
offering情報を返す - コンテキストに合わせた商品マッチングのため
include_productsをサポートする - 妥当な TTL 値を設定する(変動に応じて 5~60 分など)
- デバッグに役立つ
unavailable_reasonを提供する - 主要なオファーが利用できない場合は代替案を提案する