

# クロスモーダル入力
<a name="sonic-cross-modal"></a>

Amazon Nova 2 Sonic がクロスモーダル入力をサポートするようになり、会話セッション中に音声入力に加えてテキストメッセージを送信できるようになりました。音声は引き続き主なインタラクション方法ですが、テキスト入力は、入力がより便利または適切であるシナリオに柔軟性をもたらします。

**継続的なストリーミングが必要**: クロスモーダル入力が正しく機能するためには、アクティブなストリーミングセッションが必要です。セッションは通常の音声セッションのように継続的なストリーミングを維持する必要があります。維持しない場合、標準のセッションタイムアウトが適用され、接続は終了します。

クロスモーダルテキスト入力の感度レベルは、次のようなシナリオに役立ちます。
+ クライアント側のアプリ統合 (ウェブとモバイル): ユーザーがテキストと音声の両方を使用してアプリケーションを操作できるようにし、シームレスなマルチモーダルエクスペリエンスをサポートします。
+ 「モデルから開始」ユースケース: セッションの開始直後にテキストメッセージを送信し、モデルに話し始めるように促すことができます。
+ 非同期ツール呼び出し中にモデルをガイドする: toolUse イベントがトリガーされ、システムがツール呼び出しの処理を開始すると、クライアントは Sonic にテキストメッセージを送信して、待機中に「情報を処理している間、少々お待ちください。その間、他に何かお手伝いできることはありますか?」などの自然な応答を行えます。
+ テレフォニー DTMF 統合: 顧客は電話のキーパッドを使用して機密情報 (クレジットカード番号など) を入力します。注: Amazon Nova Sonic は DTMF トーンをネイティブに処理しません。DTMF 入力をサポートするには、システムがトーンを検出してテキスト (「1234」など) に変換し、Nova 2 Sonic に送信する必要があります。

## 仕組み
<a name="sonic-cross-modal-works"></a>

クロスモーダル入力は、オーディオ入力と同様の 3 つのイベントシーケンスを使用します。

1. **コンテンツ開始イベント:** テキスト入力の開始のシグナルを発します

1. **テキスト入力イベント:** 実際のテキストメッセージが含まれます

1. **コンテンツ終了イベント:** テキスト入力の完了のシグナルを発します

シーケンスを維持するには、3 つのイベントすべてで同じ promptName と contentName を使用する必要があります。適切なマルチターン会話追跡を確実に行うために、テキスト入力を送信するたびに contentName に対して新しい UUID を生成する必要があります。

## イベントの構造
<a name="sonic-cross-modal-events"></a>

### 1. コンテンツ開始イベント
<a name="cross-modal-events-start-event"></a>

設定の詳細を使用してテキスト入力シーケンスを開始します。

```
{
  "event": {
    "contentStart": {
      "promptName": "<prompt_name>",
      "contentName": "<new_content_name>",
      "role": "USER",
      "type": "TEXT",
      "interactive": true,
      "textInputConfiguration": {
        "mediaType": "text/plain"
      }
    }
  }
}
```

 主要パラメータ:
+ `promptName`: 会話プロンプトの名前 (セッション間で一致)
+ `contentName`: このテキスト入力の一意の識別子 (メッセージごとに新しい UUID を生成する)
+ `role`: ユーザー入力を示すには `"USER"` に設定します
+ `type`: テキスト入力の場合は `"TEXT"` に設定します
+ `interactive`: インタラクティブモードを有効にするには `true` に設定します
+ `mediaType`: プレーンテキストコンテンツの場合は `"text/plain"` に設定します

### 2. テキスト入力イベント
<a name="cross-modal-events-text-input-event"></a>

実際のテキストメッセージの内容が含まれます。

```
{
  "event": {
    "textInput": {
      "promptName": "<prompt_name>",
      "contentName": "<new_content_name>",
      "content": "<your_text_message>"
    }
  }
}
```

 主要パラメータ:
+ `promptName`: コンテンツ開始イベントの値と一致する必要があります
+ `contentName`: コンテンツ開始イベントの値と一致する必要があります
+ `role`: テキストメッセージ文字列

### 3. コンテンツ終了イベント
<a name="cross-modal-events-content-end-event"></a>

テキスト入力の完了のシグナルを発します。

```
{
  "event": {
    "contentEnd": {
      "promptName": "<prompt_name>",
      "contentName": "<new_content_name>"
    }
  }
}
```

 主要パラメータ:
+ `promptName`: 以前のイベントの値と一致する必要があります
+ `contentName`: 以前のイベントの値と一致する必要があります