Botcamp Letsbot: criando um bot a partir de um case real

Como aluna do Botcamp da Letsbot, escrevo esse artigo com o objetivo de contar como está sendo minha experiência até agora.

Izabella Radichi
8 min readNov 6, 2021
Imagem retirada do artigo da Coinext

“Oi!”

Em meados de setembro/2021 participei da Hello Bot, uma imersão online e gratuita de 5 dias onde foram abordados diversos assuntos sobre um mercado que tem crescido exponencialmente dentro da tecnologia: os chatbots.

Após ter participado dessa “pequena” imersão, fiquei ainda mais curiosa para aprender sobre a área. Já havia tido contato durante alguns meses atrás em uma outra capacitação que participei: o Cappacitadev.

Finalizada a Hello Bot, surgiu a oportunidade do Botcamp, sim, Botcamp 🤓

Decidi me matricular e fazer parte dessa turma com o objetivo de aprofundar meus conhecimentos no assunto. Anteriormente fiz diversos cursos voltados ao UX Writing e já entrei neste botcamp sabendo que tendia a ter mais interesse pela parte que envolve o design conversacional.

Estrutura do curso

O BotCamp da Letsbot é estruturado com base em uma metodologia ágil: o SCRUM.

Imagem que representa o funcionamento do SCRUM

E o que é o SCRUM?

Conforme artigo no blog da Conta Azul:

A metodologia Scrum é um framework simples para trabalhar com projetos complexos, criada pelos desenvolvedores Ken Schwaber e Jeff Sutherland.

Ela faz parte das metodologias ágeis e é comumente utilizada por desenvolvedores de softwares e sistemas.

Trata-se de um método de trabalho realizado a partir de pequenos ciclos de atividades dentro de um projeto.

Cada ciclo de atividade é planejado previamente e se chama Sprint, composto por um período de tempo predefinido em que as tarefas devem ser realizadas pela equipe.

A metodologia Scrum permite potencializar o trabalho em equipe, acompanhar a evolução do produto, sempre com foco na qualidade da produção e nos prazos estipulados.

Além do SCRUM, o Botcamp da Letsbot utiliza o framework denominado “Bot Learning Flow”.

A estrutura é dividida em sete etapas que abordam os diversos assuntos envolvidos na criação de um bot.

As etapas são:

  • Behavior
  • Interaction
  • Architect
  • Build
  • Training
  • Curate
  • Business

A primeira etapa do botcamp é uma etapa Multi-Skill com cinco sprints e, destas, já concluímos as três primeiras:

Resumo da etapa Multi-Skill

Vamos à parte prática do Botcamp: criar um bot no IBM Watson.

A proposta

A proposta foi criar um bot no IBM Watson tendo como base um case real: a VegPet. A Vegpet comercializa produtos veganos e vegetarianos para animais, dentre outros produtos. O case é real porém o bot não será colocado em produção. Apesar disso teremos a possibilidade de realizar iterações durante o processo de aprendizado, solicitados pelo próprio CEO da empresa.

A ideia inicial era que o bot funcionasse como um apoio ao time de atendimento da Vegpet, esclarecendo as dúvidas mais frequentes das pessoas usuárias e assim “desafogando” o atendimento, evitando tanto transbordo ao atendimento humano.

Meu bot

O nome dado ao meu bot foi: Vegginho, o estagiário robô da Vegpet 🤖

Quis usar esse nome para fazer um paralelo entre os tipos de produtos vendidos pela loja (vegetarianos e veganos) e o diminutivo para aproximar a pessoa usuária do “personagem”.

A ferramenta

Para a criação do bot utilizamos o IBM Watson Assistant, estrutura bem robusta da IBM. Eu nunca havia tido contato com a plataforma e no início senti um certo estranhamento pela estruturação dos diálogos. No outro curso sobre IAs que fiz usamos uma plataforma onde a criação dos diálogos era feita a partir de fluxos, diferente do IBM Watson. Apesar disso, segui firme no propósito de aprender sobre o “Watsão”.

Para a criação de um bot dentro do IBM Watson, é preciso, primeiro, criar as intenções.

Intenções

Intenções se referem ao que a pessoa usuária busca ao entrar em contato com o bot, ou seja, qual é a sua intenção ao fazer determinado questionamento. Ao criar a intenção, é preciso ter atenção ao nome dado pois isso vai facilitar o trabalho durante o processo de curadoria. Escolher um nome que faça sentido dentro do cenário daquela intenção é fundamental. O símbolo que representa as intenções é o #.

Junto ao nome da intenção é preciso ensinar ao Watson algumas frases ou termos (cuidado com os termos isolados!) que correspondam ao que a pessoa usuária dirá quando tiver a intenção de falar sobre aquele assunto. A sugestão da plataforma é incluir pelo menos cinco exemplos para representar as frases de treinamento.

No print abaixo mostro um exemplo onde criei uma intenção chamada #informar_sobre_preco:

O ideal é usar sempre um verbo no nome da intenção e ignorar acentos e cedilha.

As frases de treinamento que usei nessa intenção foram as abaixo:

  • preço da ração
  • preço da ração vegana
  • Preços
  • qual é o preco
  • qual é o preço das rações
  • qual é o valor
  • quanto custa
  • saber preco

Ou seja, sempre que uma pessoa entrar em contato com o Vegginho e perguntar, por exemplo, “qual é o preço das rações?”, ele entenderá que a intenção da pessoa é saber sobre os preços.

Para exemplificar a criação do diálogo de um desses assuntos, mostro abaixo a resposta que será dada pelo Vegginho ao entender a intenção da pessoa em falar sobre o preço:

Na prática, funcionaria assim:

Ótimo, intenção criada agora é a hora de criar um nó de diálogo.

Os diálogos são a forma como o bot vai interagir com as pessoas a partir do reconhecimento dessa intenção e precisam ter no mínimo uma condição e uma resposta.

Como default, o IBM Watson já possui duas intenções e dois nós de diálogo que precisam ser mantidos no início e no fim da estrutura conversacional, respectivamente: o welcome e o anything_else.

Dentro do meu welcome, quis criar uma resposta bem divertida para trazer a pessoa pra mais próximo da marca e ter um interesse maior em prosseguir com o atendimento. Meu welcome ficou assim:

Primeira interação do Vegginho

Decidi disponibilizar os assuntos que podem ser tratados pelo Vegginho a fim de auxiliar as pessoas e, também, alinhar expectativas sobre o que pode ser tratado por esse canal de atendimento.

As respostas podem ter variações que farão com que o bot responda determinadas pergunta de formas diferentes. No meu bot eu tentei usar essa opção sempre que possível, para evitar que as respostas fiquem muito robotizadas e repetitivas.

Outro ponto importante dentro da criação do bot são as entidades.

Entidades

Entidades são elementos de texto passíveis de extração e também associação de sinônimos para que o bot entenda que diversos termos podem se referir ao mesmo assunto. A inclusão dos sinônimos também evita que algum erro de digitação influencie no entedimento, alô alô acessibilidade. As intenções são representadas pelo símbolo de “@”.

Para exemplificar, mostro a minha entidade @racao. No bot falamos sobre duas rações: Bicho Green e Fridog, que serão os valores. Na coluna ao lado constam todos os sinônimos que incluí para cada valor.

Entidade @racao com valores Bicho Green e Fridog

Como dito anteriormente, podemos evitar que erros de digitação causem a quebra do bot, portanto, neste caso, eu optei por incluir diversas palavras com erros em relação ao nome original do produto.

O Vegginho já tem:

✔️24 intenções

✔️05 entidades

✔️74 nós de diálogo

Outra funcionalidade importante é o slot.

Slot

O slot é uma gavetinha que guarda as informações repassadas pelo usuário durante a conversa. Para utilizar essa funcionalidade, é preciso que ele esteja associado a uma intenção + entidade. A solicitação feita pela pessoa usuária é salva e, faltando alguma informação indispensável, o IBM Watson as solicita para que o bot entenda e interaja da forma correta.

Por exemplo, se a pessoa diz para o Vegginho: “me fale sobre a ração”, ela não informa qual é a ração que precisa e nós temos dois tipos. Nesse caso, o slot guarda a informação já repassada pela pessoa (me fale sobre a ração) e em seguida faz o questionamento sobre qual ração ela deseja. Nesse caso eu incluí as opções como botão para que o bot fique mais interativo e evite que a pessoa precise ficar digitando.

Na prática funciona assim:

A partir dessa escolha, o bot segue o fluxo normal.

Rastreamento da entrega

Além disso tudo (muuuuuita coisa!!!), aprendemos também sobre o funcionamento da integração com serviços externos via API. Nesse momento foi solicitado que incluíssemos no bot o rastreamento de encomendas nos Correios e, para isso, usamos a API pública da Link & Track.

Para que o sistema reconhecesse o código de rastreamento informado pela pessoa usuária foi preciso criar uma entidade contendo, ao invés de sinônimos, uma expressão regular. Para isso, utilizamos o site regex101.com.

Caso alguém não saiba, os códigos de rastreamento dos correios seguem esse padrão:

AB012345678BC

Sendo assim, a expressão regular para reconhecimento do código de rastreio ficou assim:

^[a-zA-Z]{2}[0–9]{9}[a-zA-Z]{2}

Onde:

Explicação da expressão regular

Junto a inclusão da consulta do rastreamento da encomenda, incluímos também a possibilidade de receber retornos do webhook nos diálogos que tratam desse assunto. Com isso, o bot consegue receber a informação do código de rastreio informado pela pessoa usuária, consultar na API do Link & Track e trazer o retorno do webhook, que mostra o andamento da entrega de sua encomenda.

Na prática funciona assim:

Funcionamento do rastreio

API Whatsapp Business

Por último, na sprint 3, vimos sobre as estratégias de utilização da API do Whatsapp Business e entendemos que a autorização para consumir a API diretamente é muito difícil de conseguir.

Como não temos essa autorização, utilizaremos um provedor parceiro do Whatsapp para implantar a solução. Esse provedor parceiro é chamado de broker.

A próxima sprint promete! Vamos ver na prática como funciona essa integração com o Whatsapp! Já ansiosa por aqui :)

Durante todo o curso temos mentorias via Zoom e também damos feedbacks aos colegas. É uma prática comum compartilhar nosso próprio bot e propor o famoso “quebre meu bot!”.

A partir disso, realizamos a curadoria e consequente melhora de todo o fluxo.

Pretendo escrever novos artigos a medida que o curso for evoluindo e o Vegginho se tornar o robô sênior da Vegpet :)

Se tiver curiosidade de interagir com o Vegginho, clica neste link e bate um papo com ele: Watson Assistant Preview

Se você chegou até aqui, fico muito agradecida!

Tem algum feedback ou encontrou algum comportamento não esperado no bot? Me chama no Linkedin para trocarmos figurinhas.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Izabella Radichi
Izabella Radichi

Written by Izabella Radichi

34 anos, moradora de Belo Horizonte, UX Writer de chatbots e apaixonada por consistência e padrões na escrita.

No responses yet

Write a response