

# Entrada intermodal
<a name="sonic-cross-modal"></a>

O Amazon Nova 2 Sonic agora é compatível com entrada intermodal, permitindo que você envie mensagens de texto além da entrada de voz durante uma sessão de conversação. Embora a fala continue sendo o principal modo de interação, a entrada de texto oferece flexibilidade para cenários em que a digitação é mais conveniente ou apropriada.

**Streaming contínuo necessário**: a entrada intermodal requer uma sessão de streaming ativo para funcionar corretamente. A sessão deve manter o streaming contínuo como uma sessão de voz normal, do contrário, os tempos limite padrão da sessão serão aplicados e a conexão será encerrada.

Os níveis de sensibilidade na entrada de texto intermodal são úteis para cenários como:
+ Integração de aplicações do lado do cliente (web e dispositivo móvel): permite que os usuários interajam com a aplicação usando texto e voz, oferecendo experiências multimodais integradas.
+ Caso de uso do “model-start-first”: uma mensagem de texto pode ser enviada imediatamente após o início da sessão para fazer com que o modelo comece a falar.
+ Orientando o modelo durante a chamada assíncrona da ferramenta: quando um evento toolUse é acionado e o sistema começa a processar as chamadas da ferramenta, o cliente pode enviar uma mensagem de texto ao Sonic para fornecer uma resposta natural enquanto espera, como: “Espere um segundo enquanto eu processo suas informações. Enquanto isso, posso ajudar com mais alguma coisa?”. 
+ Integração de telefonia DTMF: o cliente usa o teclado do telefone para inserir informações confidenciais (como números de cartão de crédito). Observação: o Amazon Nova Sonic não processa tons DTMF de forma nativa. Para ser compatível com a entrada DTMF, seu sistema deve detectar os tons, convertê-los em texto (como “1234”) e enviar para o Nova 2 Sonic.

## Como funciona
<a name="sonic-cross-modal-works"></a>

A entrada intermodal usa uma sequência de três eventos semelhante à entrada de áudio:

1. **Evento de início de conteúdo:** sinaliza o início da entrada de texto

1. **Evento de entrada de texto:** contém a mensagem de texto real

1. **Evento de fim de conteúdo:** sinaliza a conclusão da entrada de texto

Todos os três eventos devem usar o mesmo promptName e contentName para manter a sequência. Um novo UUID deverá ser gerado para contentName toda vez que você enviar uma entrada de texto para garantir o rastreamento adequado da conversa em vários turnos.

## Estrutura de eventos
<a name="sonic-cross-modal-events"></a>

### 1. Evento de início de conteúdo
<a name="cross-modal-events-start-event"></a>

Inicia a sequência de entrada de texto com detalhes de configuração:

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

 Principais parâmetros:
+ `promptName`: o nome do seu prompt de conversa (consistente em toda a sessão)
+ `contentName`: um identificador único para essa entrada de texto (gere um novo UUID para cada mensagem)
+ `role`: defina como `"USER"` para indicar a entrada do usuário
+ `type`: defina como `"TEXT"` para entrada de texto
+ `interactive`: defina como `true` para habilitar o modo interativo
+ `mediaType`: defina como `"text/plain"` para conteúdo de texto simples

### 2. Evento de entrada de texto
<a name="cross-modal-events-text-input-event"></a>

Contém o conteúdo real da mensagem de texto:

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

 Principais parâmetros:
+ `promptName`: deve corresponder ao valor do evento de início de conteúdo
+ `contentName`: deve corresponder ao valor do evento de início de conteúdo
+ `role`: sua string de mensagem de texto

### 3. Evento de fim do conteúdo
<a name="cross-modal-events-content-end-event"></a>

Sinaliza a conclusão da entrada de texto:

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

 Principais parâmetros:
+ `promptName`: deve corresponder ao valor de eventos anteriores
+ `contentName`: deve corresponder ao valor de eventos anteriores