# Zenvia NLU

## O que é Zenvia NLU

A Zenvia NLU é uma ferramenta de IA conversacional pensada de Devs para Devs. Com ela, desenvolvedores têm a liberdade em produzir assistentes virtuais, monitorar o desempenho e conectá-los a diversos canais como webchats, whatsapp, GBM, RCS, entre outros.

## **A plataforma**

A plataforma oferece a capacidade de operar no meio de diversas integrações de forma intuitiva e colaborativa. A praticidade permite que você execute, junto a outros desenvolvedores do time, vários projetos simultaneamente, aumentando assim a produtividade e compartilhamento.

A Zenvia NLU fornece aos Devs uma plataforma flexível que melhora o processo de atendimento digital dos clientes por meio dos seguintes pilares:

* **Monitor:** dashboard, métricas e atendimentos;
* **Build:** robô;
* **Connect:** integrações com canais de conversação;
* **Train:** gestão do NLU.

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

{% hint style="info" %}
A Zenvia NLU prioriza a experiência humanizada durante um atendimento robótico. Por isso, é integrado a uma das principais provedoras de IA para garantir uma interação inteligente.
{% endhint %}

## **O que a Zenvia NLU pode fazer?**

A plataforma permite que seus utilizadores criem **sistemas de bot integrados à inteligência artificial (NLU)**, sistemas ligados através de API's, e também direcionem conversas para atendimento humano com **diversas plataformas**. Assim, é possível **produzir uma experiência de atendimento conversacional**, rápida e inteligente para empresas dos mais variados setores.

## **Comece a usar a Zenvia NLU**

Essa seção da documentação contém um tutorial simples de como começar a utilizar a plataforma.

{% hint style="info" %}
**Dica:** Antes de iniciar, recomendamos que você visite ou salve a página de [Glossário](https://docs.altu.d1.cx/mais/glossario) para melhor entendimento e futuras referências.
{% endhint %}

### **Primeiros passos na Zenvia NLU**

1. Acesse [altu.com.br](https://www.altu.com.br/login);
2. Clique na opção **Entrar**;
3. Preencha o campo de **E-mail** na tela de login;
4. Prossiga em **Próximo**.

{% hint style="info" %}
Caso esteja entrando com uma conta de domínio Google, clique na opção **Entrar com o Google**.&#x20;
{% endhint %}

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

{% hint style="success" %}
Caso ainda não tenha conta criada, basta entrar em contato com nossos consultores no [whatsapp](https://www.zenvia.com/produtos/zenvia-nlu/?utm_source=zenvia-nlu).&#x20;
{% endhint %}


# Boas Práticas

Dicas para aproveitar o máximo da plataforma Zenvia NLU

Aqui, listamos algumas dicas para aproveitar ao máximo a plataforma. Conheça:

1. **Eventos**

* [Dicas para criar eventos ](/boas-praticas/eventos/convencoes)
* [Eventos personalizados](/boas-praticas/eventos/eventos-padroes)

2\. **Gestão de NLU**

* [Dicas de gestão de NLU ](/boas-praticas/gestao-de-nlu/dicas-de-gestao-de-nlu)

3\. **Personalizar widget**

* [Utilizando melhor os templates de CSS do ALTU](https://docs.altu.d1.cx/boas-praticas/personalizar-widget)


# Eventos

Os eventos, utilizados nos assistentes para geração de Dashboards e relatórios, são de grande importância para termos indicadores de como o assistente está performando e se está de acordo com o seu objetivo.

**Alguns eventos são essenciais e estão presentes na maioria dos assistentes**. Este guia foi criado para facilitar o desenvolvimento destes eventos, oferencendo orientação e apoio.

Existem dois **tipos de eventos**:&#x20;

1. Os [eventos de sistema](/monitor/eventos#eventos-de-sistema) são chamados automaticamente. Para ver a lista completa e aprender mais sobre eles, consulte a aba de [Eventos](/monitor/eventos).&#x20;
2. Os [eventos personalizados](/boas-praticas/eventos/eventos-padroes) precisam ser configurados no Builder e constar no fluxograma. **Este guia é dedicado a eles.**&#x20;

{% hint style="info" %}
**Conheça o** [**Dashboard** ](/monitor/dashboard)**do Zenvia NLU e aproveite todas as features**&#x20;
{% endhint %}


# Dicas para criar eventos

### **Padrão de criação**

* Letras minúsculas
* Snake case (separados por `_`)
* Descrições bem definidas para o evento e valores de `extra1` e `extra2`
* Salvar `sim` e `nao`ao invés de true | false ou 1 | 0
* Limite de até 3 palavras para `event_name` *.*
  * *Exemplo: menu\_anexar\_documentos*

### **Boas práticas**

* Ao criar o evento na lista de eventos, preencher todas as labels
* Utilizar o `input.valid` para salvar o `input.text` no campo extra. Caso não for válido, salvar como inválido
* Utilizar apenas o path do endpoint da API e não a URL completa.
  * &#x20;Exemplo: `api.altubots.com`


# Eventos Personalizados

Preparamos uma tabela com os eventos personalizados mais usados. Ao clicar no nome do evento, em azul, você será direcionado para uma página de explicação de como configurá-lo. &#x20;

| Identificador                                                                                 | Label                                                                                       |
| --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| [menu\_principal](/boas-praticas/eventos/eventos-padroes/menu_principal)                      | Opção selecionada pelo usuário no menu principal                                            |
| [autosservico](/boas-praticas/eventos/eventos-padroes/autosservico)                           | Total de autos serviços consumidos                                                          |
| [success\_no\_friction](/boas-praticas/eventos/eventos-padroes/sucess_no_friccion)            | Total de serviços consumidos sem atrito                                                     |
| [horario\_atendimento](/boas-praticas/eventos/eventos-padroes/horario_atendimento)            | Total de tentativas de transbordo dentro e fora do horário                                  |
| [transbordo ](/boas-praticas/eventos/eventos-padroes/transbordo)                              | Total de transbordos para o atendimento humano                                              |
| [pesquisa\_satisfacao](/boas-praticas/eventos/eventos-padroes/pesquisa_satisfacao)            | Nota atribuída pelo usuário no assistente                                                   |
| [conseguiu\_ajudar](/boas-praticas/eventos/eventos-padroes/conseguiu_ajudar)                  | Feedback dado por usuário                                                                   |
| [nivel\_confianca](/boas-praticas/eventos/eventos-padroes/nivel_confianca)                    | Nível de confiança atribuída pelo cognitivo                                                 |
| [chamada\_api](/boas-praticas/eventos/eventos-padroes/chamada_api)                            | Total de retornos de API                                                                    |
| [falha\_api](/boas-praticas/eventos/eventos-padroes/falha_api)                                | Total de retorno de API com erros                                                           |
| [primeiro\_acesso](/boas-praticas/eventos/eventos-padroes/primeiro_acesso)                    | Total de entradas de usuários novos ou retornantes                                          |
| [encerramento ](/boas-praticas/eventos/eventos-padroes/encerramento)                          | Fluxo em que o atendimento se encerrou                                                      |
| [*estouro\_tentativas\_else*](/boas-praticas/eventos/eventos-padroes/estouro_tentativas_else) | Contador de tentativas no último fluxo visitado                                             |
| [intents ](/boas-praticas/eventos/eventos-padroes/intents)                                    | Identificador de intenção                                                                   |
| [rechamada](/boas-praticas/eventos/eventos-padroes/rechamada)                                 | Total de rechamadas de usuários dentro de 24h( entre 00 e 24h do último acesso)             |
| rechamada                                                                                     | Total de rechamadas de usuários dentro de  uma semana (entre 01 e 07 dias do último acesso) |
| rechamada                                                                                     | Total de rechamadas de usuários dentro de um mês ( entre 07 e 30 dias do último acesso)     |
| rechamada                                                                                     | Total de rechamadas de usuários após um mês ( mais de 30 dias do último acesso)             |

{% hint style="info" %}
Recomendamos o uso desses eventos para monitorar a performance do seu assistente
{% endhint %}


# menu\_principal

O evento **menu\_principal** tem o objetivo de registrar a opção escolhida pelo usuário no menu principal do assistente.&#x20;

Com esse indicador é possível configurar uma métrica no Dashboard para saber qual o principal tema acessado no assistente, em um intervalo de tempo.

{% hint style="success" %}
Use esse evento de modelo para todos os menus do assistente, salvando a opção por extenso
{% endhint %}

* **Identificador:** `menu_principal`
* **Label:** `Opção selecionada pelo usuário no menu principal`
* **Label extra1:** `Opção escolhida do menu`
* **Label extra2:** `Vazio`

{% hint style="info" %}
O valor deve ser padrão de acordo com a lista de opções e caso o usuário dê algum input inválido deve ser enviado o valor `inválido` ou `ELSE`.&#x20;
{% endhint %}


# Dashboard

### Exemplo de configuração

![](/files/-M_6zlMDtgZVnuZ2rbWc)

### Visualização expandida

![](/files/-M_6zqCPYz4ebp830lZS)

{% hint style="info" %}
Aprenda a [criar e editar métricas e indicadores](/monitor/dashboard/metricas#criar-editar-e-excluir) &#x20;
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event name= menu_principal  extra1= Chamada API`

### Exemplos no fluxograma&#x20;

Exemplo 1:

![](/files/-M_70npjHQ7IA2MTcxtV)

Exemplo2:

![](/files/-M_70sjr7FDLBr9sVZCt)


# Builder

### Exemplo no Builder

![](/files/-M_71wIkn2JnuSFRM7UX)

### Exemplo de configuração

```
[                                  
    {
     "extra1": "Transbordo",
      "event_name": "menu_principal"
     }
[    
```

{% hint style="info" %}
Aprenda mais sobre o [Builder](/build/assistentes/builder)
{% endhint %}


# Lista de Eventos

### Exemplo na lista de eventos

![](/files/-M_72BJspataw0J-32wY)

### Exemplo de configuração

```
Identificador: menu_principal
Label: Opção selecionada pelo usuário no menu principal
Label extra1: Opção escolhida do menu
Label extra2: Vazio
```

{% hint style="info" %}
Aprenda mais sobre a lista de [eventos ](/monitor/eventos#visao-geral)
{% endhint %}


# Autosservico

O evento **autosservico** será disparado sempre que o assistente completar uma ação predefinida no desenvolvimento.

Por exemplo, em um assistente de FAQ, o evento **autosservico** será sempre disparado quando a resposta à dúvida do cliente for respondida pelo assistente.

Esse evento é importante, pois geralmente quando o assistente atende à necessidade do usuário, ele acaba por sair do fluxo sem responder às pesquisas de satisfação, que comumente são encontradas logo após o fornecimento de um serviço pelo assistente.

Com esse evento podemos medir indicadores de desempenho do assistente mesmo nesses casos, pois é  possível saber exatamente o quê o assistente realizou e comparar com o quê  foi proposto.&#x20;

* **Identificador:** `autosservico`
* **Label:** `Total de autosserviço consumido`
* **Label extra1:** `Serviço consumido`
* **Label extra2:** `Fluxo atual`


# Dashboard

### Exemplo de configuração

![](https://t3015470.p.clickup-attachments.com/t3015470/8f4bc894-2849-497f-a98b-8473d8bf40dd/image.png)

### Visualização expandida

![](/files/-M_zkYZCXeKnKJKjMxjT)

{% hint style="info" %}
Aprenda a [criar e editar métricas e indicadores](/monitor/dashboard/metricas#criar-editar-e-excluir).&#x20;
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event_name=autosservico  extra1=salvar serviço consumido  extra2=salvar fluxo atual`

### Exemplos no fluxograma

Exemplo 1:

![](/files/-M_70npjHQ7IA2MTcxtV)

Exemplo 2:&#x20;

![](/files/-M_77M-TguartlpRFwfA)


# Builder

### Exemplo no Builder

![](/files/-Ma0fMoHhRNg7ZIyUi8K)

### Exemplo de configuração

```
[
    {
        "extra1": "<?$menu_principal.autoservico?>",
        "extra2": "<?$fluxo.atual?>",
        "event_name": "autosservico"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder](/build/assistentes/builder)
{% endhint %}


# Lista de eventos

### Exemplo na lista de eventos

![](/files/-Ma0fcgtTVK9dGkIBtL9)

### Exemplo de configuração

```
Identificador: autosservico
Label: Total de autosserviço consumido
Label extra1: Serviço consumido
Label extra2: Fluxo atual
```

{% hint style="info" %}
Aprenda mais sobre a lista de [eventos ](/monitor/eventos#visao-geral)
{% endhint %}


# sucess\_no\_friccion

O evento **success\_no\_friction** é disparado quando o **atendimento é bem sucedido** e **sem atrito** *(Falha de api, Base sem resposta, ou Confiança baixa)* durante a jornada. Ou seja, o usuário acessou a resposta ou serviço desejado sem dificuldade.&#x20;

Com esse evento é possível perceber o nível de  **fluidez do atendimento** feito pelo assistente.&#x20;

* **Identificador:** `success_no_friction`
* **Label:** `Total de serviços consumidos sem atrito`
* **Label extra1:** `Menu principal`
* **Label extra 2:** `vazio`


# Dashboard

### Exemplo de configuração&#x20;

![](/files/-M_R_J1eNNjgFPOfMPLi)

{% hint style="info" %}
Aprenda a [criar métricas e indicadores](/monitor/dashboard/metricas) no Dashboard&#x20;
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event_name=success_no_friction  extra1=Salvar opção do menu`

### Exemplos na árvore de conversação

![](/files/-M_R_cLkVxQRpan4k-pk)


# Builder

### Exemplo no Builder

![](/files/-M_R_ntDpj-4D0MuvCg9)

###

### Exemplo de configuração

```
[
    {
        "extra1": "<?$menu_principal.menu_principal?>",
        "event_name": "success_no_friction"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder](/build/assistentes/builder)&#x20;
{% endhint %}


# Lista de Eventos

### Exemplo na lista de eventos

![](/files/-M_RaB3Nkgns3ONy8Mjs)

### Exemplo de configuração

```
Identificador: success_no_friction
Label: Total de serviços consumidos sem atrito
Label extra1: Menu principal
```

{% hint style="info" %}
Aprenda mais sobre [Eventos ](/monitor/eventos)
{% endhint %}


# horario\_atendimento

O evento **horario\_atendimento**, tem o objetivo de registrar o horário que o usuário pediu transferência para o atendimento humano e se era um horário era válido.&#x20;

Esse dados são armazenados no formato HH (somente horas), dessa forma temos uma ideia dos picos de transbordo no período.&#x20;

* **Identificador:** `horario_atendimento`
* **Label:** `Total de tentativas de transbordo dentro e fora do horário`
* **Label extra1:** `Dentro do horário`
* **Label extra2:** `Hora`

{% hint style="warning" %}
Se o seu assistente não usa transbordo para agente humano este evento não é necessário
{% endhint %}


# Dashboard

### Exemplo de configuração

![](/files/-M_7UwyODf3h6tZhVbEq)

### Visualização expandida&#x20;

![](/files/-M_7VLbaCfd42wZD_6i8)

{% hint style="info" %}
Aprenda a [criar e editar métricas e indicadores](/monitor/dashboard/metricas#criar-editar-e-excluir)
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event_name = horario_atendimento  extra1=sim   extra2=salvar hora atual (HH)`

### Exemplos na árvore de conversação

Exemplo 1:

![](/files/-M_7XraOV57zFW2L2dfx)

Exemplo2:

![](/files/-M_7XXqOn9JrsJ5rLtpc)


# Builder

### Exemplo no Builder

![](/files/-M_7YRw7Uh5Vx-IvGile)

###

### Exemplo de configuração

```
[
    {
        "extra1": "Não",
        "extra2": "<?new Date().getHours()?>",
        "event_name": "horario_atendimento"
    }
]
```

{% hint style="success" %}
Aprenda mais sobre o [Builder](/build/assistentes/builder)&#x20;
{% endhint %}


# Lista de eventos

### Exemplo na lista de eventos

![](/files/-M_7bN12QbG1DzDNcgj6)

### Exemplo de configuração

```
Identificador: horario_atendimento
Label: Total de tentativas de transbordo dentro e fora do horário
Label extra1: Dentro do horário
Label extra2: Hora
```

{% hint style="info" %}
Aprenda mais sobre a lista de [eventos ](/monitor/eventos#visao-geral)
{% endhint %}


# transbordo

O evento **transbordo** tem o objetivo de registrar o transbordo efetivo para o atendimento humano, salvando o último fluxo visitado e a opção do menu selecionada pelo usuário.&#x20;

* **Identificador:** `transbordo`
* **Label:** `Total de transbordos para o atendimento humano`
* **Label extra1:** `Menu principal`
* **Label extra2:** `Último fluxo`

{% hint style="warning" %}
Este evento não é necessário se o seu assistente não tiver a opção transbordo para agente humano
{% endhint %}


# Dashboard

### Exemplo de configuração&#x20;

![](/files/-M_7hHhW5bvkyhVcN4WG)

### Visualização expandida&#x20;

![](/files/-M_7hOMtCA8f_Hx04aUU)

{% hint style="info" %}
Aprenda a [criar e editar métricas e indicadores](/monitor/dashboard/metricas#criar-editar-e-excluir)
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event_name=transbordo  extra1=salvar a opção selecionada pelo usuário no menu principal extra2=salvar último fluxo`

### Exemplos na árvore de conversação

Exemplo 1:

![](/files/-M_7XraOV57zFW2L2dfx)

Exemplo 2:

![](/files/-M_7ij-mC3_tP-gSnjaj)


# Builder

### Exemplo no Builder

![](/files/-M_7j5CL_FtZnHtA7dCQ)

### Exemplo de configuração

```
[
    {
        "extra1": "<?$menu_principal.menu_principal?>",
        "extra2": "<?$fluxoBI?>",
        "event_name": "transbordo"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder](/build/assistentes/builder)&#x20;
{% endhint %}


# Lista de eventos

### Exemplo na lista de eventos

![](/files/-M_7jgAO3N_aA5YDubrw)

### Exemplo de configuração

```
Identificador: transbordo
Label: Total de transbordos para o atendimento humano
Label extra1: Menu principal
Label extra2: Último fluxo
```

{% hint style="info" %}
Aprenda mais sobre a lista de [eventos ](/monitor/eventos#visao-geral)
{% endhint %}


# pesquisa\_satisfacao

O evento **pesquisa\_satisfacao** tem o objetivo de salvar a nota da pesquisa de satisfação.

{% hint style="info" %}
Se o seu assistente não usa pesquisa de satisfação, este evento não é necessário.&#x20;
{% endhint %}

* **Identificador:** `pesquisa_satisfacao`
* **Label:** `Nota atribuída pelo usuário no bot`
* **Label extra1:** `Nota`
* **Label extra2:** `Menu principal`

{% hint style="warning" %}
&#x20;**O valor deve ser padrão de acordo com a lista de opções e, caso o usuário dê algum input inválido, o evento não deve ser disparado**
{% endhint %}


# Dashboard

### Exemplo de configuração 1

Em operações, escolha a opção soma para quantidade total de ocorrências.&#x20;

![](/files/-M_7oAOXa9-RpxBZKLDR)

### Visualização expandida 1

![](/files/-M_7ocVdKbL3FK9OX3Ek)

### Exemplo de configuração 2&#x20;

Em operações, escolha a opção CSAT .

![](/files/-M_7ojb2lSsazAZgPH1X)

### Visualização expandida 2

![](/files/-M_7p2yPGnw0yabiDq3X)

{% hint style="info" %}
Aprenda a [criar e editar métricas e indicadores](/monitor/dashboard/metricas#criar-editar-e-excluir)
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event_name =pesquisa_satisfacao  extra1=salvar o valor da opção escolhida  extra2=Salvar opção escolhida no menu principal`

### Exemplos na árvore de conversação

![](/files/-M_7pvZj5Ixj54zN5L3j)


# Builder

### Exemplo no Builder

![](/files/-M_7qJWoOcIF-xrwJcxS)

### Exemplo de configuração

```
[
    {
        "extra1": "<?$valorPesquisa?>",
        "extra2": "<?$menu_principal.menu_principal?>",
        "event_name": "pesquisa_satisfacao"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder](/build/assistentes/builder)&#x20;
{% endhint %}


# Lista de eventos

### Exemplo na lista de eventos

![](/files/-M_7r8qDMduHX3zrMQ6f)

### Exemplo de configuração

```
Identificador: pesquisa_satisfacao
Label: Nota atribuída pelo usuário no bot
Label extra1: Nota 
Label extra2: Menu principal
```

{% hint style="info" %}
Aprenda mais sobre a lista de [eventos ](/monitor/eventos#visao-geral)
{% endhint %}


# conseguiu\_ajudar

O evento **conseguiu\_ajudar** tem o objetivo de salvar, na pesquisa de satisfação, se a necessidade do usuário foi atendida ou não.

* **Identificador:** `conseguiu_ajudar`
* **Label:** `Feedback dado pelo usuário`
* **Label extra1:** `Feedback`
* **Label extra2:** `Menu principal`

{% hint style="info" %}
Se o seu assistente não faz essa pergunta na pesquisa de satisfação, este evento não é necessário
{% endhint %}


# Dashboard

### Exemplo de configuração&#x20;

![](/files/-M_7vYD9EBuwELqqgMD_)

### Visualização expandida

![](/files/-M_7vfM2mGJJF6kBZ-Pp)

{% hint style="info" %}
Aprenda a [criar e editar métricas e indicadores](/monitor/dashboard/metricas#criar-editar-e-excluir)
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event_name = conseguiu_ajudar extra1 = sim|nao extra2= salvar a opção escolhida no menu principal`

### Exemplos na árvore de conversação

Exemplo 1:

![](/files/-M_7XraOV57zFW2L2dfx)

Exemplo 2:&#x20;

![](/files/-M_7w3F12U5s-f_cX6nx)


# Builder

### Exemplo no Builder

![](/files/-M_7w_GR16XOip2Vc2Fd)

### Exemplo de configuração

```
[
    {
        "extra1": "<?$valorNecessidadeAtendida?>",
        "extra2": "<?$menu_principal.menu_principal?>",
        "event_name": "conseguiu_ajudar"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder](/build/assistentes/builder)&#x20;
{% endhint %}


# Lista de eventos

### Exemplo na lista de eventos

![](/files/-M_7wwDoek3Spk2I8bsL)

### Exemplo de configuração

```
Identificador: conseguiu_ajudar
Label: Feedback dado pelo usuário
Label extra1: Feedback
Label extra2: Menu principal
```

{% hint style="info" %}
Aprenda mais sobre a lista de [eventos ](/monitor/eventos#visao-geral)
{% endhint %}


# nivel\_confianca

O evento **nivel\_confianca** tem o objetivo de registrar toda vez que o cognitivo do assistente é acionado. O evento é salvo indicando se o nível de confiança é high ou medium e a dúvida do usuário, também salvamos nos `details` a `intent` e o `score_level` registrados.

Com este evento, temos a possibilidade de saber o fluxo percorrido no cognitivo do assistente, e as dúvidas mais comuns.

* **Identificador:** `nivel_confianca`
* **Label:** `Nível de confiança atribuída pelo cognitivo`
* **Label extra1:** `Score level`
* **Label extra2:** `Dúvida`
* **Details.field1:** `Intent`

{% hint style="info" %}
Aprenda mais sobre o [NLU](broken://pages/-MYdi63eDCG8aSZzhTt5) na página de Train&#x20;
{% endhint %}


# Dashboard

### Exemplo de configuração&#x20;

![](/files/-M_LbZ9huFvgNvDgYAzx)

### Visualização expandida&#x20;

![](/files/-M_Lbfg18ZWSmU3jgJYP)

{% hint style="info" %}
Aprenda a [criar e editar métricas e indicadores](/monitor/dashboard/metricas#criar-editar-e-excluir)
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event_name=nivel_confianca extra1=Score level extra2=Salvar a dúvida digitada  details= intent`

### Exemplo na árvore re conversação&#x20;

![](/files/-M_LcI5jauSSnzAVx6LP)


# Builder

### Exemplo no Builder

![](/files/-M_LcavxHeO6Us0sJkcr)

### Exemplo de configuração

```
[
    {
        "extra1": "<?score_level?>",
        "extra2": "<?input.text?>",
        "details": {
            "field1": "intent"
        },
        "event_name": "nivel_confianca"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder ](/build/assistentes/builder)
{% endhint %}


# Lista de eventos

### Exemplo na lista de eventos&#x20;

![](/files/-M_LdRfudXai0k3W-q6j)

### Exemplo de configuração

```
Identificador: nivel_confianca
Label: Nível de confiança atribuída pelo cognitivo
Label extra1: Score level
Label extra2: Dúvida
```

{% hint style="info" %}
Aprenda mais sobre [Eventos ](/monitor/eventos)
{% endhint %}


# chamada\_api

O evento **chamada\_api** tem o objetivo de registrar todas as APIs que foram usadas durante a interação com o assistente para possíveis relatórios posteriores. Ele deve salvar o `endpoint` da API e o `status code` da response.

* **Identificador:** `chamada_api`
* **Label:** `Total de retornos de API`
* **Label extra1:** `Função da api`` `*`(Path da API)`*
* **Label extra2:** `Status code`


# Dashboard

### Exemplo de configuração

![](/files/-M_LhNpVfm84p1ySlrYo)

### Visualização expandida

![](/files/-M_LhUMwn0YiduD1504a)

{% hint style="info" %}
Aprenda a [criar e editar métricas e indicadores](/monitor/dashboard/metricas#criar-editar-e-excluir)
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event_name= chamada_api  extra1=path do endpoint  extra2=status_code`

### Exemplos na árvore de conversação

![](/files/-M_Li-RL_FciPBzanLPh)


# Builder

### Exemplo no Builder

![](/files/-M_LiDNC4ucs5OqTHNsT)

### Exemplo de configuração:

```
[
    {
        "extra1": "<? $last_api.endpoint_path ?>",
        "extra2": "<? contact.context[$last_api.result_name].code ?>",
        "event_name": "chamada_api"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder ](/build/assistentes/builder)
{% endhint %}


# Lista de Eventos

### Exemplo na lista de eventos

![](/files/-M_LiVvg28H4vyemJqps)

### Exemplo de configuração

```
Identificador: chamada_api
Label: Total de retornos de API.
Label extra1: Path
Label extra2: Status code
```

{% hint style="info" %}
Aprenda mais sobre [Eventos ](/monitor/eventos)
{% endhint %}


# falha\_api

O evento **falha\_api** tem o objetivo de registrar toda API que der erro ao ser acionada. Ele é disparado na aba Falha API e salva o *`endpoint`* da api e o `status_code`do *`response`* que ocasionaram a falha.

* **Identificador:** `falha_api`
* **Label:** `Total de retornos de API com erro`
* **Label extra1:** `Endpoint`
* **Label extra2:** `Status code`

{% hint style="info" %}
Aprenda mais sobre o [monitoramento de APIs](/monitor/monitoramento-de-apis)&#x20;
{% endhint %}


# Dashboard

### Exemplo de configuração

![](/files/-M_LkbWtLV5bOqORMegV)

### Visualização expandida

![](/files/-M_LkhK8A4PEPB2TgZUO)

{% hint style="info" %}
Aprenda a [criar e editar métricas e indicadores](/monitor/dashboard/metricas#criar-editar-e-excluir)
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event name=falha_api  extra1=salvar o path do endpoint  extra2=status_code`

### Exemplo na árvore de conversação&#x20;

![](/files/-M_LmYjpdlbZFiQk4cWr)


# Builder

### Exemplo no Builder

![](/files/-M_LmtVSsHg4UVCeaw9r)

### Exemplo de configuração:

```
[
    {
        "extra1": "<? context.last_api.endpoint_path ?>",
        "extra2": "<? contact.context[context.last_api.result_name].code ?>",
        "event_name": "falha_api"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder ](/build/assistentes/builder)
{% endhint %}


# Lista de Eventos

### Exemplo na lista de eventos

![](/files/-M_LnBJRnECSqiq0POTd)

### Exemplo de configuração

```
Identificador: falha_api
Label: Total de retornos de API com erro
Label extra1: Endpoint
Label extra2: Status code
```

{% hint style="info" %}
Aprenda mais sobre [Eventos ](/monitor/eventos)
{% endhint %}


# primeiro\_acesso

O evento **primeiro\_acesso** tem o objetivo de registrar quando o assistente foi acessado pelo usuário pela primeira vez e a API que foi usada,  para possíveis relatórios posteriores.

* **Identificador:** `primeiro_acesso`
* **Label:** `Total de entradas de usuários novos e retornantes`
* **Label extra1:** `Tipo de usuário`
* **Label extra2:** `Horário do acesso`


# Dashboard

### Exemplo de configuração

![](/files/-M_LpDvwjGKcd5guXuQ9)

### Visualização expandida

![](/files/-M_Lp3QX__pw7HCqJeKX)

{% hint style="info" %}
Aprenda a [criar e editar métricas e indicadores](/monitor/dashboard/metricas#criar-editar-e-excluir)
{% endhint %}

###


# Fluxograma

### Exemplo de configuração

`event name=primeiro_acesso  extra1="Novos usuários" extra2=hora do acesso (HH)`

### Exemplos na árvore de conversação

![](/files/-M_LpjLxqXGzWXquyuz2)


# Builder

### Exemplo no Builder

![](/files/-M_Lpuq-3WwwU9eWrSGq)

### Exemplo de configuração

```
[
    {
        "extra1": "Novos usuários",
        "extra2": "<? new Date().getHours() ?>",
        "event_name": "primeiro_acesso"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder ](/build/assistentes/builder)
{% endhint %}


# Lista de Eventos

### Exemplo na lista de eventos

![](/files/-M_LqAYdtACsXvuLj7nX)

### Exemplo de configuração

```
Identificador: primeiro_acesso
Label: Total de entradas de usuários novos e retornantes
Label extra1: Tipo de usuário
Label extra2: Horário do acesso
```

{% hint style="info" %}
Aprenda mais sobre [Eventos ](/monitor/eventos)
{% endhint %}


# encerramento

O evento **encerramento** tem o objetivo de registrar o fim do atendimento e o último fluxo percorrido pelo usuário. Ao analisar esse evento, é possível saber em qual fluxo os diálogos estão sendo encerrados com mais frequência.

* **Identificador:** `encerramento`
* **Label:** `Salva o fluxo de encerramento`
* **Label extra1:** `Último fluxo`
* **Label extra2:** `Vazio`&#x20;


# Dashboard

### Exemplo de configuração&#x20;

![](/files/-M_MJsu_xb5yN_xbpUR6)

### Visualização expandida&#x20;

![](/files/-M_MQTctFsFlhJ92Vp5J)

{% hint style="info" %}
Aprenda a [criar métricas e indicadores](/monitor/dashboard/metricas) no Dashboard&#x20;
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event_name = encerramento  extra1=salvar último fluxo`

### Exemplos na árvore de conversação

![](/files/-M_MLUBQGZsCBSKyWRKQ)


# Builder

### Exemplo no Builder

![](/files/-M_MLfISLuvIlVprqbC7)

### Exemplo de configuração

```
[
    {
        "extra1": "<?$fluxoBI?>",
        "event_name": "encerramento"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder](/build/assistentes/builder) do Altu&#x20;
{% endhint %}


# Lista de Eventos

### Exemplo na lista de eventos

![](/files/-M_MM_NUJ-isDoX6TvW4)

### Exemplo de configuração

```
Identificador: intents
Label: Intenção identificada
Label extra1: Nome da intenção
```

{% hint style="info" %}
Aprenda mais sobre [Eventos ](/monitor/eventos)
{% endhint %}


# estouro\_tentativas\_else

O evento **estouro\_tentativas\_else** irá registrar quando houver estouro do contador de tentativas do **else padrão** ou do **else genérico**, salvando a quantidade de tentativas realizadas e o último fluxo visitado.

&#x20;Com esse evento podemos saber em qual momento do fluxo os usuários estão com dificuldade de prosseguir. Por exemplo, em uma validação de segurança.&#x20;

* **Identificador:** `estouro_tentativas_else`
* **Label:** `Registra o estouro das tentativas do else padrão e genérico`
* **Label extra1:** `Quantidade de tentativas realizadas`
* **Label extra2:** `Último fluxo`


# Dashboard

### Exemplo de configuração

![](/files/-M_MAR2KWOyEyt-hP0eN)

### Visualização expandida&#x20;

![](/files/-M_MAXX8B4QVfpBW5aFd)

{% hint style="info" %}
Aprenda a [criar e editar métricas e indicadores](/monitor/dashboard/metricas#criar-editar-e-excluir)
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event_name=estouro_tentativas_else  extra1=salvar a quantidade de tentativas  extra2 = salvar de qual fluxo veio`

### Exemplo na árvore de conversação

![](/files/-M_MApAr_WJ4AnnuW-7h)


# Builder

### Exemplo no Builder

![](/files/-M_MB1GINQ6fnhtTc633)

### Exemplo de configuração

```
[
    {
        "extra1": "<?$contadores.tentativas_else_padrao?>",
        "extra2": "<?$fluxoBI?>",
        "event_name": "estouro_tentativas_else"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder ](/build/assistentes/builder)
{% endhint %}


# Lista de Eventos

### Exemplo na lista de eventos

![](/files/-M_MBFhU6aIFAP2ce0AM)

### Exemplo de configuração

```
Identificador: estouro_tentativas_else
Label: Registra o estouro das tentativas do else padrão e genérico
Label extra1: Quantidade de tentativas realizadas
Label extra2: Último fluxo
```

{% hint style="info" %}
Aprenda mais sobre [Eventos ](/monitor/eventos)
{% endhint %}


# intents

O evento **intents** será disparado sempre que uma **intenção for identificada,** salvando o nome dela no campo extra1. Com isso é possível criar uma métrica com as intenções mais solicitadas ao assistente.&#x20;

* **Identificador:** `intents`
* **Label:** `Intenção identificada`
* **Label extra1:** `Nome da intenção`
* **Label extra 2:** `Vazio`&#x20;

{% hint style="info" %}
Para facilitar o desenvolvimento no Builder um router de cognitivo deve ser considerado
{% endhint %}


# Dashboard

### Exemplo de configuração

![](/files/-M_MEZxDJ6Acrek_sA6t)

### Visualização expandida&#x20;

![](/files/-M_MEefSizT7e8LX6xHt)

{% hint style="info" %}
Aprenda a [criar métricas e indicadores](/monitor/dashboard/metricas) no Dashboard&#x20;
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event_name = intents   extra1= Nome da intenção`

### Exemplo na árvore de conversação&#x20;

![](/files/-M_MHRoIOpU_H3gVNaC6)


# Builder

### Exemplo no Builder

![](/files/-M_MHc9RNSsMKb7_DzxC)

### Exemplo de configuração

```
[
    {
        "extra1": "<?intent?>",
        "event_name": "intents"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder ](/build/assistentes/builder)
{% endhint %}


# Lista de Eventos

### Exemplo na lista de eventos

![](/files/-M_MHrtmzXNDgnqP6tNA)

### Exemplo de configuração

```
Identificador: intents
Label: Intenção identificada
Label extra1: Nome da intenção
```

{% hint style="info" %}
Aprenda mais sobre [Eventos ](/monitor/eventos)
{% endhint %}


# rechamada

O evento **rechamada** tem o objetivo mostrar a **recorrência do uso** do assistente pelos usuários por período de tempo. Junto com demais eventos pode ser utilizado para **mapear o comportamento do usuário**.

* **Identificador:** `rechamada`
* **Label:** Total de `rechamadas de usuários`
* **Label extra1:** `Rechamada`
* **Label extra2:** `Tempo até a rechamada`


# Dashboard

### Exemplo de configuração

![](/files/-M_Lrmwhj2OQmHoehk2_)

### Visualização expandida

![](/files/-M_Lrsgo6rgAAqHw7Rmw)

{% hint style="info" %}
Aprenda a [criar e editar métricas e indicadores](/monitor/dashboard/metricas#criar-editar-e-excluir)
{% endhint %}


# Fluxograma

### Exemplo de configuração

`event name= rechamada  extra1= "diaria" extra2= {Tempo em hora até a rechamada}`

### Exemplos na árvore de conversação

![](/files/-M_M8Dq9FlcQsmQBToMO)


# Builder

### Exemplo no Builder

![](/files/-M_M8ZVsrs7GpMEB7pOl)

### Exemplo de configuração

```
[
    {
        "extra1": "Diária",
        "extra2": "<? $config_inicial.horas_rechamada ?>",
        "event_name": "rechamada"
    }
]
```

{% hint style="info" %}
Aprenda mais sobre o [Builder ](/build/assistentes/builder)
{% endhint %}


# Lista de Eventos

### Exemplo na lista de eventos

![](/files/-M_M8sDw4JW6ex0-Dd4P)

### Exemplo de configuração

```
Identificador: rechamada
Label: Total de rechamadas de usuários
Label extra1: Rechamada
Label extra2: Tempo até a rechamada
```

{% hint style="info" %}
Aprenda mais sobre [Eventos ](/monitor/eventos)
{% endhint %}


# Gestão de NLU

A área de [Gestão de NLU](broken://pages/-MYdiiNceXdjTeUMjSb1) faz parte do pilar Train e é dedicada ao processo cognitivo do assistente, é como se fosse a sala de aula dos assistentes virtuais. Usamos a ferramenta NLU (que  significa Natural Language Understanding ou compreensão de linguagem natural) para ensinar aos robôs padrões da fala humana.&#x20;

Uma boa gestão de NLU garante bons resultados do assistente. Então, não deixe de conferir as dicas que preparamos para você!&#x20;

<br>


# Dicas de gestão de NLU

### Boas práticas&#x20;

* Comece o **nome das Intenções com verbos** e **use underline** para as separações, por exemplo: informar\_horario\_funcionamento&#x20;
* Sempre **preencha o Label**. Ele é o nome amigável dado para a intenção que será mostrada ao usuário. Para o exemplo anterior a label ficaria: Horário de funcionamento
* Para que cognitivo fique balanceado o ideal é que **inicialmente** cada intenção tenha **entre 6 a 10 frases de treinamento**.  Mas essa quantia pode aumentar, dependendo do escopo do projeto. Converse com seu time de curadoria&#x20;
* O ideal é que cada **NLU** passe por **ajustes semanais e publicações**. O processo  de publicação sempre deve ser realizado em conjunto com o seu time de NLU
* É ideal **revisitar as automações** no mínimo **uma vez por mês**, para garantir que estão dentro dos padrões de objetivo do assistente&#x20;


# Personalizar widget

Ao utilizar os templates de CSS do Zenvia NLU, pode surgir a necessidade de uma parametrização um pouco mais específica.

Template Basic:

![](/files/4q0holZNx8V7x6sD3kVi)

Template Zenvia NLU:

![](/files/lmSy7cUZBDaLcTwD8mUH)

### Configuração

Siga os passos abaixo para realizar a modificação apenas com o CSS:

* Nas configurações do widget acesse Aparência e Comportamento

![](/files/fqzMqoqm4s9Z4tsfuVLC)

* No template que deseja utilizar insira o código abaixo, que fará com que a tag **\<span>** que contém o título do widget seja ocultada. É recomendado colocar esta mudança próxima das linhas que definem o `.header-title` por organização.

```
.header-title span {
    display: none
}
```

* Após o segundo passo o título estará oculto como no exemplo abaixo:

![](/files/2fycRk6259gdevuiXJY7)

* Após remover o título basta ter o link da imagem e inserir ela junto com as mudanças abaixo na classe `.header-title` também na aba CSS do widget:

```
.header-title{
...
background-image: url(LINK DA IMAGEM);
background-repeat: no-repeat;
background-size: 50%;
background-position: center;
height: 100%;
width: 100%;
}
```

* Feitas estas mudanças você deverá ter a imagem centralizada no lugar do título.&#x20;

Uma observação importante é que a imagem tenha dimensões como **largura: 150px** e **altura: 50px** ou equivalente a estes valores para que se encaixe bem. Para modificar o tamanho da imagem basta modificar o valor da propriedade `background-size.`

Para o exemplo abaixo utilizou-se a seguinte imagem:

![](/files/6faX2pBPu2pfneUiBKFy)

Se quiser baixá-la, [clique aqui](https://images.endeavor.org.br/uploads/2020/03/27110331/logo-d1-direct-one-empreendedor-endeavor-360x115.png).

#### **Resultado:**

![](/files/3CYhRnVSPh5BAxMvTlmA)


# Dashboard

O Dashboard é a **tela inicial** da Zenvia NLU e foi criado para **facilitar a análise** e compreensão do **desempenho dos assistentes** e atender às necessidades de cada negócio, por isso, ele é totalmente **personalizável**! Você pode criar gráficos, filtrar e exportar dados, e mais!

## Visão Geral

Ao acessar, solicite o carregamento dos dashboards:

![](/files/-MdP63xPGnf0GcrSsPVu)

Ao serem carregados, você terá a seguinte visão:

![](/files/-MS-Vnvx9k1KZ885IXWC)

## **Estrutura** <a href="#b6ab46ea-507d-4838-a887-bae6de86fa10" id="b6ab46ea-507d-4838-a887-bae6de86fa10"></a>

### Barra Principal

Na parte superior da tela está a barra principal, ela tem várias funcionalidades que te ajudarão a criar e visualizar seu dashboard. O card tem a explicação detalhada.

![Imagem barra principal](/files/-MZt0BG6vwTEBb9lPOBB)

### **Múltiplas Análises**

Amplie suas análises criando **mais de um Dashboard por assistente**, basta clicar no **botão "criar"** com o ícone "+" na parte superior da tela, escolher como vai chamar o novo Dashboard, qual o assistente que ele vai ser correspondente, clicar em adicionar e está pronto!

{% hint style="warning" %}
&#x20;Não é possível dar nomes iguais para mais de um Dashboard no mesmo assistente.
{% endhint %}

![](/files/-MVS6ogqCTX4g-yDgFSD)

Usamos os dados do assistente escolhido e os [eventos](/monitor/eventos) configurados para alimentar as métricas de cada Dashboard.

{% hint style="danger" %}
Ao excluir um assistente seus Dashboards também serão excluídos
{% endhint %}

#### **Acessando Dashboards**

Para encontrar todos os Dashboards criados é simples, basta clicar no **botão "lista"** com o ícone ![](https://firebasestorage.googleapis.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-MBjaNm5lB1Yqgih1JCA%2F-MVJ-LgYElURyIeg3u05%2F-MVJ3a2Y6N2GDB2lgciS%2FCaptura%20de%20tela%20de%202021-03-08%2020-00-04.png?alt=media\&token=67323f17-6525-41dc-bb4b-310f4a962b62) que está na **parte superior da tela.** Nessa aba você pode acessar, renomear ou excluir itens.

{% hint style="danger" %}
Ao excluir um Dashboard as métricas e gráficos também serão excluídos.
{% endhint %}

### **Filtros**

Você pode filtrar os dados que serão mostrados nos gráficos e cards que irá criar ou alterar os que já existem.&#x20;

![](/files/-MZt2lX_f2hJ_1dr3Fw1)

Escolha o assistente desejado e filtre os dados com a **combinação do canal e data.**

{% hint style="info" %}
O período máximo de filtragem é de 1 mês
{% endhint %}

### Barra de novas opções <a href="#id-4af9358e-23d3-4c72-8a14-cc188ecd2650" id="id-4af9358e-23d3-4c72-8a14-cc188ecd2650"></a>

* Adicionar métricas
* Adicionar gráficos
* Export

![](/files/-Mfh2P0TUjuTZB4TrwvV)

### &#x20;<a href="#id-71743c51-ca0a-49c8-98ae-bb33e788de9b" id="id-71743c51-ca0a-49c8-98ae-bb33e788de9b"></a>


# Métricas e indicadores

**Métricas** são **dados brutos** obtidos por meio da troca de mensagens entre usuários e assistentes. Elas serão sempre o resultado da **soma** de um determinado evento.

Já os **indicadores** são criados usando operações de **Subtração, Multiplicação e Divisão sobre as métricas existentes**, ou seja, são cálculos que usam as métricas para obter informações que indicam a performance do assistente virtual.

![](/files/-MZtObXe5UceeSGmCHlF)

Dois indicadores **já estão configurados** no Dashboard da Zenvia NLU, o **NPS e CSAT**. Vamos explicá-los melhor à frente.

## Criar, editar **e excluir**&#x20;

**Clique no "criar" com o ícone "+** " que está dentro do card pontilhado para criar uma nova métrica ou indicador.&#x20;

![](/files/CaFssWq62Be7CS46FN2J)

**Será preciso escolher:**

* **Nome:** não pode ser repetido;
* **Descrição** campo para descrição da métrica - 100 caractéres;&#x20;
* **Operação;**
* **Eventos;**
* **Cor;**

![](/files/wTKTH4Tkn6tEAeZ0OYLA)

Depois disso, irá aparecer um card no dashboard, ele será similar ao exemplo abaixo, e tem algumas funcionalidades:

![](https://t3001453.p.clickup-attachments.com/t3001453/7bca88da-d26e-465e-9e81-7ddbe19c40f0/cardash.png)

* **Edição:** permite mudar todos os valores definidos na criação da métrica ou indicador. Para isso, clique no ícone de lápis.
* **Expandir:** irá apresentar todos os [campos extras](/monitor/eventos) configurados nos eventos, e uma contagem da ocorrência desses campos.
* **Excluir:** basta clicar no ícone de lixeira e confirmar. **Nenhum dado da métrica é recuperável após a exclusão.**

{% hint style="warning" %}
É permito criar no máximo 20 cards por Dashboard.
{% endhint %}

Você também pode reordenar os cards da maneira que preferir

![](/files/C9mH7BnZCNvH0FIY9wen)

## Operações

A partir das operações de subtração, multiplicação e divisão entre métricas conseguimos criar indicadores. Use-os como ferramentas para minerar os dados e extrair informações importantes para o negócio e sobre o desempenho do assistente. Todos os cálculos usam os eventos como parâmetros e apresentam os resultados obtidos. Na Zenvia NLU existem 4 opções de operações:

![](/files/vY1qldsKKLLLJoSB4lfD)

**Soma**

* Usa apenas **um evento** e mostra a quantidade **total de ocorrência**s dele.\
  **Exemplo**: ao escolher o evento *new\_dialog* será mostrado no card da métrica a quantidade total de vezes que o assistente iniciou uma nova conversa.

**Subtração**

* A métrica de subtração informará os valores extras existentes tanto no evento 1 quanto no evento 2. Caso o extra possua valor positivo, significa que esse extra apareceu maior número de vezes no evento 1, para valores negativos, significa que o extra apareceu em maior quantidade no evento 2, consequentemente, para valores zerados significa que apareceram a mesma quantidade de vezes em ambos os eventos.

![](/files/IBOIT0YmUl2dL3rH4TMw)

Como pode ser visto no exemplo, para o **extra1**, os valores “**extra1\_event1**” e “**event1**” apareceram com **quantidade positiva**, pois aparecem em sua **maioria no evento 1**. Enquanto os valores “**extra1\_event2**” e “**event2**” aparecem com **quantidade negativa** pois aparecem em sua **maioria no evento 2**. Por último o valor “**extra1**” aparece a **mesma quantidade de vezes em ambos os eventos**, resultando na **quantidade 0**.&#x20;

**Multiplicação e divisão**

* Precisam de dois eventos para gerar resultado, formando assim um indicador.
* A ordem na operação é sempre a que você seleciona na criação do card.\
  **Exemplo**: (`evento1 - evento2`; `evento1 * evento2`; `evento1 / evento2`).&#x20;

![](https://t3001453.p.clickup-attachments.com/t3001453/f5e6760a-e9f7-4598-85dc-3c7a0840494a/Cart%C3%A3o%20de%20Visita%20Azul%20e%20Dourado%20para%20Instrutora%20de%20Ioga.jpg)

O evento 1 sempre será o aditivo ou fator ou divisor da operação, enquanto o evento 2 será definido como subtrativo ou fator ou dividendo.

### Indicadores

* **NPS** ou Net Promoter Score considera as notas de 0 a 10 dos usuários, calculando o score da seguinte forma: ((`quantidade de notas 9 e 10`) - (`quantidade de notas de 0 a 6`)) / (`quantidade total de notas`).
* **CSAT** avalia a satisfação do usuário (Customer Satisfaction) utilizando as pontuações 1 a 5 (com possibilidade de variação) e a conta realizada considera: (`soma das notas`) / (`quantidade de notas`).

![](/files/ogdjNXf3h0XAhF75uAOd)

### Agrupamento de valores

Ao criar ou editar uma métrica de soma, será disponibilizado a opção de adicionar agrupamento de valores.

![](/files/l0Xx68TPpkiMG6HWJxNq)

Pode ser criado vários grupos que serão aplicados para agrupar valores de extra1 e extra2.&#x20;

Em cada grupo é preciso das seguintes informações:

![](/files/-Mb2g6PvD5eaMC94QV7Q)

* Nome
* Valores do grupo
  * exemplos: qualquer valor nos extras iguais a um dos valores do grupo (sim, SIM, S, s, Sim, si) passará a ser contabilizado como Sim.

{% hint style="info" %}
Não é possível cria mais de um grupo com o mesmo nome
{% endhint %}

#### Comparações

Exemplo a ser demonstrado:

* &#x20;*escolha, escolha1 e escolha2 -> Escolhas*
* *sim, si, s* -> Sim
* *nao, n -> Não*

{% tabs %}
{% tab title="Com" %}
![](/files/-Mb2h7EmSfCtPVsV9cSF)
{% endtab %}

{% tab title="Sem" %}
![](/files/-Mb2h54Zv0M6cAKtU0S7)
{% endtab %}
{% endtabs %}

{% hint style="info" %}
Não é possível colocar valores igual em agrupamentos diferentes.
{% endhint %}

### Expansão de operações

Relacione o evento 1 com o evento 2, ou seja, comparando e calculando a quantidade de ocorrências de cada valor de extra1 no evento1 com esse mesmo valor de extra1 no evento2. A mesma lógica é aplicada aos valores de extra2 do evento1 e do evento2.

**Exemplo:**

Analisando os exemplos abaixo temos:

* O valor "*Consulta extrato"* ocorreu 9 vezes no extra do evento1 e 5 vezes no extra1 do evento2
* O valor "*200"* ocorreu 7 vezes no extra do evento1 e 7 vezes no extra1 do evento2

![](/files/-McJs36kswFZ2CLFXITf)

![](/files/-McJs8lBY8Z1qE2gHYhJ)

{% hint style="info" %}
Valores de extras encontrado no evento1 mas não encontrado no evento2 são agrupados como "*Restantes*".
{% endhint %}


# Gráficos

O gráfico de métricas **apresenta valores diários de cada operação realizada** e é **atualizado automaticamente**.

![](/files/-MIQ8XmzVBs4KtXfvHx1)

&#x20;Para **visualizar em tela cheia**, clique no **botão com ícone de reticências**  `...`  localizado no canto direito superior do gráfico.

![](/files/-MT6CwaK5Cz4IY4btscf)

Também é possível escolher quais métricas ficarão visíveis **no gráfico**, sem precisar apagar dados, para isso **clique na legenda para esconder e tornar visível a variável que desejar.**

## Criação e Edição de Gráficos&#x20;

Clique no botão **adicionar gráfico** que está na parte inferior da tela, abaixo do gráfico principal.

![](/files/-MZrCwZZmS6KpULa3XUK)

{% hint style="info" %}
Cada gráfico personalizado pode representar apenas um evento.
{% endhint %}

Pra criar um gráfico é preciso escolher:

* **Nome**
* **Evento**
* **Tipo de gráfico** (linha, barra, pizza, TNPS)
* **Dimensão** (tela inteira ou metade da tela)
* **Tipo de contagem:**

&#x20;A **Contagem simples** é feita apenas no gráfico de linha e representa a quantidade de vezes em que o evento foi disparado durante o período selecionado.&#x20;

A **Contagem extra1** mostra a quantidade de vezes em que os valores do campo extra1 foram disparados durante o período selecionado.&#x20;

A **Contagem extra2** mostra a quantidade de vezes em que os diferentes valores do campo extra2 foram disparados durante o período selecionado.

### **Gráfico de métricas**

O Gráfico customizado do tipo **métricas** possibilita adicionar ou remover métricas, além de poder criar outros gráficos do mesmo tipo, com informações diferentes

Para criação, basta selecionar o tipo 'métricas', e selecionar as métricas desejadas

![](/files/-MfiC6_V8qq5dDuFTooB)

### **Gráfico de linha**

O **Gráfico de linha** representa a quantidade diária de disparos do evento escolhido. Para criá-lo é necessário informar um nome, o evento desejado e selecionar uma das três formas possíveis de contagem.

Para os tipos de contagem extra1 e extra2, um gráfico com múltiplas linhas será apresentado.

![](/files/-MQlyDSJWSGY8kF__nNB)

### **Gráficos de barra e pizza**

**Gráficos de barra e pizza** representam a quantidade de cada valor armazenado nos campos extra1 ou extra2. Para a criação deles você precisa informar nome, evento e o campo extra a ser calculado e exibido.

Para **editar dados do gráfico**, basta clicar no botão com ícone de reticências ( `...` ) localizado no canto direito superior do gráfico desejado, modificar os valores do formulário e salvar.

![](https://t3001453.p.clickup-attachments.com/t3001453/db4644c1-8f59-465a-95d5-c16ecfa143ec/configurar-grafico.gif)

Para **excluir um gráfico**, clique no mesmo botão com ícone de reticências ( `...` ) no gráfico que deseja apagar, selecione o **ícone de lixeira** e confirme a exclusão.

![](https://t3001453.p.clickup-attachments.com/t3001453/1a5bbf05-baf0-4168-990f-10b25011aa5a/grafico-excluir.gif)

{% hint style="info" %}
O número máximo de Gráficos permitidos é 20
{% endhint %}

### Gráficos TNPS

Existe um tipo específico de gráfico para visualização de evento de NPS, chamado TNPS. Basta escolher qual campo será calculado o score, extra1 ou extra2, e obtenha dados percentuais de **promotores** (notas 9 ou 10), **passivos** (notas 7 ou 8) e **detratores** (notas menores que 7), por período filtrado.

![](https://t3001453.p.clickup-attachments.com/t3001453/87aab44e-2100-40b5-8f1f-7c526f4f1417/Captura%20de%20Tela%202021-05-03%20a%CC%80s%2013.03.22.png)

{% hint style="info" %}
Os eventos utilizados devem seguir as regras de notas de NPS e usar apenas números inteiros de 0 a 10. Notas fora desse padrão são desconsideradas.
{% endhint %}

### Tabela

O **Gráfico de tabela** representa os extra1 e extra2 que é a quantidade total de eventos (incluindo eventos com extras nulos) e a quantidade de cada valor de extra1 (não incluindo eventos com extras nulos) e a quantidade de cada valor de extra2 dentro de cada valor de extra1.

![](/files/-McEXzxbhdK-j-uJv0Ip)

![](/files/-McEXdZTWmybM6WRJxjg)

### Agrupamento de valores

Ao criar ou editar um gráfico de barra, linha ou pizza, será disponibilizado a opção de adicionar agrupamento de valores.

![](/files/-Mb2fYQ-soBHfvBZiorG)

Pode ser criado vários grupos que serão aplicados para agrupar valores de extra1 e extra2.&#x20;

Em cada grupo é preciso das seguintes informações:

![](/files/-Mb2g6PvD5eaMC94QV7Q)

* Nome
* Valores do grupo
  * exemplos: qualquer valor nos extras iguais a um dos valores do grupo (sim, SIM, S, s, Sim, si) passará a ser contabilizado como Sim.

{% hint style="info" %}
Não é possível cria mais de um grupo com o mesmo nome
{% endhint %}

#### Comparações

Exemplo a ser demonstrado:

* &#x20;*escolha, escolha1 e escolha2 -> Escolhas*
* *sim, si, s* -> Sim
* *nao, n -> Não*

{% tabs %}
{% tab title="Com" %}
![](/files/-Mb2h7EmSfCtPVsV9cSF)
{% endtab %}

{% tab title="Sem" %}
![](/files/-Mb2h54Zv0M6cAKtU0S7)
{% endtab %}
{% endtabs %}

{% hint style="info" %}
Não é possível colocar valores igual em agrupamentos diferentes.
{% endhint %}

## Fixar valor específico

A opção `fixar valor especifico` ajuda você a personalizar seus gráficos, definindo um valor padrão a ser comparado:

![](/files/-M_zpGWGwmOamQ11ZZuQ)

O próximo passo é digitar um termo que será um filtro para o extra oposto ao escolhido.\
\
Observe no exemplo abaixo que o gráfico nos mostrará os dados presentes no extra 2, e somente será exibido os dados onde o valor de extra 1 seja `menu`.

![](/files/-M_zphmAyU0E-475i_hP)

![](/files/-M_z_RUgCEM6QfiXnY3D)

{% hint style="info" %}
Opção disponível apenas para os gráficos de barra, linha e pizza
{% endhint %}

{% hint style="info" %}
&#x20;A opção `contagem simples` dos gráficos em linha não possuem a opção de `fixar valor específico`
{% endhint %}

## Download PDF&#x20;

Faça download de todas as métricas e dos gráficos clicando no botão azul, localizado no canto inferior direito.

![](/files/-MRvz3YZQB3UIPlobEt2)

* Exportar testes
* Exportar detalhes

![](/files/-MfiEYIHn1rEBSAja-vh)

## Exportar CSV

Para exportar CVS use o mesmo **botão azul** localizado no **canto inferior direito**, em que são feitos os downloads. Abrirá um formulário para escolha dos filtros que serão usados para obter os dados do relatório.

![](/files/-MlHM92gz-n2hhWa8Rrw)

**Para eventos:** use os filtros **canal, período, eventos, incluir eventos de atendimento de teste ou detalhes**

![](/files/-MlHOZOoZQtcIiFYXoQg)

* Para extrair os [details](/build/assistentes/builder/componentes/events) basta selecionar a opção **“Exportar detalhes”** e digitar quais os campos (**fields**) você deseja ter no relatório, como o exemplo na imagem acima.
* É possível preencher até 5 campos com o nome do field para download no .csv\
  **Exemplo:** o evento abaixo está configurado no Builder. Para realizar a exportação dos detalhes, o objeto details deverá ser preenchido com os fields desejados e seus respectivos valores.

Exemplo do nó configurado:

```
[
   {
       "event_name": "transbordo",
       "details": {
           "field1": "<?  $email ?>",
           "field2": "1234",
           "field3": "contact.phone"
       },
       "extra1": "source_widget",
   }
]
```

**Para gráficos:**\
É possível exportar os dados do gráfico principal e dos gráficos personalizados para um arquivo do excel (xlsx).\
\
O arquivo será composto da seguinte forma:

&#x20;**Gráfico Principal:**

* **Nome do arquivo:** Métricas\_Gráfico Principal - \<id do dashboard>.xlsx
* **Nome da aba (planilha):** Gráfico Principal - \<id do dashboard>
* **Linha:** data de cada dia do período definido&#x20;
* **Coluna:** quantidade por dia de cada métrica

&#x20;**Gráfico Personalizado:**

* **Nome do arquivo:** Métricas\_\<título do gráfico>.xlsx
* **Nome da aba (planilha):** nome do evento
  * **Gráfico de Linha - Contagem Simples**&#x20;

    * **Linha:** data de cada dia do período definido&#x20;
    * **Coluna:** quantidade total no dia

  * **Gráfico de Linha - Extra 1 ou Extra 2**&#x20;

    * **Linha:** data de cada dia do período definido&#x20;
    * **Coluna:** quantidade por dia de cada valor do extra

  * **Gráfico de Barra ou Pizza**&#x20;
    * **Linha:** valor do extra1 ou extra2&#x20;
    * **Coluna:** quantidade total no período definido

Exempl&#x6F;**:**

![](/files/-MZtlREvCgx1nj-_Wqrf)


# Atendimentos

## Visão Geral

Os atendimentos são gerados a partir da troca de mensagens entre usuários e assistentes, e essa é a área onde você pode explorar essas interações. Aqui é possível filtrar informações e visualizar atendimentos de forma resumida e detalhada.

![Tela inicial da área de Atendimentos](/files/-Mgf7F0qrdgWX2G8J_y0)

## Organização dos atendimentos

Os atendimentos são separados por **sessão**. Dessa forma, cada novo diálogo (marcado pelo [evento](https://docs.altu.com.br/monitor/eventos#eventos-de-sistema) `new_dialog`) irá gerar um **ID único de atendimento**.

Quando uma mensagem é enviada pelo usuário após o **tempo de** [**inatividade**](https://docs.altu.com.br/build/assistentes/edicao-do-assistente#configuracoes) (que é definido previamente) **um novo ID único também será gerado**. Caso o assistente tenha coletado informações do usuário (como CPF e telefone) no atendimento anterior, elas estarão nos dois históricos de atendimento.

{% hint style="info" %}
&#x20;Para que o **Widget mantenha as informações** **do usuário** de uma sessão para outra **é necessário que a opção “continuidade da conversa”** seja **habilitada** na [configuração do canal](https://docs.altu.com.br/connect/canais/widget#configuracoes)
{% endhint %}

## Filtros

No painel à esquerda é possível fazer uma busca com alguns filtros e **isso pode te ajudar a achar um determinado atendimento**

![Campo para aplicar filtros](/files/-MgfBapCHKRn_1rupGRG)

{% tabs %}
{% tab title="Assistente 🤖" %}
Escolha qual assistente fez o atendimento

{% hint style="info" %}
Opcional para encontrar o ID do atendimento desejado
{% endhint %}
{% endtab %}

{% tab title="Origem ⚙️" %}
Informe o [canal ](/connect/canais)do atendimento.

{% hint style="info" %}
Opcional para encontrar o ID do atendimento desejado
{% endhint %}
{% endtab %}

{% tab title="Ambiente 🧪" %}
Escolha entre produção, homologação ou todos

{% hint style="info" %}
Opcional para encontrar o ID do atendimento desejado
{% endhint %}
{% endtab %}

{% tab title="Período 📅" %}
Informe a data de **início** da conversa
{% endtab %}

{% tab title="Email 📧" %}
Informe o e-mail do usuário

{% hint style="info" %}
Opcional para encontrar o ID do atendimento desejado
{% endhint %}
{% endtab %}

{% tab title="CPF 💳" %}
Informe CPF ou CNPJ, **somente os números**

{% hint style="info" %}
Opcional para encontrar o ID do atendimento desejado
{% endhint %}
{% endtab %}

{% tab title="Telefone ☎️" %}
Informe o número de telefone, com DDD e o 9.
{% endtab %}
{% endtabs %}

{% hint style="info" %}
O filtro padrão mostra todos os atendimentos dos últimos trinta dias
{% endhint %}

Após a filtragem você verá as **informações resumidas** de cada interação em seu respectivo **card.**

Para ver as **informações completas** de cada atendimento clique no botão com o **ícone de nova abertura** na extremidade **direita do card.**<br>

![Abrindo um atendimento](/files/-MgfBFI4HVZ6lVppCHWb)

## Visão completa do atendimento

### Visão de linha do tempo

Na parte **superior da tela**, logo abaixo das informações resumidas do atendimento, **existe uma** **linha do tempo de** [**eventos**](https://docs.altu.com.br/monitor/eventos) que ocorreram no contato.

Você pode **arrastar a linha do tempo**, ver as **informações detalhadas** clicando em “**mais detalhes**” no card do evento e também **filtrar os eventos**, escolhendo se deseja ver somente os **eventos de sistema**, somente os **customizados**, ou **todos os eventos** de um atendimento.

![Visão detalhada da linha do tempo de eventos](/files/-Mk9WyDK5vsRHcVnZ2xH)

**Para visualizar os atendimentos anteriores** de um mesmo usuário, é só clicar em **“mais detalhes”** no evento `contact_return` na linha do tempo do atendimento, e em "**atendimento anterior**". Feito isso, você será redirecionado para uma nova página com o histórico detalhado.

![Visualização de atendimento anterior em contact\_return](/files/-MgfNtzgcAd952lDXAWG)

### Ficha de atendimento

Verifique todas as informações pessoais (como CPF e telefone) e informações extras que o assistente obteve durante a conversa.&#x20;

Essas informações são mantidas de um atendimento para o outro em todos os canais, **salvo exceção do Widget**, onde você deve **habilitar a opção "continuidade da conversa"** na [configuração do canal](https://docs.altu.com.br/connect/canais/widget#configuracoes) para que essas informações sejam mantidas.

![Atributos de atendimento](/files/-MgfCrcrZTYbII8dWLe3)

{% hint style="warning" %}
&#x20;Ao utilizar `<restartContact>` no envio de mensagens [Outbound](https://docs.altu.com.br/connect/apis/outbound) um novo atendimento também será criado, com uma nova ID vinculada, e os atributos de contexto serão redefinidos
{% endhint %}

### Menu de opções

O menu com opções de acesso às **informações de contexto,** **último nó da interação e envio do atendimento para produção/retorno para homologação** estarão na parte superior esquerda da tela.

Ao lado dessas opções está o acesso ao Builder, que aparecerá em uma **caixa com o nome do assistente**, com um **ícone de nova abertura de página**

![Menu de opções](/files/-MgfLNb4Tt8gjdmEI3cz)

**trocar para produção**

ao adicionar um novo telefone, os atendimentos anteriores serão mantidos e os novos ficarão em ambiente de homologação.

### Transferência entre assistentes

{% hint style="info" %}
Recurso disponível apenas para LivePerson. Em breve nos demais canais.
{% endhint %}

**Caso o usuário seja transferido** para um outro assistente durante seu atendimento, **todo o registro das interações** (incluindo as transferências) **serão mantidas no mesmo histórico**, com uma ID única.&#x20;

Você verá essas informações no histórico da conversa, e também na abaixo da linha do tempo do atendimento

![Histórico de transferência entre assistentes](/files/-MgfJp2dMpJfGmiyT2_Y)

### Histórico

No histórico, que estará à esquerda, tem todo o **fluxo que o cliente seguiu**. Aqui você também poderá ver **qual assistente mandou a mensagem**, e o **momento da transferência** entre assistentes

![Visualizar a transferência entre assistentes no histórico de mensagens](/files/-MgfN_IN_cxAB9m7gBFc)

Quando o assistente tem **NLU**, a **confiança**, **intenção** e **entidade** poderão ser visualizadas clicando no ícone de cérebro à esquerda da mensagem

![Retorno cognitivo](/files/-MgfOK-IfSdNK3KB2nI9)

### Downloads

### Download histórico de mensagens

No canto superior direito do histórico de mensagens tem o **botão de download do histórico** do atendimento em **PDF**

![Download do histórico detalhado](/files/-MgfOpQxA2aAhpwwbb1X)

### Exportar lista de atendimentos

Realize a exportação para **CSV** dos atendimentos na **página inicial de atendimentos**. Os filtros disponíveis são:&#x20;

* Assistentes
* Canal
* Ambiente
* Período&#x20;
* E-mail
* CPF
* Telefone

![](/files/-Mj5sBX1UAZdTfkkJxC6)

Ao clicar em exportar, uma solicitação é gerada e o processamento do relatório é feito automaticamente. Depois disso, o **link para download será enviado para o e-mail do usuário solicitante**.

{% hint style="info" %}
O **tempo** para o recebimento do e-mail **varia de acordo com a quantidade de dados** que serão inseridos no relatório, podendo demorar alguns minutos.
{% endhint %}


# Eventos

Nesta seção você irá encontrar informações sobre configuração e monitoramento de eventos do seu assistente.

## Visão Geral&#x20;

Eventos são uma forma de **acompanhar as interações e ações no assistente**. Eles são indispensáveis para gerar métricas e indicadores.

Para **buscar**, **criar** ou **editar eventos**, clique em **Monitor > Eventos** no menu lateral do Zenvia NLU.&#x20;

Após isso, você verá uma página com duas abas: **Monitoramento** e **Parametrização**.

![Página inicial da tela de Monitoramento e Parametrização de Eventos](/files/PrSAmNG49ekOnHWA5mQt)

## Monitoramento

Nessa página você busca eventos e verifica atendimentos que passaram por uma determinada situação ou caso de uso como, por exemplo, um transbordo.

Os filtros disponíveis são:

* **Assistente**: selecione “todos” ou escolha um determinado assistente;
* **Canais**: selecione “todos” ou selecione um determinado canal;
* **Período**: escolha um período de tempo
  * **Máximo**: 30 dias&#x20;
  * **Padrão**: últimos 7 dias
* **Eventos**: digite o nome do evento que você deseja encontrar. Essa área tem *autocomplete* para facilitar a busca. \
  **É necessário escolher no mínimo um e no máximo cinco eventos para filtrar**.

{% hint style="info" %}
**Atenção**: uma pesquisa **com mais de um evento** trará como resultado atendimentos em que **pelo menos um** desses eventos foi disparado
{% endhint %}

Após preencher esses campos, clique no botão “**Filtrar**”, no canto direito da página para visualizar o resultado da pesquisa.

![Demonstração da aplicação de filtros para monitoramento de eventos](/files/82xQtYuVOKoCCSMN7aMY)

### Exportar eventos

Depois de encontrar os atendimentos em que os eventos aconteceram, você pode exportar um relatório em formato CSV.

Para fazer o download do relatório, clique no botão “**Exportar eventos**” e, na janela que se abrirá, verifique os filtros aplicados, escolha se deseja também incluir os eventos de teste e clique em “**Exportar**”

![Após a filtragem dos eventos, você vê uma lista e o botão "Exportar Eventos"](/files/5rkdbngAve2PV5B9AmQm)

{% hint style="info" %}
O relatório será gerado com base nos filtros escolhidos por você no momento da pesquisa. Um link para download de um arquivo *zip*, contendo o relatório em CSV, será enviado para seu e-mail de cadastro no Zenvia NLU.
{% endhint %}

## **Parametrização**

Nessa aba você **cria**, **visualiza**, **edita** e **exclui** eventos do seu assistente.

No canto esquerdo superior da tela você vê uma lista expansível para selecionar o tipo de evento que deseja visualizar.

Já no canto direito da página você vê um campo de busca, onde pode pesquisar um evento para ser editado ou apagado.

{% hint style="info" %}
**Bom saber**: **o campo** “**pesquisa**” **e** “**tipo de evento**” **operam juntos**. Então, ao fazer uma busca, verifique se você selecionou o tipo correto de evento
{% endhint %}

![Tela de parametrização de eventos](/files/H2Pn7Sv2BkReXMPiduVj)

O resultado da sua busca será demonstrado em forma de lista, com as seguintes colunas:

**Identificador**: é o nome do evento;\
**Label**: uma breve descrição desse evento; \
**Campos extra1 e extra2**: use para adicionar mais informações aos eventos. Esses campos podem ser usados como valores para relatórios.

No ícone de **lixeira**, no canto direito, é possível **apagar o evento**.

{% hint style="warning" %}
**Atenção**: ao fazer uma exclusão, todas as métricas e gráficos baseados nesse evento serão excluídos do dashboard
{% endhint %}

### Adicionar evento

Para configurar um novo evento, clique em “**+ Adicionar evento**”, no canto superior direito da página de Parametrização.

**Você deverá escolher o** [**tipo de evento**](#tipos-de-eventos)**, entre Personalizado ou API**

![Criação de um evento personalizado](/files/KeyGUDwgKm6H6HQ2lgXp)

Depois disso, você deve preencher:

**Identificador**<mark style="color:red;">**\***</mark>: é o nome da variável usada no nó;\
**Label**<mark style="color:red;">**\***</mark>: breve relato do que traz esse evento; \
[**Campos extra1 e extra2**](#campos-extras): use para adicionar mais informações aos eventos. Esses campos podem ser usados como valores para relatórios. Opcional.

*Os campos label, extra1 e extra2 podem ser alterados depois*

Para saber como **configurar uma API de eventos**, [acesse essa página.](/connect/apis/eventos)

## Tipos de Eventos

É importante saber que os eventos estão separados em **três tipos principais**:

### **Eventos Personalizados**

São eventos configurados no Zenvia NLU **de acordo com as suas regras de negócio**. Eles podem tanto **monitorar o desempenho** do assistente bem como os **padrões de uso das pessoas** que conversam com ele.

Aqui a criatividade é quem manda, mas preparamos uma seção especial de [boas práticas na criação de eventos personalizados](/boas-praticas/eventos/eventos-padroes), não deixe de conferir!

{% hint style="info" %}
Esse tipo de evento precisa ser configurado no [Builder ](/build/assistentes/builder)e constar no fluxograma
{% endhint %}

### **Eventos de API**

Esses são criados para servir a [API de Eventos](/connect/apis/eventos). **Eles podem informar ações feitas fora do** Zenvia NLU para monitorar, por exemplo, pendências de processos da sua empresa que foram solicitados inicialmente via assistente.

**Por exemplo**: imagine que uma empresa tem em seu assistente o autosserviço “pedido de cartão de crédito”. Um cliente conversa com o chatbot, faz a solicitação do cartão, e informa todos os dados necessários.

O assistente pode responder algo como "Seu pedido de cartão esta em avaliação". Então, O Zenvia NLU enviará ao sistema de CRM da empresa as informações, e um analista avalia e aprova o pedido. Neste momento pode haver, dentro da API `CRM <>` Zenvia NLU, um Evento de API chamado "cartão aprovado". \
\
Por consequência, as métricas de aprovação (ou recusa) de um cartão poderão ser exibidas no [dashboard](/monitor/dashboard) do Zenvia NLU.

## E**ventos de sistema**&#x20;

Já esse tipo é **chamado automaticamente** e não precisa ser configurado dentro do builder e nem estar no fluxograma do assistente.

Também não é possível criar nem editar o nome desses eventos, somente as opções de “**Label**”, “**Label do extra1**” e “**Label do extra2**”.

Veja a tabela contendo todos os eventos desse tipo:

| **Eventos**                               | **Descrição**                              |
| ----------------------------------------- | ------------------------------------------ |
| contact\_return                           | Retorno a atendimento                      |
| livechat\_conversation\_accepted          | Conversa aceita pelo agente                |
| livechat\_conversation\_closed\_by\_agent | Conversa fechada pelo agente               |
| livechat\_conversation\_closed\_by\_user  | Conversa fechada pelo usuário              |
| livechat\_transfer\_timeout               | Tempo limite de transferência do Live Chat |
| livechat\_transfer\_to\_agent             | Transferência para agente no Live Chat     |
| livechat\_user\_inactivity\_timeout       | Tempo limite de transferência do Live Chat |
| liveperson\_agent\_transfer               | Transferência para agente na Live Person   |
| liveperson\_new\_dialog                   | Novo diálogo na Live Person                |
| new\_contact                              | Novo atendimento                           |
| new\_dialog                               | Novo diálogo aberto no assistente          |

## **Exemplos**&#x20;

### Configuração de evento no Builder

![Exemplo de configuração na aba Eventos do Builder](https://t3015470.p.clickup-attachments.com/t3015470/bd44a2be-a064-44b1-8db1-3453d40d5567/image.png)

Você também vai encontrar muitas informações importantes na aba de [boas práticas](/boas-praticas), como os eventos personalizados mais usados e como configurá-los em seu assistente.

### Configuração no Dashboard

![](/files/-M_NHR0ypxPRR-CMdlmj)

{% hint style="info" %}
Aprenda como [criar métricas e indicadores](/monitor/dashboard/metricas) no Dashboard&#x20;
{% endhint %}

#### &#x20;Visualização expandida e de campos extras

![](/files/-M_NHooOzztRCVgl3bNE)

Você também vai encontrar muitas informações importantes na aba de boas práticas, como os eventos personalizados mais usados e como configurá-los em seu assistente.

### Campos extras

Use os campos **extra1 e extra2** para obter mais **informações** das **operações aplicadas a eventos**, que podem ser usadas como **filtro para relatórios.**&#x20;

**Esses campos são opcionais**, usam valores que estão dentro do assistente e que são capturadas durante os atendimentos, por exemplo, opção do menu escolhida pelo usuário.

![](https://gblobscdn.gitbook.com/assets%2F-MBjaNm5lB1Yqgih1JCA%2F-MF1VuVqm9h-ibOLb20C%2F-MF1azyo0f-9AfguYVDD%2Fevento%20show.png?alt=media\&token=6f7fff6f-155a-4030-b3a6-65ee53942cd1)

Para visualizar os campos extras use a ação de expansão, clicando no **botão expandir** no card da métrica ou do indicador.

![](https://t3001453.p.clickup-attachments.com/t3001453/a4638cc6-be72-45d3-a018-94354a89b631/image%20\(1\).png)

As operações **NPS ou CSAT** apresentam uma visão global da avaliação média de usuários. Sabemos que muitas vezes a opção de avaliar é apresentada em diferentes momentos e serviços durante a interações com o assistente, por isso, os campos **extra 1 e extra 2** mostram o **detalhamentos dessas métricas**.

Um dos campos representa a **categoria**, que é a **identificação do que foi avaliado**, o outro campo representa o **Score**, que é a nota média de **avaliação dada por usuários** por categoria.

![](https://t3001453.p.clickup-attachments.com/t3001453/ae8cb640-9eac-435a-8b15-f1bd7c494622/extrascampos.gif)

**Por exemplo**, a categoria *Atendimento* apresenta um Score *X,* enquanto a categoria *Emissão de faturas*, tem Score *Y*.

Em operações de **divisão** também são feitos cálculos de divisão entre os valores extras dos dois eventos, o resultado é exibido em percentual.&#x20;

**Exemplo:** (Ocorrências de extras do evento1 / Ocorrências de extras do evento2) \* 100

![](https://t3001453.p.clickup-attachments.com/t3001453/aa0a8f22-394e-4780-ad86-50f1968ea917/image.png)

* O valor "1" ocorreu 180% vezes no extra1 do evento 1 em relação ao evento2
* O valor "0" ocorreu 50% vezes no extra1 do evento 1 em relação ao evento2
* O valor "escolha2" ocorreu 400% vezes no extra2 do evento 1 em relação ao evento2&#x20;
* O valor "escolha1" ocorreu 50% vezes no extra2 do evento 1 em relação ao evento2&#x20;
* 8 disparos do evento 1 possuem valor de extra1 que não existem no evento 2

Nas demais **operações, soma, subtração e multiplicação,** o campos extra1 e extra2 mostram o **total de ocorrência de seus valores.**

{% hint style="info" %}
São mostrados apenas os 20 valores mais recorrentes nesses campos e a quantidade de ocorrências
{% endhint %}

### **Boas práticas**&#x20;

Acesse a aba de [Boas Práticas](/boas-praticas) e aprenda a configurar eventos de forma assertiva, além de ver dicas e exemplos de eventos personalizados.


# Volumetria

Visualize o total de acessos de todos os seus assistentes em uma única tela.

### Acesso

Acessando a aba de **Volumetria** é possível visualizar, em uma única tela, a **quantidade total de acessos de todos os seus assistentes**.

Para facilitar a realização do faturamento da sua conta, a distribuição dos dados está visível de três formas:

* **Total:** número de acessos de todos os assistentes;
* **Total por canal:** número de acessos divididos por canais;
* **Total por assistentes:** número de acessos divididos por assistentes.

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

Do lado direito da tela, onde você visualiza a **“Distribuição entre assistentes”**, ao clicar em algum específico, os valores correspondentes aos totais diários daquele assistente serão expandidos para sua visualização. Veja no exemplo:

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

### Filtros

Os valores exibidos na tela de Volumetria refletem os filtros inseridos na página.

Há duas opções de filtro:

**Mês de referência**

Apresenta a lista dos meses, sempre do atual para o mais antigo. É importante saber que o mês mais antigo sempre será **setembro**/**22**, mês de lançamento da tela de Volumetria.&#x20;

#### Assistente

Apresenta a lista de todos os assistentes. Nesse filtro, é possível selecionar todos, ou apenas um.

<figure><img src="/files/6RJXh0o1Z4Xaq81mAVEl" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Os valores apresentados correspondem somente ao ambiente de produção.
{% endhint %}

### Exportar dados

Ao clicar em “exportar dados”, será iniciado o download em formato xls.   &#x20;

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


# Issues

Nessa aba é possível monitorar os erros que estão acontecendo no assistente.

![](https://t3001453.p.clickup-attachments.com/t3001453/8b6b1b95-7624-468e-8004-996d24c3484b/Screen%20Shot%202021-04-27%20at%2019.32.16.png)

Você pode filtrar as Issues por:

* **Período:** data única ou intervalo de datas
* **Assistente:** apenas assistentes específicos onde ocorre aquela Issue
* **Tipo de Issue:** lista de Issues identificadas naquela instância

![](/files/-MRKWkm9Lzbg4vUk3t6n)

Em cada **card de Issue** vem **informações resumidas** sobre a ocorrência:

![](/files/-M_XZtnqBGfeM8kx0QZT)

Para ver as **informações detalhadas** clique no **ícone de reticências** <img src="/files/-M_X_l0YO6bq7_UmWDgR" alt="" data-size="line"> na extremidade **direita do card**. Irá aparecer uma tela como esta abaixo:

![](https://t3001453.p.clickup-attachments.com/t3001453/57dc4b74-eedc-4e4b-8fc7-4eb2f6ffcc9a/Screen%20Shot%202021-04-27%20at%2019.35.13.png)

Ao clicar no ícone com a imagem de olho, localizado na extremidade direita após "ocorrências", serão apresentadas as informações de acordo com o fluxo. As descrições, em azul, são clicáveis e direcionam para o Build.

![](https://t3001453.p.clickup-attachments.com/t3001453/cc43009d-bb82-4e3f-9499-d817afd969a1/Screen%20Shot%202021-04-27%20at%2020.43.32.png)

## Exemplos de Erro

Atualmente temos cinco tipos de Issues e elas sinalizam um problema que ocorreu no assistente.

{% tabs %}
{% tab title="Máxima de Jumps 🦘" %}
É gerada se:

* Atingir o máximo de 30 jumps em uma única interação;
* For detectado um possível loop, onde um mesmo nó é lido até três vezes na mesma interação.

Essa é a única Issue que, além de estar disponível na plataforma, também envia um e-mail para a equipe de suporte após a ocorrência de um dos casos.

![](/files/-MG9CDMU_YXVcC1pBNt0)

Configurar um nó que retorna para ele mesmo sem uma condição de parada cria um loop e isso faz com que a Issue seja disparada.
{% endtab %}

{% tab title="Nó lento 🐌" %}
Caso o tempo de processamento dos nós de uma interação seja maior ou igual a 10s essa Issue será disparada informando:

* Os nós envolvidos na interação;
* O tempo de execução.

![](/files/-MG9Ccun6eKHGoZuFhsm)

Um exemplo comum e bastante recorrente é quando há uma API que leva um pouco mais de tempo para responder à execução
{% endtab %}

{% tab title="Evento Inválido 🚫" %}
Essa Issue será gerada quando um evento não criado for usado no builder.

Para solucionar crie o respectivo evento no builder.&#x20;

![](/files/-MZwwLLNrd_4-12Ji1Rx)
{% endtab %}

{% tab title="Jump Inválido ⚠️" %}
Se for detectado um erro ao usar o recurso "jump dinâmico" durante o atendimento, será criada uma Issue mostrando:

* O nó em que ocorreu o erro;
* O jump preenchido por quem configurou o nó.

![](/files/-MIQ2gP9IrA6WaTWOAnh)

Esse erro pode ocorrer  quando um nó é definido manualmente em uma variável e depois é apagado do builder. Por exemplo:

```
{
	"context": "node_7f474e1ce5dfd13a"
}
```

{% endtab %}

{% tab title="Base sem respostas 🤐" %}
Ao ser percebida a ausência de respostas cadastradas na base de conhecimento para algum input presente no Builder, será gerado esse erro.&#x20;

Para solucioná-lo basta cadastrar a respectiva resposta na base de conhecimento, com a intenção e entidade correspondente.
{% endtab %}
{% endtabs %}

Para dar como resolvido qualquer Issue, é necessário ter permissão para isso.&#x20;

![](/files/-MZu35x2S655AX9ShWIO)


# Monitoramento de APIs

O monitoramento de APIs apresenta a quantidade de ocorrências de chamadas de outbound que resultaram em sucesso e erro. Para cada canal é exibido uma lista e um gráfico com a quantidade diária e total do período.

![](https://t3001453.p.clickup-attachments.com/t3001453/f662855a-4189-4106-a661-012fa95c3d0f/image.png)

#### **Filtro:**

* **API:** Inicialmente, haverá apenas a opção monitoramento da API de outbound.
* **Assistentes:** Escolha do conjunto de assistentes que disparam mensagens de outbound.
* **Canais:** Conjunto de canais que dispararam mensagem de outbound.
* **Período:** Período de disparo das mensagens de outbound.

![](/files/-MYj4EPua8coEKnhFKQ1)

### Exportação dos dados

A exportação é feita baseada nos filtros escolhidos anteriormente.

Ao exportar os dados de monitoramento, um e-mail com o arquivo .XLSX será enviado para o usuário solicitante.


# Métricas de avaliação

As métricas de avaliação NLU quantificam dados gerados a partir do motor cognitivo, que é a inteligência artificial. Para realizar a exportação das mensagens de um NLU em `.xlsx` é simples, siga essas três etapas:

![](/files/-MZrATYtnlk-uB6kCgQI)

### Etapa 1

**Escolha dos filtros:** configure os filtros para a busca dos dados.

![](/files/-MZrAwrnAagnLwFb8J1w)

* **NLU:** este filtro mostra a lista de NLUs cadastradas, você só poderá escolher uma por vez.
* **Avaliadores:** filtre pelo nome de quem fez a curadoria das mensagens.
* **Intenções:** Lista de intenções identificadas nas mensagens.
* **Status:** Existem 4 status de mensagem, novas, aprovadas, corrigidas e em revisão.
* **Período:** espaço de tempo em que as mensagens foram processadas.

### Etapa 2

**Campos:** escolha quais campos serão exportados no `.xlsx` .

![](/files/-MXavGa600Q2sftkw7Cw)

* **ID:** Identificador da mensagem
* **ID do assistente:** identificador do assistente no qual a mensagem foi processada
* **ID do NLU:** Identificador do NLU associado ao assistente da mensagem
* **ID do atendimento:** Identificador do atendimento no qual a mensagem foi enviada
* **Mensagem:** Conteúdo da mensagem
* **Resposta:** Resposta retornada para a respectiva mensagem
* **E-mail do avaliador:** Email do usuário  que avaliou a mensagem
* **Intenção detectada:** Intenção reconhecida pelo NLU
* **Intenção avaliada:** Intenção identificada na avaliação da curadoria
* **Nível de confiança:** Nível de confiança da identificação da intenção
* **Nível de score:** Score calculado com base nas avaliações da intenção
* **Status:** Status de avaliação da mensagem
* **Data:** Data de envio da mensagem
* **Nome do avaliador:** Nome do usuário que avaliou a mensagem

### Etapa 3

**Exportar:**  Clique em exportar e aguarde o arquivo ser enviado para o seu e-mail.

![](/files/-MXawADTXkhbXT3Lq5ce)

{% hint style="info" %}
O arquivo pode demorar alguns minutos para ser completamente gerado e recebido.
{% endhint %}


# Assistentes

## Conhecendo o Build

O Build é o pilar que serve como um **orquestrador dos assistentes virtuais**. Nele, você pode criar um novo assistente, acessar um já existente e configurar os fluxos de diversas maneiras, como verá ao longo dessa parte da documentação.

Nesta documentação, você encontrará as seguintes seções:&#x20;

* [Como acessar ](#como-acessar)
* [Visão geral dos assistentes ](#visao-geral-dos-assistentes)
* [Criando um novo assistente](#criando-um-novo-assistente)
* [Builder](/build/assistentes)&#x20;
* [Configurações do nó ](/build/assistentes/builder/configuracoes_do_no)
* [Componentes](/build/assistentes/builder/componentes)

### **Como acessar**

O Build fica localizado na barra lateral esquerda da plataforma. Para acessá-lo, basta clicar em “assistentes”.

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

### Visão Geral dos assistentes

Assim que você acessar o Build, u**ma tela com todos os assistentes será apresentada**. Ela contém as **principais informações** relacionadas às configurações e, em cada assistente, é possível:

* Acessar o builder;&#x20;
* Editar informações do assistente, como nome, cognitivo, canais, entre outros;
* Deletar Assistente.

![](/files/iD6S5lGZwKn8pBQlFCh2)

### **Criando um novo assistente**

Caso deseje criar um novo assistente, basta acessar o + localizado no canto inferior direito da Visão Geral. Em seguida, insira as informações solicitadas e clique em “**adicionar**”.

<figure><img src="/files/2EWYi0fnEGVn7Iq3uV9O" alt=""><figcaption></figcaption></figure>

* **Nome:** nome que deseja dar ao assistente;
* **Descrição(opcional):** descrição breve sobre o assistente;
* **Opções de NLU:**
  * **Sem NLU:** crie o assistente sem o NLU;
  * **NLU existente:** escolha um que já esteja na base Zenvia NLU;
  * **Criar novo NLU:** crie um novo NLU;
  * **Squad:** escolha a squad do assistente. Caso não saiba, utilize a opção “Geral”;
* **Importar Builder(opcional):** adicione a base de outro assistente.

{% hint style="info" %}
Ao **criar novo NLU** ou utilizar um **NLU existente**, você verá um *checkbox* em que poderá desabilitar o envio do primeiro input do usuário para avaliação do cognitivo. Essa configuração é especialmente útil para assistentes que atendem no WhatsApp.
{% endhint %}


# Edição do Assistente

## **Editando um assistente**

Para editar um assistente, basta clicar no ícone ![](https://lh5.googleusercontent.com/SnAfL20ysYSU2vTSZ8mR_kgdcnBkhnnmRDHUtgnKuv751vh7BILZr7UGeoid71-0utTrGSpNMs-zkXxlystE6LjVztNktk0iSy8HrINFk5JmUIkVo_PlgvLWXwamWDcnG6LAJE97JM6pnVHd7g) **.** Você verá que uma nova tela aparecerá, ela funciona como uma visão geral do assistente e contém as principais informações relacionadas às configurações, como:

* Nome do assistente;&#x20;
* Data e o horário do último atendimento e atualização;&#x20;
* Atualização da programação;&#x20;
* Especificação da versão;

![](/files/-MUhaAzIrdnnEKlAm618)

Na parte superior da tela, é possível escolher outras instâncias de edição, cada uma representada por um ícone. São elas, em ordem:

* [Configurações](#configuracoes)&#x20;
* [NLU](#nlu)&#x20;
* [Widget](#widget)&#x20;
* [API](#api)&#x20;
* [Facebook](#facebook)
* GBM
* Instagram
* [Liveperson](#liveperson)&#x20;
* [RCS](#rcs)&#x20;
* MS Teams&#x20;
* [Whatsapp ](#whatsapp)
* Workplace

![](/files/ZLqxYJAYMq2BQG58T4bH)

A seguir, você conhecerá todas separadamente, mas caso queira ir para alguma em específico, basta clicar acima na opção desejada.

### **Configurações**

Ajuste as configurações gerais do assistente, como o nome, descrição e Squad vinculada.

<table data-header-hidden><thead><tr><th width="150">Campo</th><th>Obrigatoriedade</th><th>Descrição</th></tr></thead><tbody><tr><td>Campo</td><td>Obrigatoriedade</td><td>Descrição</td></tr><tr><td><strong>Nome</strong></td><td>Sim</td><td>nome que deseja dar ao canal</td></tr><tr><td><strong>Descrição</strong></td><td>Não</td><td>texto de descrição do arquivo com no máximo 240 caracteres</td></tr><tr><td><strong>Squad</strong></td><td>Sim</td><td>selecione o nome da squad se estiver disponível na lista, caso contrário mantenha como “geral”  </td></tr><tr><td><strong>Inatividade</strong></td><td>Não</td><td>ao selecionar essa opção, o assistente será reiniciado ao observar a inatividade do usuário após o tempo definido</td></tr><tr><td><strong>Trava de Input sequencial</strong></td><td>Não</td><td>Ao ativar essa opção, o bot não processará os inputs, apenas o primeiro que foi enviado logo após a mensagem do bot.</td></tr></tbody></table>

### **NLU**

É possível vincular mais de um NLU na configuração de um assistente. Para isso, é importante ter mais de um NLU cadastrado e considerar os “tipos” necessários para o assistente:

* **NLU padrão:** será usado caso não tenha ocorrido uma troca de NLU durante o fluxo ou na ausência de um NLU extra no input
* **NLU extra:** NLU complementar que será usado com base na programação definida (ação [set\_nlu](/build/assistentes/builder/componentes/actions/set_nlu))

![](https://lh3.googleusercontent.com/K8CSyH5H9wOjzZAOxTagrQw36Pc7fvTUT2OgPLSKtbbV7YsrIfXNc7AhSK7sUocF0T1oSg6q7edDO9tguVD0yFiccZlOQBxGq0MnWjs_ef6-MeTrmSX5f3r8dmy6xL8tJuwK_evFJiS1grHevw)

A partir do momento em que um NLU padrão for selecionado, uma outra listagem de NLU’s estará disponível. Para adicionar os extras, basta apertar na caixa de seleção referente ao NLU que deseja usar.

![](/files/b4vXDD3i45W8KlLvzjf5)

#### **Desabilitar o cognitivo para o primeiro input do usuário**

Acima do campo NLU Padrão, você verá o checkbox "**Desabilitar o cognitivo para o primeiro input do usuário**". Com essa configuração habilitada, a primeira mensagem recebida pelo assistente não será enviada para avaliação do cognitivo.

|                                                                                                                                          |
| ---------------------------------------------------------------------------------------------------------------------------------------- |
| **💡**Essa configuração é especialmente útil para assistentes que atendem no WhatsApp, em que o primeiro input é sempre um campo aberto. |

{% hint style="info" %}
**Todos os ajustes** realizados nessa área **devem ser salvos** para atualizarem o banco de dados
{% endhint %}

### Webhooks

É possível cadastrar 2 webhooks, um para eventos e outro para históricos, preenchendo os seguintes campos:

![](/files/4EZf9JcjO9iyqZPvrUlZ)

* URL (relacionado ao endpoint onde se deseja receber as informações);
* TOKEN (que vai ser usado como Authorization para envio das informações para a URL).

#### Webhook de eventos:

Um post para a URL fornecida (na hora de registrar o webhook) será realizado a cada disparo de evento que ocorrer dentro do builder.&#x20;

As informações do eventos que serão enviadas:&#x20;

```
{
         id: 3219,
         assistant_id: 1,
         contact_id: 1175,
         event_id: 3,
         event_name: 'new_dialog',
         external_id: 'xxxxxxxxxxxx',
         details: {},
         date: '2021-05-03T03:00:00.000Z',
         extra1: null,
         extra2: null,
         created_at: '2021-05-03T15:36:01.000Z',
         updated_at: '2021-05-03T15:36:01.000Z',
         channel: 'whatsapp',
         environment: 'homol'
}
```

* **id**: ID do disparo efetuado
* **assistant\_id**: ID do assistente (bot) que o evento foi disparado
* **contact\_id**: ID do contato que o evento foi disparado
* **event\_id**: ID único do evento disparado
* **event\_name**: Nome do evento disparado
* **external\_id**: ID único (hash) do atendimento que o evento foi disparado
* **details**: Objeto (JSON) com os campos `details` incluídos no evento
* **date**: Data do disparo
* **extra1**: Valor salvo no campo extra1 do evento
* **extra2**: Valor salvo no campo extra2 do evento
* **channel**: canal da conversa que o evento foi disparado
* **environment**: ambiente da conversa que o evento foi disparado (dev/homol/prod)
* **created\_at**: Data e hora do disparo (GMT)
* **updated\_at**: Data e hora da atualização do evento (GMT)

#### Webhook de histórico:

Um post para a URL fornecida(na hora de registrar o webhook) será realizado a cada troca de mensagem no atendimento. Mensagem do usuário do bot serão enviadas para o Webhook. Exemplos de payloads enviados:

Para mensagens do bot para o usuário:

```
{
   contact_id: 1176,
   channel: 'widget',
   environment: 'homol'
   message: [
              { default: { text: 'Olá', type: 'text' } },
              { default: { type: 'text_input' } }       
            ]
 }
```

Para mensagens do usuário para o bot:

```
{
    contact_id: 3089,
    channel: 'widget',
    extra: { channel: 'widget' },
    environment: 'homol',
    message: 'ola'
 }
```

{% hint style="info" %}
Se não tem acesso a essa funcionalidade, solicite no e-mail: <suporte@direct.one>
{% endhint %}

### Widget

Verifique os Widgets que estão vinculados ao seu assistente:

![](/files/-MUhcdZeAd1Qp1BGHSSM)

### API

Verifique as APIs vinculadas ao seu assistente, também é possível ir para a página de edição ou excluir:

![](/files/-MUhigmCr_i0BZGJVpUa)

### Facebook

Verifique os canais Facebook Messenger vinculados ao seu assistente:&#x20;

![](/files/-MUhfiuqTsVEB7Yai46h)

### RCS

Verifique as integrações com o RCS vinculadas ao seu assistente:&#x20;

![](/files/-MUhgpP7uZo3bMt1P8pv)

### WhatsApp

Verifique as integrações com o Whatsapp, também é possível ir para a página de edição ou excluir:

![](/files/-MUhhaOv-AnmLpDuQpRv)

### LivePerson

Verifique as integrações com a LivePerson, também é possível ir para a página de edição ou excluir:

![](/files/-MUhisdDZFzct78h0GKL)

### Workplace

Verifique as integrações com o Workplace, também é possível ir para a página de edição ou excluir:

![](/files/-MYAhfWv6sH65HtQ4eLT)


# Builder

Nesta seção da documentação, você saberá como acessar seu projeto criacional, conhecer as ferramentas do simulador do assistente virtual e como são feitas as configurações.

## **Acessando o Builder**

O primeiro passo é acessar. Para isso, há duas maneiras:

1. Pela página inicial do assistente clicando no **primeiro ícone**, em formato de **fluxograma**:

![](/files/bU4ZjVQlmrk3UUQ4sy6m)

2\. Ou clicando no **segundo ícone**, de **edição do assistente**, e em seguida no botão **acessar builder** localizado do lado esquerdo da tela:

![](/files/jG4D7JJ0FpFdmHha8Mco)![](https://lh5.googleusercontent.com/DMBgmHojRUulkEgCDf7mFovf-vTArYlVy5v_1ORN-YfRFChLudeW9x3S2jaJcBrS_ka9AFnPXq2SHJv6hYsXHRK4q_cOk7PvgcCIwI8YK_gIZkQn8jVK0SvmLUV49XK2i_KbUVVtnNhQ4BGqcw)

{% hint style="info" %}
Caso você crie um novo assistente, o grid estará vazio. Veja na próxima seção como proceder para criar uma ação ou nó.
{% endhint %}

## **Configurando o builder de um assistente novo**

Para criar uma ação, ou nó, basta dar um duplo clique em qualquer lugar da tela, como mostra o gif abaixo:

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

Em seguida, aparecerá o painel de configuração do nó, à direita, por onde você poderá inserir suas informações necessárias.

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

{% hint style="info" %}
O limite de nós sequenciais sem input do usuário é de 20. Qualquer fluxo com mais de 20 nós sequenciais sem input do usuário será travado.&#x20;
{% endhint %}

## **Navegando pela barra principal**

Na barra principal do builder, você encontrará:

* **Versões:** todas as versões do builder e opção para adicionar uma nova;
* **Variáveis de ambiente:** todas as variáveis e opção de adicionar uma nova;
* **Templates:** todos os templates já criados;
* **Exportar builder:** ao finalizar o seu assistente, você poderá exportar o arquivo em JSON;
* **Configurações:** configure o builder como desejar através dos comandos que aparecem;
* **Fluxo de inatividade:** configure o tempo que o bot aguardará por uma interação do usuário durante a conversa, antes de seguir para o fluxo de abandono. Clique aqui e consulte a documentação.

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

## Simulador

O simulador serve para para testar seu assistente, permitindo acompanhar cada etapa do processo dos nós. Ao clicar nele, o teste será iniciado, conforme demonstrado abaixo:

![](/files/NW0W8y8PntAvypYcNEuQ)

Na simulação, você pode testar os canais Widget e Whatsapp.

![](/files/6zrSqTycms1YfTlZRj0P)

Caso você queira **iniciar o teste a partir de um lugar específico** do fluxo, **clique no nó que deseja iniciar o teste.** Acima dele aparecerá uma lista de ícones, o último é "**testar a partir deste nó"**

![](/files/2SO3Bv2XaSeDFgChXJLk)

Após selecionar essa opção, o teste iniciará, conforme mostra o gif:

![](/files/GrFmUvd8fEoS59itN0em)

## **Ferramentas do simulador**

### Breakpoint

O Breakpoint, localizado ao lado do ícone do WhatsApp, serve para **pausar a execução e simular o seu fluxo nó a nó**, permitindo acompanhar o andamento de cada um por vez.

Para utilizar o recurso, basta ativar a opção **breakpoint** e seguir o fluxo.

![](/files/BlaX4JyWlK1FpTv7Zymr)

{% hint style="info" %}
É necessário uma interação com o bot para que a funcionalidade ative ou desative.
{% endhint %}

### Fluxo de nós

Durante o teste de interação, é possível visualizar o fluxo de nós executados a partir de cada mensagem processada e editá-los um a um. Para isso, siga as instruções:

1. Clique no símbolo **`>`** localizado no lado direito do simulador;
2. Uma tela com os nós se expandirá à direita;
3. Ao clicar em cima de um nó específico, as configurações de edição serão exibidas e você pode editar as informações que desejar;

Veja um exemplo abaixo:

![](/files/VtAyKFm6iQWFRvzI36Lw)

Ao lado do **fluxo de nós**, é possível ver outros recursos disponíveis:

![](/files/i1EW1QIILysZuslkiiu5)

Esses recursos são:

* **Contexto:** Visualizar variáveis do contexto do atendimento
* **Atendimento:** Visualizar informações sobre o atendimento
* **Eventos:** Visualizar informações dos eventos disparados durante a simulação
* **Console:** Observar os erros de expressões que acontecem ao decorrer de um fluxo. Para acionar e corrigir, basta clicar que será direcionado para o nó do ocorrido.&#x20;

{% hint style="info" %}
Serão considerados erros de expressões aqueles que são executados pelo builder, ou seja, erros de programação em geral: códigos colocados dentro de \<? ?> ou nos pontos de entradas e destinos de um nó.
{% endhint %}

Alguns exemplos de erros possíveis de acontecer:

* Manipulação de variável não definida;
* Comparações do tipo " $varnaodefinida == 'string' ", pois são retornadas como falso, e não como erro;
* Uso de funções inexistentes;
* Uso de funções em variáveis não definidas;

{% hint style="info" %}
O aviso não sairá após corrigir o erro, só durante a execução do próximo teste no simulador, quando passar no nó onde o erro acontecia.
{% endhint %}

## **Teclas de atalho**

| Atalhos                | Função                                  |
| ---------------------- | --------------------------------------- |
| **`ctrl + shift + s`** | Salva todas as abas do Builder          |
| **`ctrl + s`**         | Salva a aba que está sendo editada      |
| **`ctrl + d`**         | Abrir ou recarregar a tela do simulador |
| **`ctrl + f`**         | Abre a pesquisa de nós                  |
| **`ctrl e +`**         | Zoom: para aproximar                    |
| **`ctrl e -`**         | Zoom: para distanciar                   |
| **`ctrl e 0`**         | Zoom: para voltar ao padrão             |
| **`alt + C`**          | Copiar nó                               |
| **`alt + V`**          | Colar nó copiado anteriormente          |
| **`delete`**           | Deleta um nó                            |
| **`ctrl + b`**         | Ocultar/exibir menu de fluxos           |
| **`ctrl + alt + q`**   | Ocultar/exibir fluxo ativo              |
| **`ctrl + alt + w`**   | Ocultar/exibir simulador                |
| **`ctrl + alt + e`**   | Ocultar/exibir Zoom                     |
| **`ctrl + alt + r`**   | Ocultar/exibir pesquisa de nós          |
| **`ctrl + q`**         | Ocultar tudo                            |

## Expansão e redução da tela

Ao clicar no botão de expansão, você terá muito mais controle sobre a área do grid, podendo expandir uma altura ou largura de 2 nós nas quatro direções (topo, esquerda, direita e inferior).

![](https://lh4.googleusercontent.com/QrN-Bi_REey1isHWwf20vGXwqa2h1n5uT4ll24jzLE9HWwq6rr9XJPRQMPlXaLm8KdbfNy1h3xPl-ZQXXchhdltjWtsPdROtwwLjOpyX1qmyHkxiIrJyt9cypnp0_Q23IQ_sfRw73Mz74lUggA)

{% hint style="info" %}
Utilize o `crop` para reajustar os elementos e a área do grid, assim você tem muito mais controle sobre a posição. O crop respeitará sempre a disposição dos elementos, ele nunca irá cortar qualquer elemento do usuário.
{% endhint %}

### **Minimap**

Para facilitar a visualização do builder e otimizar o tempo de trabalho, você pode também utilizar o minimap.

![](/files/dWw4nCJm9X21DflanBrv)

## Copia e cola

É possível copiar ou colar nós com destinos dentro de um mesmo grid ou até em instâncias diferentes. Para isso, é preciso permitir o acesso a área de transferência do seu navegador, após a liberação você pode selecionar a seta no canto superior direito do nó e escolher entre as opções "copiar" ou "duplicar". Para colar, basta clicar no local que deseja com o botão direito do mouse e selecionar a opção "colar". Outra alternativa é utilizar os atalhos do teclado:

* **Alt + c** = para copiar o nó selecionado
* **Alt + v** = para colar o nó no centro da tela

**Obs:** certifique-se de que a permissão do clipboard esteja ativa:

![](/files/-MRzqyq2vw2QRxS_g_uj)

## **Exportar e importar Builder**

Você poderá exportar todo o Builder programado. Basta seguir os seguintes passos:

1. Na barra superior, selecione “exportar builder”.
2. Escolha a versão que deseja exportar e aguarde o download.

![](/files/kqUxSM8KaT8YsaosXfHQ)

{% hint style="info" %}
Após clicar em uma das versões, será feito um download da versão em questão com o nome export\_builder\_{assistant\_id}\_{assistant\_version\_id}. A extensão do arquivo exportado é **JSON**.
{% endhint %}

## Exportar fluxo

Caso deseje exportar o fluxo atual, basta clicar no botão de download na barra de ferramentas localizada no canto superior do builder.

![](/files/qH3A0pTtNwgantRNIlgz)

Feito isso, irá começar o download de um arquivo `json` contendo os nós e configurações do fluxo. **Isso é particularmente útil para criar modelos e reaproveitá-los em outros assistentes**.

## Criar fluxos

Além de exportar, você também pode importar o JSON de um outro fluxo que foi exportado anteriormente. Basta adicionar o arquivo no símbolo + localizado no canto superior esquerdo do builder.

![](/files/aX6Ip5WrMTXI5x03mAAi)

{% hint style="warning" %}
Ao criar um fluxo a partir de um arquivo exportado, as condições de saída que apontavam para o fluxo original ficarão sem a definição do destino, e será preciso reconfigurar.
{% endhint %}

### **Pastas de fluxos**

Uma outra funcionalidade são as pastas de fluxos, que ficam visíveis do lado esquerdo da tela. Elas servem para **organizar de forma agrupada o conjunto de fluxos que você criar**.


# Configurações do nó

Para realizar ajustes e configurações do nó, basta clicar em cima do que deseja ajustar e uma tela se expandirá à direita.

![](/files/ixsWZjiVpisq9LgsU6UX)

## Nome que identifica o nó

Para alterar, basta clicar em cima do nome e reescrever. Neste mesmo local, clicando no ícone da caixinha de mensagem, é possível adicionar um comentário no nó.

![](/files/bQY4LdfiStRpN2sL0CvM)

## Ponto de entrada

Direcionamento acionado por meio de uma regra condicional. Sua configuração pode incluir **variáveis, intenções, entidades e palavras-chave** que são associadas ao nó a ser apresentado na conversação.

Essa configuração é muito importante e, quando bem utilizada, permite o assistente "pular" de um assunto para outro com facilidade. Quando mal utilizada, pode ocasionar o travamento da conversa. Sendo assim, é preciso ter muito cuidado em sua configuração

Ela está **presente em todos os nós e permite editar uma ou mais condições que irão ativar fluxos de conversação específicos**. Além das variáveis de contexto, contato, intenções e entidades, também é possível utilizar duas condições especiais:

* **start:** condição que marca o início do fluxo. Deve ser aplicada no primeiro nó, ou seja, no início da conversa. Caso tenha mais de um nó com essa condição, o Zenvia NLU irá priorizar o último nó que você incluir o `start.`
* **anything\_else:** é uma condição de fallback. Quando não houver um nó de destino ele será acionado. Caso o fallback não esteja configurado, o fluxo será direcionado para o primeiro nó que possuir a condição `start`

{% hint style="danger" %}
Atenção ao utilizar variáveis de contexto no ponto de entrada de um nó, pois caso a condição seja atingida e a variável não mude de valor, a conversa ficará presa nesse ponto.
{% endhint %}

![](/files/cRFisIoYJaYmrAYIMqbo)

## Tipos de nó

* **Padrão:** Nó único que segue a condição de acordo com o fluxo criado. Nessa opção, somente o que é inserido na configuração (seja no ponto de entrada ou em outro local) é executado.

![](/files/UHAVSFDiRGJo08EaDndK)

* **Respostas condicionais:** Permite ter múltiplas respostas com condições associadas a diferentes resultados. Essa função é útil para personalizar respostas a partir de um contexto ou condição, como: dar uma resposta A caso o usuário for de São Paulo e B se ele for do Rio de Janeiro.

![](/files/4F4K0qpS2FNEEzmbfcZt)

**Exemplos:**

Se criarmos um assistente virtual para uma pizzaria e o cliente solicitar duas pizzas, podemos utilizar:

![](/files/wCEqSL3WgMHf77INusUX)

**`$total_pizza == "2"`:** para saber se foram solicitadas duas pizzas

**`$cnt_pizza == null` :** para identificar se ele selecionou apenas um sabor e então retornar com a seguinte resposta: "Ok, vamos definir os detalhes da sua segunda pizza!"

![](/files/OypySLZd5TTrep5Erj07)

* **Slots:** O slot é uma ferramenta eficaz que **permite ao chatbot manter uma conversa natural com o usuário**. Ele serve como um extrator de texto que une a intenção e a entidade e projeta perguntas que facilitam a interação.

Por exemplo: em um cenário onde a intenção do usuário seja "agendar uma consulta", os slots podem ser configurados em especialidades, data e horário. Dessa forma, se um usuário não der todas as informações de uma única vez, mas quiser agendar uma consulta, o chatbot já será capaz de retornar a ele com todos os parâmetros necessários para concluir a solicitação.

{% hint style="success" %}
Essa ferramenta substitui a necessidade de criar um nó para cada ação (especialidade, data e hora). O slot facilita ao configurar toda a entidade no cognitivo dentro de um único script de conversa.
{% endhint %}

![](/files/rklr03TaClBdEX52OjIg)

#### Estrutura: <a href="#exemplos-2" id="exemplos-2"></a>

O slot é acionado por meio de um botão na configuração do nó, sendo possível usar apenas um dos dois modos: resposta condicional ou slots.

![](/files/UB8bdlkK6ysYfjgXy6Yt)

Embaixo da Pergunta Padrão há uma opção para adicionar mais slots. Ao selecionar essa opção, é possível adicionar uma nova seção onde o campo "Digite uma entidade" deverá ser preenchido com o nome da entidade previamente cadastrada no NLU.&#x20;

**Esses campos seguem as regras de variáveis já utilizadas em todo builder**, possuindo apenas nomes sistêmicos (sem espaço, caracteres especiais ou acento). Além disso, o nome das entidades será aceito com ou sem o uso de '@'.

Nessa mesma página ainda é possível realizar mais três ações:

1. **Editar o slot:** Para editar um slot basta clicar no ícone de lápis, ao entrar na tela de edição serão apresentados os campos com o nome da entidade e os cinco componentes do nó: configuração de output, input, variáveis, ações e eventos
2. **Alterar a posição arrastando o slot para a ordem desejada**
3. **Remover um slot (utilizando o botão x" próximo à edição)**

{% hint style="info" %}
Caso não haja um input configurado dentro de um Slot e ainda que não seja identificada a entidade no input do usuário, o fluxo do bot seguirá normalmente.
{% endhint %}

### **Termos importantes:** <a href="#termos-importantes" id="termos-importantes"></a>

1. **Nó master de slots:** nó principal onde os slots estão alocados
2. **Slot obrigatório:** slot cujo output foi definido

### **Conceitos sobre o funcionamento de um slot** <a href="#conceitos-sobre-o-funcionamento-de-um-slot" id="conceitos-sobre-o-funcionamento-de-um-slot"></a>

1. Quando o **slot é obrigatório**, mas o usuário do chat não envia uma mensagem que atenda à entidade, o output é exibido.
2. Se o **input for ou não** definido e a **entidade detectada**:
   * O output é ignorado
   * Caso os demais componentes (variáveis, ações e/ou eventos) estiverem definidos, eles serão processados e o fluxo seguirá normalmente para o próximo slot obrigatório. Nessa situação as ações são ignoradas
3. Se o **input não for** definido e a **entidade não for detectada:**
   * O slot será apenas ignorado e nada dele será processado
4. Se o **input for definido** e a **entidade não for detectada:**
   * O output será exibido, seguido pelo input. Os demais componentes do nó não serão processados até que o usuário digite algo
   * Após o processamento dos três componentes (variáveis, ações e eventos), as ações serão avaliadas
5. Uma ação tem prioridade de execução superior ao reconhecimento de entidades. Por exemplo, temos uma ação do tipo "Sair dos Slots" que foi atendido, mas ainda tem slots obrigatórios não preenchidos. Esses slots serão ignorados e a ação será realizada para o nó master de slots.

### Ação <a href="#jumps" id="jumps"></a>

![](/files/WjZpx7a2Fi4BCdoILOJW)

Um único Slot pode ter várias ações e, na plataforma, você encontra cinco delas disponíveis para uso (listadas abaixo). Porém, assim como as ações de um nó, aquela que primeiro tiver a sua condição atendida, será a escolhida.

1. **Ir para o próximo slot:** Marca o slot como concluído e passa para o próximo.
2. **Sair dos slots:** Marca o slot como concluído e vai para as ações do nó master de slots.
3. **Limpar e repetir esse slot:** Marca o slot como NÃO concluído e reprocessa.
4. **Limpar e ir para o próximo slot:** Marca o slot como NÃO concluído e vai para o próximo.
5. **Limpar e sair dos slots:** Marca slot como NÃO concluído e vai para as ações do nó master de slots.

A opção **"Limpar e repetir esse slot"** tem seu funcionamento diferente das demais opções, isso porque **sua sequência de processamento se assemelha bastante ao de um nó normal**. Em outras palavras, quando uma condição permite que essa ação se realize, os outputs serão exibidos ao usuário. Assim que ele digitar algo, as demais três áreas serão processadas, e na sequência, as ações novamente.

{% hint style="info" %}
A última opção de um slot sempre estará fixa na opção "Ir para o próximo slot". Dessa forma fica garantido que, caso nenhuma das condições programadas seja atendida, o fluxo continuará seguindo
{% endhint %}

### **A variável especial** **`slots_complete`** <a href="#a-variavel-especial-slots_complete" id="a-variavel-especial-slots_complete"></a>

Variável específica para caso o programador queira decidir uma direção para onde o fluxo deva ir. Ela indicará se todas as ações foram percorridas com sucesso, de acordo com a definição de cada opção de ação vista acima.

* **Slot como NÃO concluído:** A sinalização individual do slot é setada como false.
* **Slot como concluído:** A sinalização individual do slot passará a ser true.

{% hint style="info" %}
Caso haja uma sinalização anterior setada false, ela é sobrescrita pela nova sinalização, e vice-versa.
{% endhint %}

Quando os slots voltarem para o nó master de slots, a variável `slots_complete` terá seu valor `true` somente se todos os slots tiverem sua sinalização individual `true`. Se algum slot, mesmo que seja apenas um, tiver a sua sinalização individual `false`, o `slots_complete` se tornará `false`.

### **Exemplos**

A estrutura configurada para os exemplos segue a ideia de agendar uma consulta.

![](/files/P8mH5gfzI9QRCZ5hfdPL)

Dentro de cada slot foi configurado um output desejado, usado somente quando a entidade não é detectada. Também definimos um campo input simples para todos os slots.

Para esse agendamento, é necessário atender três variáveis que são representadas pelas entidades:

* Especialidade
* Data
* Hora

#### Para o slot `@especialidade` <a href="#id-603c53e9-8723-4dfb-8925-02e8457f7455" id="id-603c53e9-8723-4dfb-8925-02e8457f7455"></a>

Salvamos nas variáveis um endereço HTTP e dado obtido pela entidade. Por fim, executamos uma chamada de API utilizando o endereço HTTP salvo na área anterior.

![](/files/RmbyZAOVlv9qT5F1U8wq)

A ação "**Limpar e sair dos slots**" acontecerá se a resposta da API for diferente de 200. Se isso acontecer, além do slot ter a sua sinalização individual setada para `false`, o `slot_complete` a partir desse momento será `false` também. Em nosso caso, passamos pela ação "Limpar e Sair dos slot".

#### Para o slot `@sys-date` <a href="#id-6897ab8c-9f21-409e-93e8-07e241a17d09" id="id-6897ab8c-9f21-409e-93e8-07e241a17d09"></a>

Independente da terminologia de tempo que o usuário enviar (amanhã ou hoje, por exemplo), a entidade transformará na data equivalente no formato dd/mm/yyyy.

![](/files/AHm2ftAsUCjw0lsR4jVq)

**Para o slot `@sys-time`**

Nesse slot, apenas salvamos algumas variáveis.

![](/files/EDixNYTyBGSWi8AfJyuk)

Nas ações, caso o usuário digite uma frase que não contenha informação de horário, ele irá "Limpar e repetir o slot".

#### Pergunta Padrão <a href="#id-4c31dd9e-3927-4bbe-bb54-f042673f0aa6" id="id-4c31dd9e-3927-4bbe-bb54-f042673f0aa6"></a>

![](/files/hJR2PUnInRzcR1SHQphc)

{% hint style="info" %}
A Pergunta Padrão **não tem ações**.
{% endhint %}

#### Casos notáveis <a href="#casos-notaveis" id="casos-notaveis"></a>

1. **Onde entramos com todos os dados de uma vez: "***Consulta para amanhã às 15h com dentista*"

![](/files/1xmZUKszPFqP7UYTTVfc)

&#x32;**.  Onde nenhum dado é informado:** *Quero agendar consulta"*

![](/files/KVJ6SrNzBmTwsvW9aBFI)

## Retângulos

Trabalhar com fluxos é uma boa forma de organizar de maneira lógica o seu assistente. Uma alternativa é usar os retângulos, que podem ser interconectados por meio das condições de saída de um nó ou, até mesmo, com um ponto de entrada.

Quando um nó tem como destino outro fluxo, ele é representado da seguinte forma:

![](/files/omLmC3SDOIHZuvrVmpto)

## Destinos

Aqui você pode definir a próxima ação do bot de acordo com o conjunto de variáveis.

![](/files/xvp8MN86P6SF1gb2YeKO)

## Bibliotecas

Bibliotecas são chamadas por recursos externos. Para usar, basta mencionar entre os sinais de `<?` e `?>` de acordo com a documentação de cada uma.&#x20;

No momento estamos usando a  [Moment](https://momentjs.com/): ela faz análise, validação, manipulação e exibição de datas e horas em JavaScript. Essa biblioteca pode ser usada em qualquer momento do fluxo, seja em input, output, nas variáveis do contato, ações e eventos.<br>

![](/files/-MCSM6RTJYEiSQlf2S0o)

```
[
    {
        "default": {
            // No primeiro momento formato a data atual, considerando que é case-sensistive.
            // No segundo, faço a mesma coisa, mas com um adicional de passar uma data por variável de contexto e especifico o formato que essa data virá.
            "text": "Bom dia, hoje é dia <? moment().format('DD/MM') ?> e no dia <? moment($data_fatura, 'DD/MM/YYYY').format('DD/MM') ?> sua fatura irá vencer",
            "type": "text"
        },
    },
    {
        "default": {
            // Aqui é calculada uma diferença, em dias, entre as duas datas datas.
            "text": "O vencimento será daqui à <? moment($data_fatura, 'DD/MM/YYYY').diff(moment(), 'days') ?> dias!",
            "type": "text"
        }
    }
]
```


# Componentes

Os Componentes são todas as configurações possíveis de serem feitas dentro de um nó para executar uma ação durante uma conversação. A seguir, você conhecerá cada um.

Cada nó pode possuir 5 componentes em sua estrutura. São eles:&#x20;

1. Output
2. Input
3. Variáveis
4. Ações
5. Eventos

![](/files/vmrqgPMfN297LuhZatRd)


# Output

Outputs são interações onde o bot envia mensagens para o usuário:

* &#x20;[Texto](/build/assistentes/builder/componentes/output/text)
* &#x20;[Texto Randômico](/build/assistentes/builder/componentes/output/random_text)
* [ Texto sequencial](/build/assistentes/builder/componentes/output/sequential_text)
* [ Base de Conhecimento](/build/assistentes/builder/componentes/output/knowledge_base)
* &#x20;[LivePerson Arquivo](/build/assistentes/builder/componentes/input/liveperson_file_upload)
* &#x20;[LivePerson Conteúdo Estruturado](/build/assistentes/builder/componentes/output/liveperson_rich_content)
* [Arquivos](/build/assistentes/builder/componentes/output/file)


# Texto

## Estrutura

```javascript
{
    "default": {
        "text": "Olá",
        "type": "text",
        "payload": {
            "delay": 2000
        }
    }
}
```

### Atributos

* **text:** mensagem a ser apresentada para o usuário.
* **type (default: text):** tipo da mensagem que será apresentada ao usuário.
* **delay (opcional):** tempo (milissegundos) de atraso antes da próxima opção aparecer. Sendo de 0 á 5000, se for inserido um valor acima de 5000 o delay é descartado.

## Exemplos

**Para apenas uma mensagem:**

{% tabs %}
{% tab title="Exemplo 1" %}

```javascript
[
    {
        "default": {
        "text": "Olá, bem-vindo(a)! Eu sou um assistente virtual 🙂",
        "type": "text"
        }
    }
]
```

{% endtab %}

{% tab title="Widget" %}
![](/files/-MDWH0kkdXKReoEhhq_G)
{% endtab %}
{% endtabs %}

**Para duas ou mais mensagens:**

{% tabs %}
{% tab title="Exemplo 2" %}

```javascript
[
    {
        "default": {
            "text": [
                "Olá,Bem-vindo(a)! Eu sou uma assistente virtual 🙂",
                "Você pode ter mais informações acessando o nosso site. Se preferir entre em contato conosco pelo número (35) 98877-6655"
            ],
            "type": "text"
        }
    }
]
```

{% endtab %}

{% tab title="Widget" %}
![](/files/-MDWH3Fn2AZunXLVn9YM)
{% endtab %}
{% endtabs %}


# Texto randômico

## Estrutura

```javascript
[
    {
        "default": {
            "text": [
                "<mensagem 1>",
                "<mensagem 2>",
                "<mensagem 3>"
            ],
            "type": "random_text",
            "payload": {
                "delay": 2000
            }
        }
    ]
```

### Atributos

* **text:** array contendo mensagens que poderão ser exibidas ao usuário. Não há limite de quantidade.
* **type (default: random\_text):** tipo da mensagem que será apresentada ao usuário.
* **delay (opcional):** tempo (milissegundos) de atraso antes da próxima opção aparecer. Sendo de 0 á 5000, se for inserido um valor acima de 5000 o delay é descartado.

## Exemplo

{% tabs %}
{% tab title="Configuração" %}

```javascript
[
    {
        "default": {
            "text": [
                "Tchau",
                "Até logo",
                "Espero te ver denovo"
            ],
            "type": "random_text"
        }
    }
]
```

{% endtab %}

{% tab title="Widget" %}
![](/files/-MDWG890VBHlN-m1G7zE)
{% endtab %}
{% endtabs %}




---

[Next Page](/llms-full.txt/1)

