Experiência de usuários em chatbots: URA x NLU
Tags: chatbot, dialogflow, twilio, ux
Published: 2021-03-10 16:58:44

Com a demanda de novos canais de comunicação, em especial o aumento do número de chatbots e outros serviços automatizados, tornou-se indispensável a elaboração de estruturas de atendimento e relacionamento com clientes que focam na melhor experiência de uso.

Quando criamos novas interfaces, segundo Steven Johnson, acabamos por copiar a lógica de construção e uso da tecnologia anterior semelhante ou mais próxima. Essa “evolução” incremental nem sempre funciona para as tecnologias mais novas e esse é o contraponto que quero discutir neste artigo.
Estamos desenvolvendo chatbots e sistemas de atendimento e acabamos por repetir experiências que podem não funcionar tão bem com o novo paradigma proporcionado pelo aprendizado de máquina.

Se você utilizou recentemente algum chatbot que te oferece uma lista de opções numéricas, é exatamente sobre isso que se trata este artigo.

## O impacto das metáforas nos chatbots
Eu sei que a gente vive em um mundo construído sobre associações e modelos para facilitar o entendimento das coisas, em outras palavras, fazemos uso de metáforas.

Quando você utiliza um software como o Word, a metáfora da máquina de escrever está lá, silenciosa ultimamente, mas com toda força de quem já datilografou em papel. Se um usuário novo começar a utilizar o aplicativo e for familiarizado com o processo anterior, não vai sentir muita dificuldade de começar a preencher este “papel virtual” com suas ideias.

Nós precisamos fazer uso dessas metáforas porque isso reduz a fricção de novos usuários. Porém, quando construímos chatbots, provavelmente a metáfora mais próxima que temos é do atendimento telefônico, aquele que começa com “disque 1 para acessar nosso canal de suporte, 2 para…”. E é aí que começam os problemas.

Não estou criticando se você usa esse modelo em seus chatbots, o importante não é sobre o modelo, mas sobre como você cria uma experiência para seus usuários e se está utilizando a ferramenta mais adequada para isso.

## Mas por que estou focando sobre ferramentas?
Hoje existem diversas plataformas que permitem que você construa robôs de conversação e que fazem uso de tecnologias avançadas de Compreensão de Linguagem Natural (NLU em inglês), mas isso tem um custo que, no longo prazo, uma ferramenta mais simples poderia ser mais interessante.

Um outro ponto é que não faz sentido usar NLU se você quer montar uma estrutura de árvore. A NLU permite que o usuário acesse diretamente o que deseja ao escrever uma frase, o que requer uma estruturação mais complexa do ponto de vista de treinamento da máquina.

Vamos entender os dois principais modelos existentes:

## O Modelo URA
Esse modelo vem da época do atendimento automatizado via telefone. URA ou Unidade de Resposta Audível, ou IVR para “Interactive Voice Response” em inglês, foi largamente utilizado em sistemas automáticos de atendimento e roteamento de chamadas telefônicas. Toda grande empresa que possui algum atendimento por telefone faz uso desse sistema.

A URA consiste em criar uma árvore de atendimento que vai se abrindo conforme o usuário digita o número da opção desejada. Assim é possível criar uma estrutura complexa de atendimento e cobrir todas as intenções dos usuários nesse canal.

![Exemplo de estrutura de árvore com uma entrada via chamada telefônica e múltiplos nós e subníveis, chegando a intenção desejada.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/efb7h7sgzids40x3l222.png)

O sistema de URA funciona? Sim. Mas ela oferece a melhor experiência para o usuário? Não. Ou melhor, depende.

Dependendo de como você montou sua árvore, se previu algum tipo de acesso rápido baseado em algum dado ou condição do usuário que entrou em contato, isso pode variar muito.

Um exemplo: se você é uma companhia aérea e sabe que uma pessoa que entrou em contato possui um ticket em aberto próximo do checkin, por que não oferecer o menu de checkin e mudança da passagem primeiro? Quanto mais rápido ouvir a opção que precisa, melhor vai ser a experiência dessa pessoa.

Um outro ponto importante é que, muitas vezes, a empresa oferece esse tipo de atendimento em mais de um canal e fazer uma estrutura diferenciada para cada canal pode ser mais complexo e custoso.

Embora hoje existam sistemas de reconhecimento de voz mais avançados, como o Google Duplex que ainda está sendo testado, existe uma dificuldade em estruturar modelos mais próximos de um atendimento humanizado.

Pensando sobre o atendimento mais humanizado, gostaria de começar por um ponto que acho interessante: toda vez que um usuário entra em contato com seu serviço, ele tem por padrão alguma intenção. Ele deseja resolver alguma coisa, afinal de contas foi ele que começou a conversa.

O mesmo vale quando alguém te manda um “Oi, tudo bem?” no WhatsApp. 😉

Se você consegue identificar a intenção do usuário, ou mesmo antecipar qual ou quais poderiam ser as intenções mais prováveis, bingo! Você consegue melhorar a experiência em um sistema de atendimento automatizado.

E é aqui que chegamos no próximo tópico.

## Compreensão de Linguagem Natural
Essa é uma tecnologia que utiliza Machine Learning e que permite a identificação e classificação de entidades, parâmetros e sentidos de um determinado texto.

Com NLU é possível transformar um texto como “quero uma pizza vegetariana brotinho sem cebola” em uma estrutura de dados como a seguir:

```
{
intencao: “pedido”,
dados: {
sabor: “vegetariana”,
tamanho: “brotinho”,
observacao: “sem cebola””
}
}
```
![Imagem demonstrando a conversão de textos pedindo pizza e suas variações, passando pelo agente de NLU e extraído os 3 parâmetros da intenção, que são sabor, tamanho e observação.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qixbuh0zepz314l4s4h8.png)

Imagem demonstrando a conversão de textos pedindo pizza e suas variações, passando pelo agente de NLU e extraído os 3 parâmetros da intenção, que são sabor, tamanho e observação.
A complexidade aqui está em treinar esse algoritmo para compreender as mais variadas formas de chegar na mesma intenção do usuários e todos os parâmetros possíveis, sejam eles obrigatórios ou não, de cada intenção.

## Como estruturar as intenções?
Intenções ou intents são ações que os usuários podem realizar em seu chatbot. Dependendo do serviço que você oferece, as intenções poderão variar.

Uma companhia aérea, por exemplo, permite que o usuário compre uma passagem, faça o checkin, altere o assento ou cancele um ticket existente, entre outras coisas.

Você precisa identificar quais ações seus usuários poderão fazer na sua aplicação, bem como uma ação de boas-vindas e uma padrão casa o sistema não identifique qual ação o usuário solicitou. Ao definir uma ação, você pode determinar quais elementos podem ser identificados como parâmetros dessa ação, quais deles são obrigatórios ou opcionais e o tipo de dado informado naquele parâmetro, como uma data, um horário, um documento, uma cidade ou localização, etc.

Um ótimo exercício para descobrir parâmetros é escrever variações de um mesmo pedido, incluindo ou não elementos que podem se tornar parâmetros. Dependendo da obrigatoriedade de cada parâmetro, a plataforma de chatbot escolhida pode criar perguntas adicionais para complementar essas informações dentro da mesma intenção. Essas variações também serão utilizadas para “treinar” seu serviço.

A grande vantagem de utilizar o formato de intenções e a estrutura de NLU oferecida por essas plataformas é que o usuário tem acesso direto ao que precisa, se comparado com a estrutura de árvore que ele precisa seguir.

Com NLU nós trocamos a estrutura a seguir:

```
< Digite 1 se você possui uma passagem comprada
< Digite 2 se você quer adquirir uma nova passagem
> 1
< Digite 1 se você deseja realizar o checkin
< Digite 2 para alterar sua passagem
< Digite 3 para cancelar sua passagem
> 2
< Um momento, vamos transferir sua ligação para um atendente…
```

Para a seguinte estrutura:

```
< Como podemos ajudar você hoje?
> Quero mudar o horário do meu voo
< Entendi. Qual o número do seu ticket?
> 12323423
< Certo, este voo acontece no dia X às 12h15. Você gostaria de alterar a data ou apenas o horário?
> horário, quero mais tarde às 19:00
…
```

Você pode aumentar ainda mais o detalhamento da intenção, dividindo neste exemplo em duas intenções: o adiantamento de voo e a alteração de voo, sendo o primeiro filtrando horários antes da passagem atual e o segundo de uma forma mais ampla.
Se você consegue no seu serviço identificar a intenção do usuário na primeira frase, você poderá direcioná-lo para o nó específico da sua estrutura, sem passar por escolhas numéricas intermináveis, como no caso da URA.

Um outro ponto importante é que existem algumas etapas do atendimento que também não é necessário utilizar um modelo complexo. Um exemplo disso é o processo de autenticação do usuário ou feedback de um atendimento, pois ambos são estruturas simples e bem definidas e não precisam de um mecanismo mais complexo para entendimento. Nesses casos, um sistema automatizado resolve sem precisar contar com algo mais complexo como o NLU.

## Qual é a melhor opção?
Usar a estrutura de árvore não é errado no meu ponto de vista, mas é importante que você tente prever o comportamento do usuário e qual a ação mais provável que motivou o contato dele com o seu serviço. Utilizar estruturas mistas (URA + NLU) pode ser interessante também, se você deseja criar algo que demande tanto questões mais complexas quanto entradas de dados padronizados. Assim você usa o modelo mais apropriado dependendo do caso.

## Quais ferramentas utilizar?
Agora que você conhece esses dois modelos, vou apontar algumas ferramentas que podem ajudar você a construir seu chatbot.

### Atendimento automatizado/URA/IVR

[Twilio Studio](http://bit.ly/3bv9X3e): a Twilio Studio oferece uma interface para você construir uma estrutura de atendimento completa e que permite criar “webhooks” para fazer chamadas HTTP no seu servidor e executar ações de acordo com a necessidade do usuário.
Além disso, ela permite que você utilize os outros recursos da plataforma Twilio, incluindo chamadas de voz, envio de SMS e WhatsApp, funções serverless, roteamento para atendimento humano, entre outras.

![Imagem de exemplo da estrutura da ferramenta Twilio Studio.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qhm10mu2qynryzidt1o7.png)

### Compreensão de Linguagem Natural
[DialogFlow](https://dialogflow.cloud.google.com/): na minha opinião é a ferramenta que possui a melhor interface para programação de chatbot por intenção e integra com as mais variadas plataformas, incluindo os canais oferecidos pela Twilio (caso deseje receber SMS, WhatsApp ou ligação telefônica). E ela funciona em português! Se quiser entender um pouco mais sobre “intenções” no DialogFlow, confira este artigo em português de [Amanda Cavallaro](https://dev.to/chibichibibr/pt-br-dialogflow-intents-1h16), Google Developer Expert em Google Assistente.

[Twilio Autopilot](https://www.twilio.com/autopilot): é uma ótima ferramenta para integrar diretamente dentro da Twilio e responder por todos os canais que a plataforma oferece, porém não funciona em Português. Uma “solução técnica de contorno” é rodar um sistema de tradução do texto antes de invocar o NLU da Autopilot.

[IBM Watson Assistant](https://www.ibm.com/br-pt/cloud/watson-assistant): oferece suporte em Português, mas [elementos mais avançados](https://cloud.ibm.com/docs/assistant?topic=assistant-language-support) como análise de sentimento ainda estão sendo executados em Inglês.

## Conclusão
Não importa qual ferramenta você vai usar, desde que coloque a experiência do usuário em primeiro lugar. Um sistema de atendimento na estrutura de URA, se você incluir uma camada de inteligência, pode ter uma experiência tão legal quanto usar NLU.

Se você tiver alguma ideia de serviços via chatbot e quiser bater um papo para mostrar o que está construindo, me chame no lleao@twilio.com, pois estou ansioso para ver o que você vai implementar.

---

Ah, se você curtiu as ferramentas da Twilio, mas ainda não possui uma conta, utilize [este link](https://www.twilio.com/referral/4kfzMm) para ganhar mais $10 dólares e comece a experimentar a plataforma agora.