> For the complete documentation index, see [llms.txt](https://docs.chatlayer.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chatlayer.ai/chatlayer-documentation-pt-br/buildabot/flow-logic/dialog-state/user-input-bot-dialog.md).

# Coletar entrada

Adicione um **Coletar entrada** bloco por [arrastando e soltando-o](https://docs.chatlayer.ai/buildabot/bot-navigation/bot-builder/flows/canvas-functionalities#drag-and-drop) no seu fluxo.

<figure><img src="/files/95b467270996a8fcef8464f3b8fcb7ca03e9541e" alt="" width="144"><figcaption><p>aba Coletar entrada.</p></figcaption></figure>

Um **Coletar entrada** obtém informações do usuário, as verifica e as salva como uma [variável](https://docs.chatlayer.ai/bot-answers/settings/secure-variables-gdpr).

<figure><img src="/files/86d4338f054bdff0d58e06a811401016a60c0758" alt=""><figcaption><p>Como um bloco Coletar entrada aparece no canvas.</p></figcaption></figure>

Um **Coletar entrada** normalmente fará 3 coisas:

* definindo [qual tipo de entrada](#input-types) você está analisando
* [verificando se a resposta do usuário corresponde](#check-if-a-response-matches)
* [configur](#configuration)[ando](#configuration) o comportamento do seu bot depois disso

## Adicione uma etapa de pergunta

Um bloco Coletar entrada deve pedir claramente ao usuário alguma informação.

<figure><img src="/files/fd519be37bb0d531b0663694ce43ce8af679a23e" alt="" width="375"><figcaption><p>Faça uma pergunta ao usuário.</p></figcaption></figure>

## Capturar a resposta do usuário como

A **Coletar entrada** primeiro verifica se a entrada corresponde a uma [tipo de entrada](#input-types).

<figure><img src="/files/8dce76615c1c93d6ff1bb1e171a65994ac5ff80b" alt="" width="375"><figcaption><p>Verifique se a entrada do usuário corresponde.</p></figcaption></figure>

{% hint style="info" %}
Para [bots de voz](/chatlayer-documentation-pt-br/voz/phone-and-voice.md), certifique-se de usar o **voiceMessage** tipo de entrada.
{% endhint %}

Se for o caso, a **Coletar entrada** salva essa entrada em uma [**variável de destino**](#when-the-user-response-matches).

<figure><img src="/files/6453193aed53217ebd675890a2ca7ad2fc4f92ff" alt="" width="375"><figcaption><p>Salve a entrada correspondente em uma variável.</p></figcaption></figure>

## Tipos de entrada

**Coletar entrada** blocos têm 3 tipos de reconhecimento de entrada:

* [**Geral**](#general-input-type) tipos de entrada para verificar se a entrada segue um formato desejado.
* [**Sistema**](#system-entities-input-type) tipos de entrada para verificar se a entrada segue uma determinada entidade interna do Chatlayer.
* [**Entidade**](/chatlayer-documentation-pt-br/nlp/natural-language-processing-nlp/detect-information-with-entities.md) tipos de entrada para verificar a entrada do usuário com uma entidade do bot [entidade](/chatlayer-documentation-pt-br/navegacao/natural-language-processing-nlp/synonym-entities.md).

{% hint style="warning" %}
O Chatlayer extrai dados das entradas do usuário. Por exemplo, se um plugin de entrada tiver o tipo **data** e a entrada for 'Preciso estar em Paris *em dois dias*', o parser identificará 'em dois dias' como a data. Ele converte isso para o formato DD-MM-AAAA e armazena o resultado na sessão do usuário.
{% endhint %}

{% hint style="danger" %}
Observe que o número de [entidades do sistema ](/chatlayer-documentation-pt-br/nlp/natural-language-processing-nlp/detect-information-with-entities/system-entities.md)que você pode usar dentro de um **Coletar entrada** bloco é limitado. As entidades do sistema que você pode usar dentro desses blocos são: **sys.email**, **sys.phone\_number**, **sys.url**, **sys.number** e **sys.time**.
{% endhint %}

### Entrada geral

A **Geral** tipo de entrada verifica se a entrada segue um formato desejado.

<details>

<summary>Qualquer</summary>

A **Qualquer** tipo de entrada aceitará todos os valores de string como entrada.

É importante saber que intenções e entidades são processadas antes dos parsers. Isso pode ser útil para extrair automaticamente certas partes de uma frase como resposta a uma pergunta. Fornecemos um ótimo exemplo disso em nosso [tutorial](/chatlayer-documentation-pt-br/comece-rapido/leadzy-tutorial/3.-collect-and-display-user-input.md).

</details>

<details>

<summary>Data</summary>

A **Data** tipo de parser de entrada analisará a resposta como uma data. Frases como 'segunda-feira da próxima semana' são convertidas automaticamente para um objeto de data DD-MM-AAAA. Os formatos suportados (também em outros idiomas de PLN suportados) são:

* *22-04-2018*
* *22-04*
* *22 abr*
* *22 abril 18*
* *vinte e dois de abril de 2018*
* *ontem*
* *hoje*
* *agora*
* *na noite passada*
* *amanhã, tmr*
* *em duas semanas*
* *em 3 dias*
* *próxima segunda-feira*
* *sexta-feira da próxima semana*
* *segunda-feira passada/anterior*
* *semana passada/anterior*
* *dentro de/em 5/cinco dias*
* *sexta-feira/sex*

</details>

<details>

<summary>Imagem</summary>

A **Imagem** tipo de formato permite verificar se um usuário enviou uma imagem ou outro arquivo (como PDF).

A imagem será salva como um array. Se você escolheu `{img}` como variável, isso significa que você deve usar `{img[0]}` para recuperar a URL da primeira imagem salva.

Para o widget de chat (canal web), recomendamos usar a [envio de arquivo](/chatlayer-documentation-pt-br/buildabot/flow-logic/dialog-state/message-components.md#file-upload) etapa.

Para salvar um anexo do usuário em qualquer ponto do fluxo, use a `defaultOnFileUpload` variável. Essa variável armazenará a URL do anexo enviado pelo usuário, independentemente de onde ele esteja na conversa.

</details>

<details>

<summary>Localização</summary>

A **Localização** o parser envia a entrada do usuário para um serviço da API do Google Geocoding. Quando um endereço ou local correto é reconhecido, a plataforma Chatlayer criará automaticamente um objeto que contém todos os dados geográficos relevantes.

<img src="/files/d12a6bca609abcb58407c5eb853e71cd766d6077" alt="Check the user location." data-size="original">

Veja o bloco acima. Quando o usuário responde à pergunta "Onde você trabalha?" com uma localização válida, essa informação será armazenada como uma `userLocationInformed` variável (você pode renomear essa variável se necessário).

Abaixo está um exemplo que mostra como a `userLocationInformed` variável seria armazenada quando o usuário responder com 'Chatlayer.ai':

```javascript
{
    fullAddress: "Oudeleeuwenrui 39, 2000 Antwerpen, Bélgica",
    latitude: 51.227317,
    longitude: 4.409155999999999,
    streetNumber: "39",
    streetName: "Oudeleeuwenrui",
    city: "Antwerpen",
    country: "Bélgica",
    zipcode: "2000",
}
```

Para mostrar o endereço como um endereço completo (rua, número, CEP e cidade), você precisa adicionar algumas informações extras à variável: `.fullAddress`

Então, no exemplo acima, o bot pode exibir a localização completa usando a seguinte variável:`{userLocationInformed.fullAddress}`

Uma mensagem do bot contendo as seguintes informações:

`Obrigado, devo enviar seu pacote para {userLocationInformed.fullAddress}?`

Exibirá a seguinte mensagem para o usuário:

`Obrigado, devo enviar seu pacote para Oudeleeuwenrui 39, 2000 Antwerpen, Bélgica?`

</details>

<details>

<summary>Idioma</summary>

Este tipo de entrada analisará e validará idiomas suportados por PLN.

* Inglês: (en-us): 'inglês', 'English', 'en', 'anglais'
* Holandês (nl-nl): 'nederlands', 'holandês', 'ned', 'nl', 'vlaams', 'hollands', 'be', 'ned', 'néerlandais', 'belgisch'
* Francês (fr-fr): 'francês', 'français', 'frans', 'fr', 'francais'
* Chinês (zh-cn): 'chinês', 'cn', 'zh', 'chinees'
* Espanhol (es-es): 'espanhol', 'español', 'es', 'spaans'
* Italiano (it-it): 'italiano', 'italiano', 'italiano', 'it
* Alemão (de-de): 'alemão', 'duits', 'de', 'deutsch
* Japonês (ja-jp): 'japonês', 'japans', 'jp', '日本の
* Português do Brasil (pt-br): 'português do Brasil', 'português', 'português', 'português brasileiro', 'português'

</details>

<details>

<summary>voiceMessage</summary>

Use o **voiceMessage** tipo de entrada para salvar mensagens do canal de voz como texto. Configure a duração máxima e o tempo de conclusão dessas mensagens.

<img src="/files/7e152a854f926b1b09811bba65e87af4366adb87" alt="" data-size="original">

</details>

<details>

<summary>Horas</summary>

Este tipo de entrada analisará e validará carimbos de data/hora.

</details>

### Entrada de entidade do sistema

A **Coletar entrada** o parser pode verificar se a entrada fornecida é consistente com o formato de uma das seguintes [entidades do sistema](/chatlayer-documentation-pt-br/nlp/natural-language-processing-nlp/detect-information-with-entities/system-entities.md). Sempre que uma entidade do sistema for escolhida na lista suspensa 'Verificar se a resposta corresponde', você pode dar à variável um nome que funcione para você.

<figure><img src="/files/b206c053f39ca68ae787ca98191fd606e6f77144" alt="" width="375"><figcaption><p>Renomeie a variável que corresponde ao parser de entidade do sistema.</p></figcaption></figure>

<details>

<summary>🆕 Reconhecimento de entidades do sistema baseado em LLM</summary>

Seu bot agora é capaz de reconhecer entidades do sistema dependendo do contexto da conversa, usando tecnologia LLM.

Por enquanto, este recurso está disponível apenas para [entidades do sistema](/chatlayer-documentation-pt-br/nlp/natural-language-processing-nlp/detect-information-with-entities/system-entities.md).

Por exemplo:

1. Acesse o seu bot [**Configurações**](/chatlayer-documentation-pt-br/navegacao/settings.md).
2. Em **IA generativa**, clique no botão ao lado de **Ativar recursos de IA generativa**.
3. Ativar **Reconhecimento de entidades baseado em LLM**.

<img src="/files/178fe79fc377a504dcb0261270df30b2b7ed7fee" alt="" data-size="original">

4. Clique em **Salvar**.
5. Volte para o seu [**Fluxos**](/chatlayer-documentation-pt-br/navegacao/bot-builder/flows.md).
6. Crie um **Coletar entrada** que verifica o número de passageiros e confere se corresponde a uma entrada @sys.number.

![](/files/b55da48a23333779e2e25547a2a9abf9bf4aab77)

7. Exiba essa variável no próximo bloco.
8. Teste o bot: agora o bot reconhece frases mais complexas como o número correto de pessoas!

<img src="/files/97d250ce7cd2a24529f95cd78d2a6258aa712802" alt="" data-size="original">

</details>

### Entrada de entidade

Depois de criar uma [entidade](/chatlayer-documentation-pt-br/navegacao/natural-language-processing-nlp/synonym-entities.md), você pode verificar se a entrada do usuário corresponde a ela.

{% hint style="info" %}
Saiba mais sobre qual [tipo de entidade](/chatlayer-documentation-pt-br/nlp/natural-language-processing-nlp/detect-information-with-entities.md) se adapta ao seu caso de uso.
{% endhint %}

## Verifique se a entrada corresponde a

Um bloco Coletar entrada verifica se a resposta do usuário corresponde a uma variável já conhecida:

* Se a variável ainda não tiver um valor, o bot fará a pergunta escrita no bloco Coletar entrada. Nesse ponto, ou:
  * [O valor corresponde a](#if-a-response-matches), e a variável é preenchida.
  * [O valor não corresponde a](#if-a-response-does-not-match), e as perguntas de fallback são feitas.
  * O usuário não responde, e você decide [detectar esse silêncio](#no-response).
* Se a variável já tiver um valor, o bot pulará automaticamente o bloco Coletar entrada.

### Quando a resposta do usuário corresponder a

Se a resposta corresponder no momento em que o Coletar entrada for acionado, ela será salva corretamente sob o nome de variável especificado no [depurador](/chatlayer-documentation-pt-br/buildabot/emulator.md).

{% hint style="warning" %}
Se o bloco Coletar entrada for pulado, isso ocorre porque a variável já é conhecida. As variáveis podem já ser conhecidas por vários motivos:

* O usuário já respondeu a esta pergunta antes.
* Uma entidade anterior foi detectada com o mesmo nome de variável.
* O usuário está autenticado e a variável foi definida automaticamente.
  {% endhint %}

### 🆕 Quando a resposta do usuário não corresponde

Quando o usuário fornece uma resposta inválida, o bot deve informar ao usuário que sua resposta era inválida.

#### Tentativas

Defina quantas vezes você quer que o bot faça a pergunta novamente. Normalmente, isso apenas pediria para reformular.

<figure><img src="/files/0d04d93b95cce6c883bfa8748b7a362e8b51a153" alt="" width="375"><figcaption><p>Configure as tentativas dentro dos blocos Coletar entrada.</p></figcaption></figure>

#### Fallback

Configure uma mensagem de fallback para onde redirecionar o usuário quando ele já tiver usado todas as tentativas. Normalmente, isso levaria ao suporte ao cliente, por exemplo.

<figure><img src="/files/dc6a1a6432c2b350bf845e667bf8b25969956072" alt="" width="375"><figcaption><p>Configure um fallback após X tentativas.</p></figcaption></figure>

#### Sem resposta

Você pode configurar o bot para detectar quando um usuário permanece em silêncio por um período específico. Ele aciona um bloco específico quando nenhuma resposta é recebida dentro do prazo definido ou até um horário predeterminado.

Você pode definir quanto tempo leva para o novo bloco ser acionado no campo de duração (em minutos ou em um horário específico). A duração do silêncio pode ser de 1 minuto até 1440 minutos (24 horas).

<figure><img src="/files/595816d2fd4b2f6e93e6b154ae4d4cbe3ecfd652" alt="" width="375"><figcaption><p>Você pode escolher entre 'aguardar por' ou 'aguardar até' a resposta do usuário antes de acionar um bloco</p></figcaption></figure>

## Capturar a resposta do usuário como

A parte inferior do seu bloco Coletar entrada pode ser configurada para que você tenha certeza de detectar a resposta que procura.

<figure><img src="/files/33f3264446618003f436e4553373aafc7d07eb4c" alt="" width="375"><figcaption></figcaption></figure>

#### Desativar PLN

Os usuários podem sair do Coletar entrada se uma intenção for reconhecida. Para bots com um modelo de PLN muito pequeno, isso pode gerar um falso positivo. A caixa de seleção 'desativar PLN' permite desativar o modelo de PLN enquanto estiver no Coletar entrada, garantindo que tudo o que o usuário disser seja salvo como entrada.

#### Para variável de data: sempre passado - sempre futuro

Quando você decide verificar uma `data` variável, o Chatlayer analisa a expressão do usuário para corresponder a um formato de data padrão. Se a data que você solicitar deve estar sempre no presente ou no futuro, você pode usar estas opções. Um usuário dizendo “quinta-feira”, por exemplo, será mapeado para a última ou a próxima quinta-feira.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.chatlayer.ai/chatlayer-documentation-pt-br/buildabot/flow-logic/dialog-state/user-input-bot-dialog.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
