Bots e o envolvimento humano

Jackson F. de A. M.
Bots Brasil
Published in
7 min readApr 13, 2018

Algumas vezes o bot, por mais avançada que seja a Engine de AI e que o time de ML que cuida do aprendizado seja muito esforçado, ainda pode haver momentos em que ele precise transmitir a conversa para um ser humano.

O bot deve reconhecer quando precisa entregar e fornecer ao usuário uma transição clara e suave.

Este é um caso de uso comum no bot-verso, essa capacidade de entregar uma conversa do cliente de um bot para um humano, e a necessidade crítica de um ciclo de feedback nesse tipo de cenário.

Painel de Acompanhamento de Atendimentos

Cenários que exigem envolvimento humano

Uma ampla variedade de cenários podem exigir que um controle de transição bot da conversa para um humano. Alguns desses cenários são triagem, escalação e supervisão.

Triagem

Uma chamada típica para o help desk começa com algumas perguntas básicas que podem ser respondidas facilmente por um bot. Como o primeiro a responder a solicitações de entrada de usuários, um bot poderia coletar o nome do usuário, endereço e descrição do problema e, em seguida, transferir o controle da conversa para um agente. Usar um bot para triagem de solicitações recebidas permite que os agentes dediquem seu tempo à resolução do problema, em vez de coletar informações.

Escalação

No cenário do help desk, um bot pode responder a perguntas básicas e resolver problemas simples, além de coletar informações. Por exemplo, bots são comumente usados ​​para redefinir a senha de um usuário. No entanto, se uma conversa indicar que o problema de um usuário é complexo o suficiente para exigir envolvimento humano, o bot precisará encaminhar o problema para um agente humano. Para implementar esse tipo de cenário, um bot deve ser capaz de diferenciar os problemas que pode resolver de forma independente e os problemas que devem ser escalados para um humano. Há muitas maneiras pelas quais um bot pode determinar que precisa transferir o controle da conversa para um humano, incluindo:

Menus orientados pelo usuário

Talvez a maneira mais simples de um bot lidar com esse dilema seja apresentar ao usuário um menu de opções. As tarefas que o bot pode manipular de forma independente aparecem no menu acima de um link chamado “Bate-papo com um agente”. Esse tipo de implementação não requer aprendizado de máquina avançado ou entendimento de linguagem natural. O bot simplesmente transfere o controle da conversa para um agente humano quando o usuário seleciona a opção “Bate-papo com um agente”.

Orientado por cenário

O bot pode decidir se transfere ou não o controle com base no fato de determinar se é ou não capaz de lidar com o cenário em questão. O bot coleta algumas informações sobre a solicitação do usuário e, em seguida, consulta sua lista interna de recursos para determinar se é capaz de atender a essa solicitação. Se o bot determinar que é capaz de endereçar o pedido, o faz. No entanto, se o bot determinar que a solicitação está além do escopo de problemas que pode resolver, transferirá o controle da conversa para um agente humano.

Linguagem natural

A compreensão da linguagem natural e a análise de sentimentos ajudam o bot a decidir quando transferir o controle da conversa para um agente humano. Isso é particularmente valioso ao tentar determinar quando o usuário está frustrado ou quer falar com um agente humano.

O bot PODE analisar o conteúdo das mensagens do usuário utilizando ferramentas como a API do Google Analytics de texto para inferir o sentimento ou usando a API do LUIS, DialogFlow, Rasa ou Watson Conversation.

Supervisão

Em alguns casos, o agente humano vai querer monitorar a conversa em vez de assumir o controle.

Por exemplo, considere um cenário de help desk em que um bot está se comunicando com um usuário para diagnosticar problemas no computador. Um modelo de aprendizado de máquina ajuda o bot a determinar a causa mais provável do problema. Antes de aconselhar o usuário a tomar uma ação específica, o bot pode confirmar o diagnóstico e remediar com o agente humano e solicitar autorização para prosseguir. O agente clica em um botão, o bot apresenta a solução para o usuário e o problema é resolvido. O bot ainda está executando a maior parte do trabalho, mas o agente retém o controle da decisão final.

Visão geral conceitual

Essa estrutura (o chat como canal de atendimento) conecta clientes e agentes.

Estado de conversação

Cada conversa do cliente está em um dos seguintes estados:

Cliente <-> bot

Os clientes se conectam a um bot normalmente, através de qualquer canal que o autor do bot permita. Esta conversa está no estado Bot.

Cliente esperando

Um cliente pode entrar em um estado de espera. Nesse estado, suas mensagens não são mais enviadas para o bot. Se eles enviarem mensagens, eles serão informados de que estão aguardando para serem conectados a um agente.

Dependendo de como seu bot é escrito, isso pode acontecer por meio de qualquer um ou de todos:

  • solicitação do cliente (por exemplo, “Eu quero falar com um humano!” ou apenas “ajuda”)
  • lógica do bot (por exemplo, a análise do sentimento determina que o usuário está ficando frustrado)
  • ação do agente

A estrutura Handoff permite que o autor do bot decida os acionadores para colocar o cliente no estado Aguardando.

Dependendo de como seu bot é escrito, eles podem sair desse estado por qualquer um ou todos:

  • solicitação do cliente (“Apenas deixe-me falar com o bot” ou “deixa pra lá”)
  • um agente conectando-se a eles
  • lógica do bot (por exemplo, o cliente esperou demais)

Cliente <-> Agente

Um cliente pode estar conectado a um agente, esteja ele conversando com o Bot, outro Agente ou Aguardando.

Um agente pode se conectar a um cliente específico (aguardando ou não) ou à “melhor escolha” de clientes (por exemplo, aquele que está aguardando há mais tempo).

Dependendo de como seu bot é escrito, isso pode acontecer de forma programática (conectar automaticamente o usuário aos agentes) ou pela ação do agente. No entanto, nesta versão da estrutura, não há conceito de um diretório de disponibilidade de agentes. Então, no momento, isso acontece principalmente através de um agente que escolhe manualmente se conectar a um cliente.

Monitoramento de Agentes

Um agente pode monitorar uma conversa do cliente sem interferir na funcionalidade do bot.
As mensagens vão entre o Cliente e o bot, bem como o Cliente e o Agente.
O Agente conectado pode então optar por assumir (mudar de estado para Agente) ou desconectar (alterar estado para Bot)

Metadados de conversação e provedor

A entrega depende de um banco de dados de conversas, incluindo uma transcrição de cada mensagem enviada entre o cliente e o bot, ou entre o cliente e o agente. O handoff é fornecido com um provedor padrão na memória, mas os robôs de produção devem fornecer seus próprios, usando armazenamento persistente.

Aquela transferência marota.

Uma conversa de transferência consiste em:

  • endereço informações para esta conversa com o cliente
  • o estado atual dessa conversa (Bot, Waiting ou Agent)
  • o transcrito de conversação
  • informações de endereço para o agente, se o agente estiver atualmente conectado a este cliente
    (A entrega não registra metadados de conversação para o agente, exceto quando eles estão conectados a um cliente)

Roteador de mensagens

O coração da Handoff é o roteador de mensagens. Usando os metadados de conversação acima, cada mensagem de um Cliente, Bot ou Agente é roteada de forma adequada. Isto é implementado como um middleware de Bot, e pode ser combinado com qualquer outro middleware que seu bot já esteja usando como achar melhor.

Reconhecimento de agente

Clientes e Agentes são apenas usuários conectados a bots, então Handoff precisa de uma maneira de identificar um Agente como tal. Existem várias maneiras de isso acontecer:

  • criar um diretório codificado de IDs de usuário específicos de canal para Agentes, por exemplo, “Fred Doe no Facebook Messenger é um dos nossos agentes”
  • crie um aplicativo de call center baseado em WebChat que codifique especialmente os IDs de usuário do agente, por exemplo, “Agent001”, “Agent002”. WebChat torna isso fácil de fazer.
  • crie um aplicativo de call center baseado em WebChat que autentique os usuários e, em seguida, passe os tokens de autenticação para o bot por meio do WebChat backchannel
  • use o authbot para identificar o usuário como um agente por meio do OAuth2, por exemplo “Este usuário autenticado é marcado como um agente em nosso banco de dados de funcionários”
    … e assim por diante.

O handoff(Handover, Transbordo) não é publicado sobre como isso deve acontecer. Ele requer que o autor do bot passe uma função da forma isAgent (session: Session) => booleano, na suposição de que todas as técnicas acima acabarão por registrar o Agente de um usuário em particular de uma maneira que possa ser obtida pelo objeto de sessão, mais tipicamente através do serviço de estado de bot.

Finalizando

Esse artigo é uma compilação de vivências do dia a dia e de referências abaixo. Qualquer dúvida, só me chamar :)

Referências:
https://chatbotsmagazine.com/perfecting-the-chatbot-to-human-handoff-8fa49a8b1515
https://chatbotsmagazine.com/the-bot-human-handoff-34fd1808731
https://github.com/palindromed/Bot-HandOff
https://ankitbko.github.io/2017/03/human-handover-bot/
https://www.npmjs.com/package/botbuilder-handoff
https://github.com/tompaana/intermediator-bot-sample
https://www.microsoft.com/developerblog/2018/02/05/human-handoff-dashboard/
https://docs.microsoft.com/pt-br/azure/bot-service/bot-service-design-pattern-handoff-human
https://chatbotslife.com/increase-your-messenger-chatbot-performance-with-handover-protocol-3f9b6e14a630
https://developers.facebook.com/docs/messenger-platform/handover-protocol
https://github.com/tompaana/intermediator-bot-sample
https://ankitbko.github.io/2017/03/human-handover-bot/

--

--

Jackson F. de A. M.
Bots Brasil

A Brazilian software engineer, living in Stockholm, Sweden 🇸🇪.