> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jelou.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Lista numerada

> Exibe uma lista numerada de opções para o usuário responder com o número de sua escolha

O nodo **Lista numerada** envia uma mensagem com opções apresentadas como uma lista de itens numerados. O usuário responde digitando o número correspondente à sua escolha.

<Note>
  Ao contrário do nodo [Lista](/pt/guias/nodos/lista), que usa o menu suspenso nativo do WhatsApp, a lista numerada funciona em **todos os canais**, pois envia as opções como texto simples.
</Note>

## Configuração geral

* **Conteúdo**: Mensagem introdutória que acompanha a lista (máximo 1.024 caracteres)

### Opções

Cada opção tem:

* **Nome da opção**: Texto visível para o item (máximo 24 caracteres)
* **Descrição**: Texto adicional abaixo do nome (opcional, máximo 72 caracteres)

Você pode adicionar múltiplas opções. As opções podem ser reordenadas por arrastar e duplicadas para criar variantes rapidamente.

### Opções dinâmicas

Se as opções vêm de dados variáveis, habilite o modo **dinâmico**:

* **Variável de origem**: `{{$memory.options}}`
* **Template de rótulo**: `{{$item.name}}`
* **Template de descrição**: `{{$item.detail}}`

Templates predefinidos: Lista simples, Produtos, Horários disponíveis, Filiais.

## Variáveis nas mensagens

```
Conteúdo: Olá {{$user.names}}, como posso ajudá-lo hoje?
```

## Configuração avançada

### Seleção obrigatória

Quando habilitado, o usuário **deve** responder com um número válido da lista para continuar. Se digitar texto livre ou um número fora do intervalo, verá uma mensagem de erro personalizável (máximo 250 caracteres).

<Note>
  A seleção obrigatória está disponível somente no canal **WhatsApp**.
</Note>

### Variável de resposta

Salva a opção selecionada pelo usuário em uma variável de memória para uso posterior no fluxo.

**Como configurar:**

1. Habilite o toggle **Salvar resposta**.
2. Insira o nome da variável (por exemplo, `chosen_option`).

#### Valor salvo com opções estáticas

Quando as opções são definidas manualmente, o **nome** da opção selecionada é salvo como texto simples. O número que o usuário digita indica apenas a posição — o número em si não é salvo.

Exemplo com estas opções:

| #  | Opção           |
| :- | :-------------- |
| 1  | Vendas          |
| 2  | Suporte Técnico |
| 3  | Faturamento     |
| 4  | Devoluções      |

Se o usuário responder `2`:

```javascript theme={null}
// {{$memory.chosen_option}} contém:
const chosen_option = "Technical Support";
```

#### Valor salvo com opções dinâmicas

Quando as opções são geradas a partir de uma variável de origem, o **objeto completo** do array ao qual a opção selecionada pertence é salvo.

Suponha que `{{$memory.branches}}` contenha:

```json theme={null}
[
  { "id": "br1", "name": "Downtown", "address": "Main Ave 100", "phone": "555-0101" },
  { "id": "br2", "name": "North", "address": "North St 200", "phone": "555-0202" },
  { "id": "br3", "name": "South", "address": "South Ave 300", "phone": "555-0303" }
]
```

Com a lista numerada configurada com a variável de origem `{{$memory.branches}}`, o usuário recebe:

```
Em qual filial você está?

1. Downtown
2. North
3. South
```

Se o usuário responder `1`, a variável contém o objeto completo:

```javascript theme={null}
// {{$memory.chosen_option}} contém o objeto completo:
const chosen_option = {
  id: "br1",
  name: "Downtown",
  address: "Main Ave 100",
  phone: "555-0101"
};
```

Você pode acessar cada propriedade do objeto em nodos subsequentes:

```javascript theme={null}
// Acessando propriedades de {{$memory.chosen_option}}:
chosen_option.name;    // "Downtown"
chosen_option.address; // "Main Ave 100"
chosen_option.phone;   // "555-0101"
```

#### Casos de uso

<AccordionGroup>
  <Accordion title="Direcionar o fluxo com base na seleção (opções estáticas)">
    Conecte um nodo [Condicional](/pt/guias/nodos/condicional) e crie um ramo para cada opção:

    ```
    Se {{$memory.chosen_option}} = "Sales"             → Ramo Vendas
    Se {{$memory.chosen_option}} = "Technical Support" → Ramo Suporte
    Se {{$memory.chosen_option}} = "Billing"           → Ramo Faturamento
    ```
  </Accordion>

  <Accordion title="Usar dados do objeto selecionado (opções dinâmicas)">
    Com o objeto completo salvo, você pode responder ao usuário com informações precisas sobre sua seleção sem consultas adicionais:

    ```
    Texto: "Seu pedido será entregue na filial {{$memory.chosen_option.name}},
    localizada em {{$memory.chosen_option.address}}.
    Você pode ligar para {{$memory.chosen_option.phone}} se tiver dúvidas."
    ```
  </Accordion>

  <Accordion title="Personalizar a resposta do AI Agent">
    Passe o objeto para o nodo [AI Agent](/pt/guias/nodos/ai-agent) para personalizar a resposta:

    ```
    O usuário selecionou a filial: {{$memory.chosen_option.name}}.
    Endereço: {{$memory.chosen_option.address}}.
    Telefone: {{$memory.chosen_option.phone}}.
    Confirme os detalhes e ofereça assistência adicional.
    ```
  </Accordion>

  <Accordion title="Registrar a escolha em um banco de dados">
    Use um nodo [API](/pt/guias/nodos/api) ou [Datum](/pt/guias/nodos/datum) para registrar a seleção com o ID do objeto:

    ```json theme={null}
    {
      "userId": "{{$user.id}}",
      "branchId": "{{$memory.chosen_option.id}}",
      "branchName": "{{$memory.chosen_option.name}}",
      "channel": "{{$context.channel}}",
      "timestamp": "{{$context.timestamp}}"
    }
    ```
  </Accordion>
</AccordionGroup>

### Lista expira

Se o usuário não responder dentro do tempo configurado:

* **Enviar texto**: Exibe uma mensagem de expiração
* **Redirecionar para fluxo**: Leva o usuário a outro fluxo

<Note>
  A expiração de lista está disponível somente no canal **WhatsApp**.
</Note>

## Exemplo

**Configuração:**

* Conteúdo: `Qual é o motivo da sua consulta?`
* Opções: `1. Vendas`, `2. Suporte Técnico`, `3. Faturamento`, `4. Devoluções`

**O usuário recebe:**

```
Qual é o motivo da sua consulta?

1. Vendas
2. Suporte Técnico
3. Faturamento
4. Devoluções
```

O usuário responde digitando `2` e o fluxo continua pela rota correspondente.

## Quando usar Lista numerada vs Lista?

|                        | Lista numerada                             | Lista                                    |
| :--------------------- | :----------------------------------------- | :--------------------------------------- |
| **Canais**             | Todos (WhatsApp, Web, Facebook, Instagram) | WhatsApp                                 |
| **Interface**          | Texto simples com números                  | Menu suspenso nativo                     |
| **Máximo de opções**   | Sem limite fixo                            | 10 opções                                |
| **Recomendado quando** | Você precisa de compatibilidade multicanal | Você tem 4-10 opções somente no WhatsApp |
