Olá pessoal, tudo bem?
Recentemente respondi uma dúvida muito interessante aqui no fórum e resolvi criar esse post para compartilhar a solução com vocês.
Em diversos momentos nós podemos precisar alertar o usuário sobre alguma condição ou evento que irá impactar na conversa dele com nosso contato inteligente. Por exemplo, eu posso querer informar a qualquer momento para o usuário quando que o horário de atendimento encerrou e evitar que ele percorra todo um fluxo de cadastro para só informar isso no final. Neste post irei mostrar como é possível fazer isso de um jeito bastante prático.
A implementação dessa solução é bastante simples e rápida. Todas as alterações são feitas nas ações de entrada do bot, conforme mostra o print abaixo.
Neste exemplo, meu objetivo é enviar uma mensagem para o usuário sempre que encerrar o tempo de atendimento do Desk. Para isso, executei os seguintes passos:
1 - Criei um script nas ações globais de entrada para validar se está no horário de atendimento. Este script retorna um booleano e registro essa informação na variável estaEmHorarioDeAtendimento
. Não há condições de execução desse script, ele sempre irá executar.
2 - Adicionei uma requisição http para enviar a mensagem de alerta para o usuário. As condições para executar essa ação são a variável mensagemDeAlertaJaEnviada
não existir e a variável estaEmHorarioDeAtendimento
ser igual a false. obs: Falarei da variável mensagemDeAlertaJaEnviada
no próximo ponto.
A requição HTTP é a seguinte:
Método: POST
URL: A url você encontra nas configurações do seu bot roteador (se utilizar um roteador) ou no builder (se não utilizar um roteador). Você encontra ao clicar na engrenagem no canto direito do bot e nas opções “Informações de conexão”. É a url para enviar mensagens. No print abaixo mostra onde encontrar. Obs: essa url pode mudar de um bot para outro, por isso sempre pegue essa informação nas configurações de conexão do seu bot.
Headers: É preciso adicionar apenas uma chave no header que é o authorization do seu bot. Você encontra ela no mesmo lugar que encontrou a url de mensagens. É o campo “Authorization” do bot.
Body: No corpo da requisição você irá enviar este conteúdo:
{
"id": "{{random.guid}}",
"to": "{{contact.identity}}",
"type": "text/plain",
"content": "O Horário de atendimento chegou ao fim. Caso precise falar com algum atendente, entre aqui novamente amanhã das 08:00 às 18:00 horas."
}
O campo content é a mensagem que será enviada para o usuário, personalize-a como quiser.
3 - Por fim, eu defini a flag mensagemDeAlertaJaEnviada
para controlar quando não enviar a mensagem novamente. Eu estou definindo essa variável com o valor true (mas pode ser qualquer valor) e definindo um tempo de uma hora (3600 segundos) para ela expirar. Essa variável é definida sempre que ela não existir ainda (para não sobrescrever o tempo de expiração) e quando estiver fora do horário de atendimento. Dessa forma, de uma em uma hora, caso o usuário continue conversando com o bot neste período, a mensagem será enviada novamente.
4 - Caso esteja utilizando um bot roteador, lembre-se de habilitar a opção de “Utilizar contexto do roteador” nas configurações do bot. Isso é necessário para que nossa requisição http que envia a mensagem tenha sucesso.
E é isso, não precisa alterar mais nada no bot. Para testar essa solução, criei um fluxo bem simples com 3 blocos que printam seus nomes.
Esse é o print do fluxo:
Caso queira analisar o bot que desenvolvi, este é o json para importar o fluxo dele.
experimental2.json (9,5,KB)
Por fim, essa mesma solução pode ser adaptada para outros cenários, basta mudar o script do primeiro ponto.
E é isso, qualquer dúvida podem mandar aqui que estou a disposição.