> 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/action-bot-dialog.md).

# Ação

{% hint style="danger" %}
**A partir de 1º de outubro de 2024, todos os clientes da Chatlayer serão migrados para o novo widget web, Web V2.** Para saber mais sobre as diferenças entre V1 e V2, confira [esta página.](/chatlayer-documentation-pt-br/channels/all-channels/web/web-v2/from-web-v1-to-v2.md) Para um aprofundamento técnico, confira [esta página](/chatlayer-documentation-pt-br/channels/all-channels/web/web-v2/web-v2-methods-and-options.md).
{% endhint %}

<figure><img src="/files/ef4c64b8241b8994be39efe13712bcbba15be286" alt="" width="336"><figcaption><p>Etapa do JSON Builder.</p></figcaption></figure>

Você pode usar o JSON Builder em combinação com o [canal Web](/chatlayer-documentation-pt-br/channels/all-channels/webhook-api.md) para receber [eventos da janela](https://developer.mozilla.org/en-US/docs/Web/API/Window#events) na sua página da web. Esses eventos conterão os dados conforme configurados na sua ação do JSON Builder.

Para fazer isso, você precisará marcar a **Enviar configuração para a janela pai** opção. Ela permitirá enviar dados para o local onde o widget está de forma estruturada.

Aqui está um exemplo:

1. Configure sua ação do JSON Builder para enviar uma **idioma** chave, com uma variável recuperada da sessão.
2. Ative o alternador **Enviar configuração para a janela pai** ativado.

<figure><img src="/files/cf4da9cea847ad1537e62455f07b0a8d5ea96d42" alt=""><figcaption><p>JSON Builder com um campo de idioma.</p></figcaption></figure>

Adicione um **Ação** bloco pela [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/25b95a0640db75f31fdc169448f090b0fa38b3b2" alt="" width="144"><figcaption><p>aba Ação.</p></figcaption></figure>

**Ação** blocos permitem integrar serviços de terceiros, implementar lógica de programação personalizada ou realizar operações especializadas dentro do seu bot

<figure><img src="/files/3df45fed1d40310e8d65b03ea2a507f3c782040c" alt="" width="370"><figcaption><p>Exemplo de um bloco de Ação.</p></figcaption></figure>

## Etapas de programação

### Código

O editor de código permite que desenvolvedores criem rapidamente lógica personalizada sobre o bot escrevendo seus próprios blocos de código em Javascript. Normalmente, o editor de código é usado para fazer solicitações a sistemas externos ou para realizar operações com variáveis.

Você pode encontrar mais informações sobre o editor de código aqui:

{% content-ref url="/pages/e209280d5bf337f1896a6b3be15e7f3de0669d7e" %}
[Editor de código](/chatlayer-documentation-pt-br/integrateandcode/code-action.md)
{% endcontent-ref %}

Também há dois tutoriais nos quais mostramos como o editor de código pode ser usado:

{% content-ref url="/pages/93ad4748e9398f85a6d04d826a40f7e98a81bc8a" %}
[\[Exemplo\] Recuperando dados do Airtable (GET)](/chatlayer-documentation-pt-br/integrateandcode/code-action/retrieving-data-from-airtable-get.md)
{% endcontent-ref %}

{% content-ref url="/pages/d1bf0e5ad2ab633ddb94a799b838dd47ed1c191a" %}
[\[Exemplo\] Enviando dados para Airtable (POST)](/chatlayer-documentation-pt-br/integrateandcode/code-action/airtable.md)
{% endcontent-ref %}

### API

A [etapa da API ](/chatlayer-documentation-pt-br/integrateandcode/custom-back-end-integrations.md)é uma integração em que você integra a Chatlayer com o seu back-end ou serviços de terceiros para compartilhar dados coletados na conversa com o bot ou enriquecer o bot com dados capturados.

<figure><img src="/files/0165d9f1d80067bb122a6bdccc302ffb8ea5eecb" alt=""><figcaption><p>Etapa da API.</p></figcaption></figure>

### JSON Builder

Se o seu bot estiver publicado no [Webhook API](/chatlayer-documentation-pt-br/channels/all-channels/webhook-api.md) canal, você pode usar a ação JSON Builder para enviar mensagens para a conversa que não precisam resultar em uma mensagem real para o usuário. Normalmente, ela é usada para enviar informações sobre o usuário ou a conversa do bot ao site no qual o bot está publicado.

![](/files/5f47930fa35a0ab8b062733adde284b687e3b721)

#### Eventos da janela do site

**Você pode usar a ação do JSON Builder** **em combinação com o canal webwidget** para receber eventos da janela na sua página da web. Esses eventos conterão os dados conforme configurados na sua ação do JSON Builder.

Aqui está um exemplo:\
Configure sua ação do JSON Builder para enviar uma **idioma** chave, com uma variável recuperada da sessão, e "Enviar configuração para a janela pai" ativado.

![ação do JSON Builder com um campo de idioma](/files/43c8ffc85bb7f62ece898542c7a89de1ab36c697)

Seu widget disparará um evento para essa configuração na janela pai como um MessageEvent. O MessageEvent conterá um campo \`data\`, que contém o resultado em string da configuração do JSON Builder. Aqui está um exemplo de como ouvir esses eventos:

```javascript
// Manipulador de eventos do JSON Builder da Chatlayer
window.addEventListener('message', (event) => {
    const data = event && event.data && JSON.parse(event.data) || {}
    const { type, payload } = data
    if (type !== 'CL_DISPATCH_EVENT') return;
    console.log('Idioma da Chatlayer recebido: ' + payload.language)
})
```

## Etapas de pausa

### Pausar bot

A **Pausar bot** a etapa pausará seu bot quando ele chegar a este bloco.

<figure><img src="/files/5bdb8cdde179f7eccc2999abb856fe6d20d7f9e2" alt="" width="374"><figcaption><p>Etapa de pausar bot.</p></figcaption></figure>

### Atraso

Às vezes, você precisa de uma pequena pausa entre as mensagens do bot, seja para criar uma pausa natural ou para fazer uma chamada de API sem que o bot fique em silêncio. Essas pausas podem melhorar significativamente a experiência do usuário.

<figure><img src="/files/daf801c2f00bed0e0e9e150c42dda56d433366e0" alt="" width="375"><figcaption><p>Etapa de atraso.</p></figcaption></figure>

Você pode [por exemplo, usar Atraso antes de uma etapa Fechar conversa](#example-delay-before-close-conversation) etapa.

## Etapas de variáveis

### Limpar dados da sessão: variáveis e contexto

Use uma **Limpar sessão** etapa para limpar [variáveis](/chatlayer-documentation-pt-br/navegacao/settings/secure-variables-gdpr.md) <img src="/files/56b235c039a2cbe51a1449baf20b28d5cca14097" alt="" data-size="line"> e/ou [contexto](/chatlayer-documentation-pt-br/nlp/natural-language-processing-nlp/using-context.md) <img src="/files/1f25f47e9f9b8ead7a9f05bc19e01ebc96a0fb15" alt="" data-size="line"> que você não precisa mais.

<figure><img src="/files/cab20d02d5bc6a81b05274ec44e9a8ac4e8c5c52" alt=""><figcaption></figcaption></figure>

### Definir variáveis

A **Definir variável** a etapa facilita a criação, formatação e atribuição de valores a [variáveis](https://docs.chatlayer.ai/bot-answers/settings/secure-variables-gdpr).

{% hint style="warning" %}
Introduzimos recentemente uma [nova sintaxe de expressões](/chatlayer-documentation-pt-br/integrateandcode/expression-syntax.md). Para explorar toda a gama de expressões e funções disponíveis, confira a documentação abrangente fornecida [aqui](/chatlayer-documentation-pt-br/integrateandcode/expression-syntax.md).
{% endhint %}

<figure><img src="/files/4a1c25b4b74070995f45363b04044d88d48d9ec6" alt="" width="375"><figcaption><p>Adicione uma operação dentro do valor da sua variável.</p></figcaption></figure>

As operações permitem fazer cálculos como adição, subtração, multiplicação, divisão ou encontrar o resto de dois números.

{% hint style="info" %}
Para uma lista completa das operações disponíveis, como adição (+), multiplicação (\*), divisão (/) e muito mais, consulte a documentação detalhada fornecida [aqui](/chatlayer-documentation-pt-br/integrateandcode/expression-syntax.md).
{% endhint %}

### Ir para o diálogo do bot da variável

Use o **Ir para o diálogo do bot da variável** etapa para navegar até um bloco contido dentro de uma variável.

<figure><img src="/files/1d607f1a4d07df38660905f45462e74704ee720f" alt="" width="375"><figcaption><p>Etapa Ir para o diálogo do bot da variável.</p></figcaption></figure>

## Etapas de e-mail

### Enviar e-mail

A **Enviar e-mail** a etapa envia um e-mail com uma mensagem.

<figure><img src="/files/5e83a082a1383bbe67389e52bc6f7bd0b5e74b99" alt="" width="283"><figcaption><p>Etapa Enviar e-mail.</p></figcaption></figure>

### Relatório por e-mail

A **Relatório por e-mail** a etapa envia 2 coisas:

* um e-mail com uma mensagem
* a conversa do bot no momento em que a mensagem foi enviada

Tudo o que você precisa fazer é definir o título do e-mail, os destinatários e o corpo. Aqui você também pode usar variáveis entre chaves, se precisar.

<figure><img src="/files/0dacc63c6861d0d1b3877463194cbe1f921bd56f" alt="" width="375"><figcaption><p>Etapa de relatório por e-mail.</p></figcaption></figure>

## Etapas do voicebot

### Iniciar gravação da chamada

Da **Iniciar gravação da chamada** etapa, a [conversa com o seu voicebot está sendo gravada](/chatlayer-documentation-pt-br/voz/phone-and-voice.md).

<figure><img src="/files/f08d4ce01b8d176875e9c3e24ba72052c4d2787a" alt="" width="375"><figcaption><p>Etapa Iniciar gravação da chamada.</p></figcaption></figure>

### Parar gravação da chamada

Da **Parar gravação da chamada** etapa, a conversa com o seu [voicebot](/chatlayer-documentation-pt-br/voz/send-bot-response-as-audio.md) deixará de ser gravada.

<figure><img src="/files/ffa0f7552195d877710a30a4d8f5ee7790142eb3" alt="" width="375"><figcaption><p>Etapa Parar gravação da chamada.</p></figcaption></figure>

### Encaminhar chamada

Você pode [encaminhar a chamada do seu voicebot para um número de telefone](https://docs.chatlayer.ai/voicebots/phone-and-voice#forwarding-and-closing-a-call) usando a **Encaminhar chamada** etapa.

<figure><img src="/files/f996afa61aa34e155c4da435bdd8828059522d3b" alt="" width="375"><figcaption><p>Etapa Encaminhar chamada.</p></figcaption></figure>

{% hint style="info" %}
O número de telefone deve conter um código de país, mas sem zeros à esquerda, apenas o sinal '+'.\
Por exemplo: 0800 55 800 se torna +32 800 55 80
{% endhint %}

Depois de configurar o número de telefone para o qual você deseja encaminhar a chamada, o bot desligará automaticamente ao fazer a transferência. Para falar com o bot novamente, desligue a chamada e ligue uma segunda vez.

## Outras etapas

### Rastrear evento

Uma **Rastrear evento** etapa pode ser usada para [criar painéis e funis personalizados para melhorar a análise do desempenho do seu bot](/chatlayer-documentation-pt-br/bot-answers/track-events-for-analytics.md).

<figure><img src="/files/706a2baa36ee1f0874895d4f6b952fada34961c2" alt="" width="375"><figcaption><p>Etapa Rastrear evento.</p></figcaption></figure>

### iFrame

Um iFrame é um elemento personalizado que pode ser usado para mostrar uma página da web diferente na conversa de chat. Ele também pode ser usado para se comunicar com a janela pai usando a [API postMessage](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage).

Veja este exemplo básico:

```markup
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		</head>
		<body>
			<button onClick="window.parent.postMessage(JSON.stringify({target:'CL_API',type:'SEND_MESSAGE', payload:{text: 'Você clicou no botão'} }),'*')">
         SEND_MESSAGE
        </button>
		</body>
</html>
```

Se este bloco de código estiver hospedado e incorporado em nosso plugin de iFrame, ele enviará ao usuário uma mensagem de chat quando ele clicar no botão.

A API postMessage também pode lidar com `UPDATE_SESSION` e `GO_TO_DIALOGSTATE` eventos.

### Obter horário

A [**Obter horário** etapa](#get-time) consiste em orientar seu fluxo com base no momento atual. Você pode reutilizar essas [variáveis de tempo](#get-time-variables) dentro da sua conversa.

Quando você fornece um **deslocamento de fuso horário**, o resultado do plugin conterá propriedades de tempo equivalentes a UTC+`deslocamento`.

<details>

<summary>Obter variáveis de tempo</summary>

Se você não fornecer um deslocamento de fuso horário, o momento atual será salvo no **Variável de destino** campo. No nosso exemplo, essa variável se chamará `time`. Nesse caso, seu **Variável de destino** estará acessível com as seguintes variáveis:

* `(target).utc.year`
* `(target).utc.month`
* `(target).utc.dayOfMonth`
* `(target).utc.dayOfWeek`
* `(target).utc.hours`
* `(target).utc.minutes`
* `(target).utc.seconds`
* `(target).utc.ISO`

Por padrão, o resultado do plugin conterá propriedades relacionadas ao horário UTC.

Quando você fornece um `deslocamento de fuso horário`, o resultado também conterá propriedades de tempo equivalentes a UTC+\<OFFSET>.

* `(target).offset.year`
* `(target).offset.month`
* `(target).offset.dayOfMonth`
* `(target).offset.dayOfWeek`
* `(target).offset.hours`
* `(target).offset.minutes`
* `(target).offset.seconds`
* `(target).offset.ISO`

Dentro de uma mensagem, você pode usar essas variáveis, por exemplo, assim:

*Hoje é `{time.offset.dayOfMonth}`/`{time.offset.month}`/`{time.offset.year}`*

</details>

<figure><img src="/files/24a3d26ba624b4122affe8e72a67db288bc8cae9" alt="" width="375"><figcaption><p>Etapa Obter horário.</p></figcaption></figure>

{% content-ref url="/pages/d070e1c84c523d152a1b7ded4e1cef82b2b05916" %}
[Direcione seu fluxo de acordo com a hora](/chatlayer-documentation-pt-br/buildabot/tips-and-best-practices/route-your-flow-depending-on-the-time.md)
{% endcontent-ref %}

### Fechar conversa

O bot fechará a conversa ativa quando a **Fechar conversa** etapa for alcançada.

Isso significa que as variáveis da sessão são apagadas.

<figure><img src="/files/44b2000959624dcfe65e52819c78b21ed47d0ff3" alt="" width="375"><figcaption><p>Etapa Fechar conversas.</p></figcaption></figure>

<details>

<summary>Exemplo: Atraso antes de Fechar conversa</summary>

Você pode, por exemplo, usar a **Fechar conversa** etapa junto com uma [**Atraso**](#delay) etapa. Isso é útil em uma situação em que o usuário não responde por alguns minutos e você quer encerrar a conversa a partir daí.

![](/files/2fabad4bfe2f2db3a04a415647ff4b4e469a8da6)

</details>

{% hint style="success" %}
**Fechar conversa** agora está disponível no [Web](https://docs.chatlayer.ai/channels/channels/web-v2) canal, [Voice](https://docs.chatlayer.ai/voicebots/phone-and-voice#set-up-voice-channel) canal e [Sinch Conversation API](https://docs.chatlayer.ai/channels/sinch-conversation-api-beta) canal.
{% endhint %}

### Operação de tabela

A **Operação de tabela** a etapa trata do uso do recurso nativo da Chatlayer [Tabelas](/chatlayer-documentation-pt-br/navegacao/tables.md).

<figure><img src="/files/53fd2b1347bf5fea634c708efbf1f9df9f5f5905" alt="" width="375"><figcaption><p>Etapa de operação de tabela</p></figcaption></figure>

### IA da base de conhecimento

A **IA da base de conhecimento** a etapa trata do uso do seu [IA da base de conhecimento](#knowledge-base-ai).

<figure><img src="/files/26b807e55699f63d3c7a4c06330c182698ce4b79" alt="" width="375"><figcaption><p>etapa da IA da base de conhecimento.</p></figcaption></figure>

### Enviar para provedor de offload <a href="#send-to-offload-provider" id="send-to-offload-provider"></a>

Um usuário que chegar a esta ação será transferido para um agente humano de suporte ao cliente.

{% hint style="warning" %}
Para conseguir ver esta etapa no seu bot, você precisará [configurar um provedor de offload.](/chatlayer-documentation-pt-br/integrateandcode/human-offloading-live-chat.md)
{% endhint %}

Dependendo do provedor de offload selecionado, pode ser necessária configuração adicional.


---

# 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/action-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.
