🤖Diálogos / Chatbot
Visão geral

O chatbot automatiza e padroniza o atendimento, permitindo respostas automáticas e fácil suporte aos usuários na plataforma. A ordem dos diálogos afeta a sua prioridade de ativação, com os diálogos no topo tendo maior prioridade.
E como funciona o chatbot?
Diálogos
Os diálogos são ações configuradas no chatbot que determinam sua ativação, execução e contexto do cliente. Podem ser acionados automaticamente por gatilhos ou manualmente em momentos específicos definidos pelo usuário.
São divididos em 4 partes:
Gatilhos
Os gatilhos definem quando o chatbot será ativado. Com um conjunto de gatilhos configurados, você pode definir se o diálogo será ativado apenas nos finais de semana, quando o cliente enviar um arquivo de áudio, se o cliente tiver um status específico e muito mais.
Gatilhos disponíveis:
Texto exato - Dispara o diálogo quando o chat escreve exatamente o texto colocado no gatilho.
Palavra - Dispara o diálogo quando o chat escreve algo que contém a palavra colocada no gatilho.
Intenção - Descrita abaixo.
Contexto - Descrito abaixo.
Entidade - Descrita abaixo.
Dia/Hora - Dispara o diálogo quando o chat interage em determinado dia ou horário.
Status do chat - Ativa de acordo com o status que o chat está quando interage.
Novo chat - Dispara o diálogo na primeira interação do chat, assim que é criado.
Número inicial do chat - Dispara o diálogo de acordo com os dígitos iniciais do número do chat quando ele interage.
Ligação perdida - Dispara o diálogo quando o chat tenta realizar uma ligação via WhatsApp.
E-mail - Dispara o diálogo quando o chat envia uma mensagem contendo apenas um email, sem textos adicionais.
Possui algum e-mail - Dispara o diálogo quando o chat envia uma mensagem e nessa mensagem há um e-mail, mesmo que existam textos adicionais.
Telefone/Celular - Dispara o diálogo quando o chat envia uma sequência de números que corresponda a um número de telefone.
CEP - Dispara o diálogo quando o chat envia uma sequência de números que corresponda a um CEP.
CPF - Dispara o diálogo quando o chat envia uma sequência de números que corresponda a um CPF.
CNPJ - Dispara o diálogo quando o chat envia uma sequência de números que corresponda a um CNPJ.
Áudio - Dispara o diálogo quando o chat envia um áudio.
Foto/Imagem - Dispara o diálogo quando o chat envia uma foto ou imagem.
Vídeo - Dispara o diálogo quando o chat envia um vídeo.
Documento - Dispara o diálogo quando o chat envia um documento.
Msg Incompleta - Dispara o diálogo quando o chat envia uma mensagem e ela não é carregada pelo WhatsApp.
Data - Dispara o diálogo quando o chat envia uma mensagem que contém uma data.
Qualquer coisa - Dispara o diálogo com qualquer mensagem do chat.
Operadores que complementam os gatilhos:
Parêntese
AND - Condição obrigatória
OR - Condição opcional
NOT - Negativa
ATENÇÃO
Os gatilhos se aplicam a ações dos a ações dos clientes! Caso um usuário da plataforma mande uma mensagem para o chat e se encaixe em algum gatilho, isso não ativará o chatbot. Os usuários possuem uma forma de ativar diálogos manualmente.
Vamos utilizar como exemplo um diálogo que deve ativar quando o cliente entrar em contato fora do horário de atendimento, servindo como aviso automático para esses casos.

O chatbot seguirá a regra configurada nesse gatilho e ativará caso alguma dessas combinações "batam" quando o cliente interagir. O exemplo está configurado para ativar quando:
O cliente interagir em um horário antes das 09:00h ou em um horário à partir das 19:00h. (current_time<09:00 or current_time >= 19:00)
ou (or)
O cliente interagir no domingo.(sunday)
ou (or)
O cliente interagir no sábado e em um horário à partir das 13:00h. (saturday and current_time>=13:00)
Por que não colocamos todos os dias da semana nos gatilhos? Não é necessário incluir todos os dias da semana no gatilho, pois apenas com a primeira parte referente ao horário, ele será ativado nesse período, independentemente do dia.
E o sábado? Por que está no gatilho? No sábado, o horário de atendimento encerra um pouco mais cedo, então é necessário configurar que no sábado, a partir das 13h, o diálogo também deve ser ativado.
E o domingo? No domingo, não há atendimento durante todo o dia. Os primeiros gatilhos que só funcionam antes das 9h ou depois das 19h não são relevantes. Portanto, adicionamos um gatilho para o dia no diálogo. Assim, se o cliente interagir no domingo, independentemente do horário, o diálogo será ativado.
Conectivos e parênteses, como usar? Os conectivos 'AND' e 'OR' são essenciais para a lógica dos gatilhos. Preste atenção na lógica usada para criá-los.
Vamos ver um exemplo comum de utilizar os conectivos de forma incorreta:

❌ Forma incorreta dos gatilhos
Os gatilhos acima estão incorretos pois prejudicam a interpretação do chatbot. O chatbot interpretará o gatilho acima da seguinte forma:
"Devo ativar quando o cliente interagir antes das 9:00h e depois das 19:00h."
Isso está incorreto porque não é possível o cliente interagir em um horário que seja menor que 9h e maior que 19h ao mesmo tempo.
Então, a forma correta de escrever esses gatilhos seria utilizando o conectivo 'OR' e assim o chatbot interpretaria da seguinte forma:

✅ Forma correta dos gatilhos
"Devo ativar quando o cliente interagir antes das 9:00h ou depois das 19:00h."
Agora está correto porque nesse caso sim, é possível o cliente interagir antes das 9h ou depois das 19h.
E quando utilizar o 'AND'? O 'AND', em casos de horários, serve para ativar em um período entre determinadas horas. Por exemplo, um horário de almoço.

O 'AND' nesse caso está correto porque o chatbot deve interpretar como:
"Devo ativar caso o cliente interaja entre 12:00h e 13:00h"
E os parênteses? Os parênteses servem para separar e "isolar" situações de ativação. No exemplo anterior, tínhamos 3 situações: O horário do dia a dia, o horário específico do sábado e o domingo como um todo.

Observe que cada situação é separada por parênteses. A situação do horário do dia a dia está em um parênteses, assim como a situação do sábado. O domingo não está separado em parênteses porque é composto por apenas um gatilho, já estando isolado das outras situações através dos conectivos 'ou'.
Os conectivos e parênteses são extremamente importantes na utilização de todos os gatilhos, sejam eles de horários, status ou qualquer outra coisa. É com os conectivos que você cria a lógica de ativação para o chatbot interpretar.
Ações

A ação é o que o chatbot vai executar quando ativado automaticamente (por gatilhos) ou manualmente (por usuários).
Existem diversas ações e elas podem ser utilizadas todas de uma única vez ou com intervalos predefinidos.
Ações disponíveis
Responder: Envia uma mensagem para o chat.
Anexar: Envia um arquivo para o chat.
Encaminhar: Envia um aviso para o WhatsApp de um usuário da plataforma.
Delegar: Atribui ou remove um usuário/departamento como responsável do chat.
Tag: Atribui uma tag ao chat. Não serve para remover, apenas atribuir.
Funil: Atribui um chat a uma etapa de um funil ou mais. Não serve para remover, apenas atribuir.
Anotação: Realiza uma anotação dentro do chat.
Leitura: Atribui ou remove o ícone da notificação de mensagem não lida do chat.
Diálogo: Executa outro diálogo configurado no chatbot.
Status: Altera o status do chat.
NPS: Envia uma pesquisa de NPS para o chat.
CRM: Ação que realiza um post para um webhook, utilizado para configurações que envolvem API.
Template: Envia uma mensagem de template para o chat. Mensagens de template são configurações especificas de contas que utilizam o WhatsApp Business API Oficial.
Campo Personalizado: Preenche o campo personalizado selecionado na ação, com o conteúdo da mensagem enviada pelo Chat.
Renomear Chat: Essa ação preencherá o nome do Chat com a mensagem enviada por ele.

Exemplo de ação de mensagem.
As ações, além de especificas como listado acima, também possuem configurações extras. No caso da ação 'Responder', que envia uma mensagem para o chat, nós conseguimos utilizar os comandos mencionados em respostas rápidas e montar o texto da forma que desejarmos.

Ao lado de toda ação existirá também as opções de: status, execução e atraso.

Status
Ative ou desative ações de um diálogo sem precisar refazer todo o diálogo.
Execução
Decida se a ação ocorrerá automaticamente ou se ficará agendada para aprovação do usuário.
Atraso
Defina o intervalo de tempo para a ocorrência da ação, após a ativação do diálogo. Lembre-se de que você está atrasando a ação, não o diálogo.
Exemplo de uso: um diálogo com duas mensagens, sendo que a primeira é um texto longo que o cliente precisa ler e concordar antes de enviar uma confirmação após 20 minutos com a pergunta "Você concorda com o texto acima?".

Com uma combinação de ações, você pode definir o curso de um diálogo e do chat do cliente. Por exemplo, crie um diálogo de encerramento para que os usuários possam finalizar o atendimento manualmente. Esse diálogo deve realizar o seguinte:

Enviar uma mensagem
Inserir o chat na etapa de um funil
Alterar o status para resolvido
Realizar uma anotação
Lembrando que as ações acontecem na ordem de cima para baixo, então lembre-se de utilizar o botão para arrastar as ações e deixar na ordem desejada.
Depois de configurado, basta executar o diálogo manualmente dentro do chat que será finalizado!
Contextos
Os contextos são marcações nos chats para usar como gatilhos e controlar a evolução da conversa automática. Por exemplo, uma mensagem inicial pode perguntar ao cliente se ele quer atendimento do departamento comercial ou suporte, selecionando números.

Mensagem que pergunta a opção desejada
Nesse mesmo diálogo é necessário colocar um contexto para que consigamos captar a resposta do cliente referente a essa pergunta e encaminha-lo para o departamento escolhido.

O diálogo que envia a pergunta também marca o contexto.
Então, agora sabemos que o cliente marcado com o contexto "URA = Departamento" recebeu a mensagem que pergunta sobre o departamento desejado.
E como criamos os diálogos para encaminhar a opção escolhida?

Sabemos que para encaminhar ao departamento comercial, além de ter que digitar o texto exato '1', o chat também precisa ter como gatilho o contexto criado anteriormente.

Adicionando o contexto aos gatilhos
No final, ficando assim:

Ou seja, nesse exemplo, o cliente precisa estar no status aberto, digitar o número 1 e estar marcado com o contexto da pergunta anterior, URA = Departamento.

Quando esses gatilhos ativarem, o cliente receberá uma mensagem, será encaminhado para o departamento escolhido e terá o seu contexto atualizado, evitando ficar preso no contexto anterior.
No exemplo acima, seriam utilizados 3 diálogos: 1 para perguntar sobre os departamentos e os outros 2 para ativar de acordo com o número selecionado. Cada um deles terá seu conjunto de gatilhos, ações e contextos.

Informações importantes sobre os contextos:
Os contextos podem ser criados com qualquer nome, exceto 3: 0, null e None.
O número 0 e o texto Null são reconhecidos como valores nulos no chatbot. O None é utilizado quando o contexto não existe no chat.
Os contextos são essenciais na criação de diálogos como menus e submenus.
Lembre-se de atualizar o contexto conforme as perguntas evoluem. Para atualizar, mantenha o mesmo nome da variável e altere apenas o valor.
É possível aplicar mais de 1 contexto no mesmo diálogo, desde que tenham variáveis diferentes.
O contexto precisa existir antes de aparecer na lista de gatilhos.
Configurações do diálogo

As configurações de um diálogo também são um ponto importante da configuração de um chatbot. É nelas que você definirá como o diálogo deve executar, se deve estar disponível para os usuários ativarem manualmente ou se deve estar oculto e outras coisas. São elas:
Tipo de diálogo

Existem 3 tipos de diálogos: Padrão, Contínuo e Manual.
Padrão: é um tipo de diálogo que é ativado automaticamente uma vez por ação do cliente e aguarda a próxima ação. Por exemplo, você tem um diálogo que pergunta sobre o departamento desejado pelo cliente. Esse diálogo deve ser padrão, pois o chatbot executa e para, aguardando a resposta do cliente para continuar.
Contínuo: é um tipo de diálogo que executa e passa para o próximo diálogo se o cliente se encaixar em mais de um, sem esperar uma segunda interação do cliente. Por exemplo, você deseja que sempre que um novo chat surgir, uma tag seja automaticamente aplicada, mas o cliente ainda deve ter acesso ao menu que pergunta sobre os departamentos.

Assim, quando um novo chat surgir, o diálogo configurado para novos chats vai executar e aplicar a tag, e sendo continuo, vai seguir para ativação do próximo diálogo, caso o cliente também se encaixe nos gatilhos do mesmo.
Por último, temos o tipo Manual e como o próprio nome sugere, ele é um diálogo que não vai ativar automaticamente, somente se executado por um usuário ou se ativado por outro diálogo.
Invocável

O invocável serve para você decidir se o diálogo deve ou não aparecer na lista de diálogos manuais para os usuários. Isso é útil para deixar a visualização dos seus usuários mais limpa e também evitar que alguém acione manualmente algo que deveria ser automático.
Máximo de execuções

O máximo de execuções define quantas vezes aquele diálogo pode ocorrer no mesmo chat. Isso não fará com que o diálogo seja executado repetidamente na mesma ativação, mas sim limitará a conversa. Por exemplo, se você deseja que a pergunta sobre o departamento ocorra apenas uma vez por chat, você pode definir o máximo de execuções como 1. Dessa forma, quando o cliente ativar esse diálogo uma vez, ele não poderá ativá-lo novamente, mesmo que corresponda aos gatilhos. O limite de execuções não se aplica a execuções manuais, permitindo assim exceder manualmente o limite configurado.
Intervalo mínimo

No intervalo mínimo é decido de quanto em quanto tempo aquele diálogo pode ser ativado novamente na mesma conversa. Vamos ao exemplo utilizado anteriormente de fora de horário**.** Geralmente colocamos um intervalo de 10 minutos (600 segundos) para que a mensagem de fora de horário se repita novamente. Assim, caso o cliente envie 3 mensagens separadas mas em um intervalo de 10 minutos, ele só vai receber uma mensagem de fora de horário.
Certificar contexto

O certificar contexto serve para validar os gatilhos do diálogo, geralmente manuais, que será executado. Por exemplo, digamos que manualmente o seu usuário vai executar o diálogo de finalizar atendimento.

Com o certificar contexto ativo, o diálogo só ativará se o cliente se encaixar nos gatilhos, que nesse caso é o status em atendimento. Então, mesmo sendo executado manualmente por um usuário, o diálogo só vai acontecer se o chat se encaixar nos gatilhos.
Restringir à usuários/departamentos

Ao restringir um diálogo, você define para qual usuário ou departamento aquele diálogo deverá aparecer como opção para acionar manualmente. Digamos que você irá possuir 2 diálogos para finalizar o atendimento: um para o vendedor "Josué" e outro para a vendedora "Luana".

Assim, para evitar que o Josué execute o diálogo que deve ser apenas utilizado pela Luana, nos restringimos o diálogo para o usuário dela.
Grupo

Os grupos servem para você separar visualmente os diálogos. Então se você tem uma série de diálogos para finalizar atendimento, você cria um único grupo para todos eles, facilitando assim a identificação dos mesmos. No nosso caso, temos um grupo de diálogos para a nossa Wiki:

E isso facilita tanto na organização da lista de diálogos quanto para os usuários que precisam executar manualmente, sendo mostrados assim:

Condições adicionais

A regra nas condições adicionais é um campo onde você pode colocar os gatilhos por extenso, no lugar de seleciona-los na parte superior referente a gatilhos, para que funcionem em conjunto com os gatilhos já existentes. Vamos ver um exemplo:

Além do gatilho de status em atendimento, também temos os gatilhos por horários, como o exemplo no início da página. O diálogo só será ativado se o gatilho e as condições adicionais coincidirem. As condições são apenas uma forma de definir os gatilhos por horários, não podem criar um tipo de gatilho que não exista na plataforma. Isso conclui as opções internas de um diálogo, mas ainda há mais coisas para explorar...
Intenções
A intenção é um tipo de gatilho de diálogo mais complexo, onde você consegue colocar várias palavras e textos agrupados para utiliza-los como um único gatilho.

Ao criar uma nova intenção, você deverá definir:
Titulo

Serve apenas para identificação, não impacta na ativação.
Palavras-chave

As palavras chave servem como a base de cada intenção, pois é nela que o chatbot vai se basear para ativar ou não. Nesse nosso exemplo, como é uma intenção referente a preço de algo, nós colocamos os sinônimos que podem ser utilizados na mensagem enviada pelo cliente.
Frases de exemplo

As frases de exemplo são modelos de perguntas que podem ser enviadas pelo cliente utilizando as palavras chave.
Pontuação mínima

Após criar uma intenção, ao voltar para a lista inicial, você poderá definir a pontuação mínima para que essa intenção ative ou não quando estiver em um diálogo. A pontuação é definida da seguinte forma:
Palavra chave: 10 pontos
Mensagem similar a frase de exemplo: 2 pontos
Mensagem exatamente igual a frase de exemplo: 100 pontos
Assim, após criar uma intenção, você também consegue definir em qual pontuação mínima o cliente deve se encaixar para ser valido para a intenção.
ℹ️ Nessa tela inicial, você também pode adicionar novas palavras chave ou frases de exemplo.
Depois, basta utilizar a intenção como gatilho de algum diálogo!

Entidades
Já as entidades servem como um grupo de palavras chave e seus sinônimos que podem ser utilizados como gatilhos de um diálogo, assim como as intenções. A diferença entre intenções e entidades é que nas entidades não existe o sistema de pontuação, então elas funcionam de forma mais precisa e só ativarão se o cliente mandar exatamente a palavra que existe na entidade.

Criando uma nova entidade
Ao criar uma nova entidade, você deverá definir:
Nome

Serve apenas para identificação, não impacta na ativação.
Descrição

Serve apenas para descrever qual a utilidade daquela entidade, não impacta na ativação.
Sinônimos/Padrões

Nos sinônimos / padrões você colocará as palavras chaves que farão parte da entidade, colocando o seu valor principal e seus sinônimos.
No nosso exemplo acima, colocamos que a palavra "Preço" tem como sinônimo "Preco", "valor", "custo", "valores", "custos" e "preços".
Assim, quando colocarmos a entidade como gatilho, tanto a palavra "Preço" como qualquer outro sinônimo configurado funcionarão.
Existem 2 tipos valores em entidades:
Sinônimos: Como usado anteriormente, serve para palavras diferentes que possuem o mesmo sentido da principal (valor).
Padrões: Servem para alterar o tipo da entidade para que ela aceite uma expressão regex no lugar de sinônimos pré definidos. Com um Regex, por exemplo, conseguimos criar uma entidade que aceite palavras com 11 dígitos, independente de como for escrita.
DICA: O regex é uma expressão regular utilizada mundialmente na área de desenvolvimento, nós não conseguiremos ensinar a criar regex's diferentes aqui. Caso tenha interesse ou necessidade de criar algum regex, indicamos que pesquise e verifique como montar esse código.
Após criar a sua entidade, basta utiliza-la como um gatilho no seu diálogo!
