> For the complete documentation index, see [llms.txt](https://digitalsac.gitbook.io/digicrm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://digitalsac.gitbook.io/digicrm/digicrm/operacao-uso-do-sistema/configuracoes/robo-de-atendimento.md).

# Robô de Atendimento

### Finalidade

O **Robô de Atendimento** (ChatFlow) monta um **fluxo visual de autoatendimento** no canal: menus, mídia, botões/listas, webhooks, etiquetas, Kanban, agendamento, transferências e subfluxos. Quando o cliente fala no canal vinculado, o ticket fica no robô (`chatFlowId` + `stepChatFlow`) enquanto estiver **pending**, sem usuário e sem fila.

Não confundir com:

| Recurso                             | Papel                                 | Quem usa  |
| ----------------------------------- | ------------------------------------- | --------- |
| **Robô de Atendimento** (este guia) | Fluxo automático no canal             | Cliente   |
| **Inteligência Artificial**         | Auto-resposta por prompt/LLM no canal | Cliente   |
| **Copilot IA**                      | Assistente do **atendente** no ticket | Atendente |

No **Cadastro de Canais**, o destino automático é **exclusivo**: ChatBot **ou** Inteligência Artificial **ou** Fila (não os três juntos).

\[\[FOTO]]

***

### Caminho / permissão / licença

| Item                | Valor                                   |
| ------------------- | --------------------------------------- |
| **Menu**            | Configurações → **Robô de Atendimento** |
| **Lista**           | `/configuracoes/chat-flow`              |
| **Builder**         | `/configuracoes/chat-flow/builder`      |
| **Perfil**          | Admin (`requiresAdmin`)                 |
| **Licença do card** | **FREE** (com limite de fluxos ativos)  |

\[\[FOTO]]

***

### Como os três recursos se diferenciam

1. **Robô** — regras e menus desenhados por você (sem LLM obrigatório).
2. **Inteligência Artificial** — LLM responde no canal via `promptId`.
3. **Copilot** — o atendente liga um agente no ticket (FAB robô); se o canal já tem Prompt IA, o Copilot **não** processa aquele ticket automaticamente.

\[\[FOTO]]

***

### Listagem de fluxos

Abas **Ativos** / **Inativos**. Visão tabela ou cards (preferência salva localmente).

| Campo             | Para que serve                                               |
| ----------------- | ------------------------------------------------------------ |
| **Nome**          | Identificação do fluxo                                       |
| **Status**        | Ativo / Inativo                                              |
| **Celular teste** | Se preenchido, **só esse número** dispara o fluxo (WhatsApp) |
| **ID**            | Identificador interno (cards)                                |

#### Ações

| Ação                      | O que faz                           |
| ------------------------- | ----------------------------------- |
| **Adicionar**             | Cria fluxo com desenho padrão       |
| **Editar informações**    | Nome, celular teste, ativo/inativo  |
| **Duplicar**              | Cópia do fluxo                      |
| **Abrir fluxo**           | Abre o editor visual                |
| **Importar JSON**         | Sobrescreve o desenho do fluxo      |
| **Ajustar configurações** | Migração legada (quando necessário) |
| **Excluir**               | Soft delete (some da lista)         |

\[\[FOTO]]

***

### Modal criar / editar / duplicar

| Campo                 | Obrigatório | Para que serve                                       |
| --------------------- | ----------- | ---------------------------------------------------- |
| **Descrição (nome)**  | Sim         | Nome do robô                                         |
| **Número para teste** | Não         | Homologação: vazio = todos; preenchido = só o número |
| **Status do fluxo**   | —           | Ativo / Inativo                                      |

Fluxo **inativo** não inicia no canal, mesmo vinculado.

\[\[FOTO]]

***

### Editor visual (builder)

Toolbar típica: adicionar etapa, tipo de aresta, layouts, **Salvar**, baixar JSON, tela cheia.

#### Tipos de nó

| Tipo               | Função                                         |
| ------------------ | ---------------------------------------------- |
| **start**          | Entrada do fluxo                               |
| **configurations** | Regras globais (não é etapa falada ao cliente) |
| **node**           | Etapa com interações + condições + ações       |
| **end**            | Fim                                            |

#### Nó Configurações (globais)

| Regra                    | Para que serve                                                                                   |
| ------------------------ | ------------------------------------------------------------------------------------------------ |
| Mensagem de boas-vindas  | Ao transferir para fila/usuário                                                                  |
| Opção inválida           | Texto + voltar à etapa ou ao início                                                              |
| Ausência de resposta     | Tempo + destino (fila / usuário / encerrar / canal); modo 2 etapas (aviso) exige plano **Cloud** |
| Máx. retentativas do bot | Limite de tentativas                                                                             |
| Fora do horário          | Destino quando fora do expediente                                                                |
| Distribuição automática  | Não / balanceado / sticky / sequencial / aleatório                                               |

\[\[FOTO]]

#### Interações nas etapas

| Interação         | Função                                      |
| ----------------- | ------------------------------------------- |
| Mensagem          | Texto (variáveis como `{{name}}`)           |
| Mídia             | Áudio, imagem, documento                    |
| Botões            | Opções interativas                          |
| Lista             | Lista/seções                                |
| Webhook           | Chamada HTTP (testável)                     |
| Delay             | Espera em segundos                          |
| Etiqueta          | Aplica tag                                  |
| Kanban            | Move card                                   |
| Salvar dados      | Mapeia variáveis → campos do contato        |
| Capturar variável | Guarda última mensagem                      |
| Agendamento       | Serviços / profissionais / datas / horários |
| Origem            | Define origem do contato                    |
| Agente Copilot    | Dispara agente Abacus no fluxo              |

#### Condições (“Se”)

| Tipo              | Comportamento                               |
| ----------------- | ------------------------------------------- |
| Qualquer resposta | Segue com qualquer mensagem                 |
| Respostas         | igual a / contém / começa / termina / regex |
| Automático        | Continua sem esperar o cliente              |
| Agenda            | Dia/hora (fuso do tenant)                   |

#### Ações da condição

| Ação              | Efeito                       |
| ----------------- | ---------------------------- |
| Próxima etapa     | Avança no fluxo              |
| Fila              | Transfere e **sai do robô**  |
| Usuário           | Atribui atendente            |
| Encerrar          | Fecha o ticket               |
| Canal             | Envia para outro canal       |
| Outro fluxo       | Troca definitiva de ChatFlow |
| Subfluxo          | Empilha e chama outro fluxo  |
| Retornar subfluxo | Volta da pilha               |

#### Publicar / ativar

1. **Salvar** no builder (grava o JSON do fluxo).
2. Deixar o fluxo **Ativo** no modal da lista.
3. Vincular o fluxo no **Cadastro de Canais** (tipo ChatBot).

Não há “publicar” separado: o JSON salvo + ativo + canal = produção.

\[\[FOTO]]

***

### Vincular ao canal

1. Configurações → **Cadastro de Canais**.
2. Tipo de atendimento: **ChatBot**.
3. Selecione o fluxo.
4. Salvar — limpa Prompt IA e Fila do mesmo canal.

#### Quando o robô inicia

Na criação do ticket (mensagem nova), tipicamente:

* Sem usuário e sem fila
* Contato **sem** bloqueio de chatbot
* Canal com `chatFlowId` e fluxo **ativo**
* Passa no filtro de celular teste (se houver)
* Entra na linha a partir do nó **start** e envia a primeira etapa

Mensagens seguintes avançam as etapas do fluxo.

\[\[FOTO]]

***

### Controle no Atendimento

\| Controle | Onde | Efeito | | --- | --- | | **Bloquear Chatbot** | Toggle no atendimento (por contato) | Só atendimento humano; robô para | | Transferir fila/usuário | Ação do fluxo ou manual | Zera flags do bot | | **Não visualizar tickets do ChatBot** | Configurações Gerais | Não-admin não vê tickets ainda no robô | | Aba / badge Bot | Lista de tickets | Destaca tickets com robô ativo |

\[\[FOTO]]

***

### Limites FREE e erros comuns

| Situação                        | O que acontece                        |
| ------------------------------- | ------------------------------------- |
| Plano FREE                      | Apenas **1 fluxo ativo**              |
| Tentar ativar o 2º no FREE      | Erro de limite de chatbots ativos     |
| Ausência em 2 etapas fora Cloud | Recurso só Cloud                      |
| Celular teste preenchido        | Demais números **não** entram no robô |
| Fluxo inativo no canal          | Welcome não inicia                    |
| Contato com chatbot bloqueado   | Não processa passos                   |
| Canal com IA ou Fila            | Robô não é o destino (exclusividade)  |

\[\[FOTO]]

***

### Fluxo operacional recomendado

1. Crie o fluxo e use **Celular teste**.
2. Monte etapas no builder e **Salve**.
3. Ative o fluxo.
4. Vincule no canal.
5. Teste ponta a ponta.
6. Remova o celular teste para liberar a todos.
7. Em operação grande, considere ocultar tickets do bot para não-admin.

\[\[FOTO]]

***

### Dicas

* FREE: um ativo; demais inativos ou upgrade.
* Prefira um destino por canal (Robô **ou** IA **ou** Fila).
* Subfluxos para menus reutilizáveis.
* Webhook: teste antes de colocar em produção.
* Bloqueio por contato = “humano only” sem desligar o fluxo do canal.
* Após editar o grafo, sempre **Salvar** no builder.
