A Tech Stack de um Chatbot

Organizando as tecnologias das Interfaces Conversacionais

Michael Barney Jr
Bots Brasil
10 min readApr 16, 2020

--

Ao criar uma Interface Conversacional, você vai se deparar com um mar de tecnologias, plataformas, frameworks e empresas que prometem ser a ferramenta ideal para criar um Chatbot. Assim, fica muito difícil entender a diferença entre as tecnologias, quais são as melhores e onde elas se encaixam no processo de criação de um Chatbot.

De cara, quero apontar que esse artigo é destinado para Chatbots altamente customizados e profissionais. Não irei falar aqui de soluções que permitem a criação de Interfaces Conversacionais arrastando bloquinhos e preenchendo textos, sem programação. Eles permitem que pessoas que não sejam da área de tecnologia criem interfaces extremamente limitadas para soluções rápidas e simples, não sendo o caso desse texto.

Sem mais delongas, vamos entender quais são os divisões tecnológicas que compõem um Chatbot:

Os Módulos de um Chatbot

Nessa figura, conseguimos ver as etapas tecnológicas que compõem um Chatbot. Alguns frameworks definem nomes diferentes para cada módulo, mas a ideia geral é sempre mantida.

Estes módulos podem ser conectados de diversas maneiras, dependendo de quais tecnologias serão usadas. É comum a utilização de um orquestrador próprio para preencher as lacunas e fazer a conexão entre estas etapas, mas muitas vezes podemos encontrar soluções do mercado que já entregam de forma nativa esta implementação, para você nem precisar se preocupar com isso.

Plataforma de Conversação

Tudo começa com o usuário enviando uma mensagem para o bot através de uma Plataforma de Conversação, por exemplo o WhatsApp.

Em seguida, a plataforma empacota a mensagem que o usuário digitou e envia ela para o servidor do nosso Chatbot.

Usuário: "Como está o tempo em Recife?"

Plataforma📦 Pacote 📦

Conector

O primeiro módulo a receber essa informação é o Conector, responsável por traduzir o pacote enviado pelo WhatsApp para dados que podem ser usados posteriormente. Todo conector é específico para a Plataforma de Conversação e Framework de Diálogo escolhido.

Plataforma → 📦 Pacote 📦

Conectorusuário: "Michael Barney" | mensagem: "Como está o tempo em Recife?"

NLP

A partir dos dados que o Conector oferece, a mensagem do usuário passa por um módulo de Processamento de Linguagem Natural (NLP) para detecção de contextos, sentidos, perguntas, objetivos e parâmetros que estão inseridos na fala do usuário. Modernamente, se realiza esse processamento através de Inteligências Artificiais capazes de extrair essas informações de forma muito eficaz.

Conector → mensagem: “Como está o tempo em Recife?”

NLP → propósito: "Previsão do Tempo" | cidade: "Recife"

A partir disso, a mensagem está pronta e repleta de informações para serem analisadas, podendo agora o Chatbot realizar ações de acordo com o que o usuário disse.

Diálogo

Assim, todas as informações passam pelo módulo de Diálogo, responsável por definir em qual ponto da conversa o usuário está, quais ações devem ser tomadas e qual deve ser a próxima mensagem a ser enviada pelo bot.

NLP → propósito: “Previsão do Tempo”, cidade: “Recife”

Diálogoações: previsão(recife), salvarCidade(recife) | mensagem: “Olá! A previsão do tempo para Recife é previsão(recife)

Ações

As Ações requisitadas pelo módulo de Diálogo são responsáveis por coletar informações ou realizar tarefas de acordo com o seu propósito, podendo estar conectadas aBancos de Dados, APIs, Ferramentas de Analytics ou qualquer outro recurso necessário. Essas ações podem retornar mensagens processadas para o módulo de diálogo ou podem somente realizar tarefas.

previsão(recife) → API de Previsão do Tempo → "uma temperatura de 30 °C com chuva leve"

salvarCidade(recife) → Salva no Banco de Dados que o usuário mora em Recife

Em seguida, é feito o caminho da volta. As Ações retornam valores para o Diálogo, que retorna a mensagem para o Conector, que encapsula a mensagem em um pacote e envia de volta para a Plataforma de Mensagem, finalmente, a plataforma envia a mensagem para o usuário.

Ações → previsão(recife) = “uma temperatura de 30 °C com chuva leve”

Diálogo → “Olá! A previsão do tempo para Recife é uma temperatura de 30 °C com chuva leve”

Conector📦 Pacote 📦

Plataforma de Mensagem → “Olá! A previsão do tempo para Recife é uma temperatura de 30 °C com chuva leve”

Definindo a sua Stack (2020)

Agora que você já sabe para que serve cada módulo e como eles se conectam, está na hora de definir quais vão ser as tecnologias usadas em cada parte.

Mas antes de começar, é importante entender que muitas tecnologias para o desenvolvimento de Chatbots incluem mais de um dos módulos citados acima dentro de suas soluções. Dependendo da plataforma, talvez não seja possível utilizar suas funções de maneira modular, sem poder conectar uma tecnologia com qualquer outra.

1- Plataforma de Conversação

Com certeza a decisão mais importante do seu projeto. Para escolher a plataforma, tente responder as perguntas:

  • Qual o tipo de usuário que usará o Chatbot?
  • Quais canais de comunicação esses usuários já usam?
  • O meio de comunicação do Chatbot deve ser por voz ou por texto?
  • Qual será o principal aparelho usado para conversar com o bot? (Smartphone, Notebook, Smart Speakers, Fones de Ouvido…)

A partir disso, você já pode escolher a plataforma. Praticamente todos os apps de chat por texto hoje em dia já tem suporte para Chatbots, alguns exemplos são:

  • Facebook Messenger — Muito bom para chat em Smartphones, possui um suporte para Chatbots muito robusto e tem uma quantidade grande de usuários.
  • WhatsApp — Ela é a plataforma de Chat mais usada no Brasil, portanto possui um alcance muito grande de usuários. Porém, o uso da sua API ainda é restrito, sendo necessário usar plataformas de terceiros como a Twilio para fazer a sua comunicação, havendo um custo adicional.
  • Telegram — Ele é uma das maiores comunidades e plataformas para Chatbots, possuindo diversos recursos, mas ainda possui uma quantidade restrita de usuários que o utilizam.
  • Slack — Excelente para soluções em que startups, empresas ou developers são o público alvo.
  • Discord — O canal perfeito para bots feito para Gamers
  • SMS — Bom para soluções que querem alcançar o máximo de pessoas. Necessita de uma plataforma como a TotalVoice para enviar e receber as mensagens, havendo um custo adicional.
  • WebSite — Você também pode inserir o Chatbot dentro de um website. Uma notícia boa é que fazendo ele para o Facebook Messenger, já é gerado automaticamente o HTML para ser inserido no site.

Além dos apps de Chat, você pode também decidir desenvolver para Assistentes Pessoais, sendo os principais:

  • Google Assistant (Google) — Disponível em praticamente todo aparelho com sistema operacional Android, em dispositivos iOS através do aplicativo e em aparelhos inteligentes como o Google Home.
  • Alexa (Amazon)— Usada principalmente através dos seus aparelhos inteligentes ECHO mas também disponível através de aplicativos e outros dispositivos.
  • Cortana (Microsoft) — Disponível em praticamente todo aparelho com sistema operacional Windows.
  • Bixby (Samsung) — Disponível em aparelhos mais recentes da Samsung.
  • Siri (Apple) — Disponível em todo aparelho da Apple, porém possui diversas limitações para desenvolvedores.

2- Diálogo

O próximo passo será definir qual tecnologia você deseja usar para criar os seus diálogos.

Essas plataformas podem variar muito em relação à sua complexidade, podendo ser desde uma interface Low-Code até um Framework avançado para linguagens de programação.

Alguns fatores a levar em conta são:

  • Pessoas que não são da área de tecnologia vão ter que modificar o conteúdo do bot em tempo real?
  • O bot tem conversas complexas, necessitando apoio visual como fluxogramas para desenvolvê-lo?

Sabendo disso, essas são algumas opções:

  • Dialogflow — Ela é a plataforma da Google para desenvolvimento de Chatbots, sendo a interface principal para criação de diálogos para o Google Assistant. Sua construção de conversas é através de uma Interface Visual baseada em Intents, sem um visual de fluxograma. Ela possui de maneira integrada os módulos de NLP e de Diálogo, podendo opcionalmente fazer o papel de Conector com diversas plataformas.
  • Microsoft Bot Framework — Uma framework para desenvolvimento de Chatbots criada pela Microsoft. De longe a Framework mais sofisticada e poderosa, sendo extremamente customizável. Sua construção de diálogos é feita completamente através de código (C#, Node.js, .Net). Ela tem fácil integração com o módulo de NLP LUIS, também da Microsoft, e suporte a diversos Conectores desenvolvidos pela Microsoft e comunidade.
  • BotKit — Uma extensão do Microsoft Bot Framework feita pela Howdy. Ela traz uma forma mais direta e prática do seu uso, mas continua sendo poderoso e customizável com os seus diálogos feitos completamente através da programação em Node.js. Permite rápida integração com diversos módulos de NLP e tem suporte a diversos Conectores desenvolvidos pela comunidade.
  • Watson Assistant — Solução da IBM para desenvolvimento de diálogos de chatbots. Sua construção de diálogos é completamente visual possuindo uma interface similar ao Fluxograma. Ela tem conexão direta com o módulo de NLP IBM Watson e tem o suporte a diversos Conectores.
  • BotPress — Uma framework modular para Node.js . Ela é altamente customizável e poderosa, sua construção de diálogos pode ser feita de maneira visual através de fluxogramas ou através da programação em Javascript. Ela tem um framework de NLP integrado, mas também permite a conexão com diversas outras. Também possui uma grande lista conectores criados pela comunidade para diversas plataformas.
  • Alexa Skill Builder — Plataforma da Amazon específica para desenvolvimento de skills para a Alexa. Ela tem de maneira integrada todos os módulos do chatbot, funcionando exclusivamente para a plataforma da Alexa.

3- NLP

Depois de definir a sua framework para controlar a lógica do diálogo, está na hora de escolher uma plataforma para realizar o Processamento de Linguagem Natural do seu bot.

Um bot sem NLP vai conseguir responder somente as respostas que foi programado para responder, como "sim" e "não" e mais nada além disso.

Os avanços na tecnologia de Inteligência Artificial permitem que possamos criar Chatbots que vão além desse sistema "Baseado em Regras" e se tornem realmente uma experiência conversacional.

Para escolher a plataforma de NLP, você deve levar em consideração o suporte que o módulo de Diálogo escolhido suporta. Na lista que citei acima, essas plataformas tem módulo de NLP imutável:

  • Dialogflow → Dialogflow
  • Watson Assistant → Watson AI
  • Alexa Skill Builder → Alexa

Porém, escolhendo qualquer outra das plataformas listadas, você tem a opção de escolher qualquer plataforma de NLP, incluindo:

  • Dialogflow — O módulo de NLP do Dialogflow pode ser usado de maneira modular, sendo conectado com o módulo de diálogo escolhido. Possui SDKs para Node.js, PHP, Go, Java, Ruby, Python e C#.
  • Wit.ai — Plataforma do Facebook para NLP . Possui SDKs para Node.js, Python e Ruby.
  • RASA Stack — Um framework Python para linguagem natural que é OpenSource e feito para ser utilizado facilmente com seu módulo de diálogo.
  • LUIS — O framework da Microsoft para NLP, ele é facilmente integrado com o Microsoft Bot Framework e consequentemente com o BotKit, mas pode também ser integrado com outras soluções.
  • Watson — Framework da IBM treinado com um bilhão de palavras da Wikipedia, têm conexão integrada com o Watson Assistant mas também pode ser conectado com outros módulos de diálogo.

4- Ações e Hospedagem

As ações funcionam como serviços de backend iguais aos de qualquer outro projeto, sendo responsáveis por receber e enviar requisições.

Além disso, você deve levar em consideração quais módulos escolhidos previamente também vão necessitar de um servidor para hospedagem. Por exemplo, o Dialogflow já é automaticamente hospedado em um projeto da Google, não necessitando que você se preocupe com isso. Já o BotKit necessita que seja hospedado em um servidor para que funcione.

Assim, o ideal é que todos os seus módulos tenham linguagem de programação e ambientes de hospedagem o mais próximos possíveis.

Soluções que você pode pesquisar mais sobre para fazer a hospedagem das ações são:

  • Firebase Cloud Functions — Ele é a solução da Google para programação com Javascript ou Typescript. Por ter uma arquitetura serverless, ele reserva um tempo de máquina para seu Chatbot apenas quando uma função for chamada, sendo o ideal somente para hospedar Ações. Essa solução tem uma conexão extremamente direta com o Dialogflow, funcionando muito bem juntos.
  • Heroku — Uma plataforma extremamente simples para hospedar tanto suas ações quanto os módulos de Diálogo e de NLP, caso seja necessário.
  • Google App Engine — Outra solução da Google com funcionamento similar ao Firebase. Porém ela possui uma estrutura mais configurável, permitindo que funcione bem tanto para as suas ações quanto para alguns módulos de diálogo.
  • EC2— Uma solução bastante comum com da Amazon Web Services (AWS). Ela permite que você alugue um computador virtual para hospedar suas ações ou qualquer outro módulo necessário.
  • Azure — Plataforma da Microsoft diretamente ligada com o Microsoft Bot Framework. Ela conta com uma opção específica para hospedagem de Chatbots.

5- Banco de Dados

Quanto à escolha de onde você deseja armazenar os dados coletados pelo seu Chatbot, continua sendo importante escolher a tecnologia mais próxima tecnologicamente dos outros módulos escolhidos.

Por exemplo, se você escolheu o módulo de diálogo do BotPress, o banco de dados recomendado é o PostgresSQL.

Se você decidiu hospedar suas ações no App Engine ou no Cloud Functions, provavelmente a melhor solução para Banco de Dados vai ser o Datastore ou o Firestore, também da Google.

Caso não esteja aparente uma dessas relações, você pode escolher utilizar soluções como o MongoDB ou até o AirTable

6- Analytics

Finalmente, para acompanhar as métricas e informações dos seus Chatbots, existem diversas opções.

Primeiro, é muito provável que o seu módulo de diálogo escolhido já possua um sistema de Analytics incorporado, como é o caso do BotPress e do Dialogflow.

Caso não tenha, ou você queira complementar as informações, existem soluções feitas diretamente para Chatbots, como o DashBot e Chatbase.

Porém, soluções generalizadas de analytics normalmente encaixam perfeitamente também para as Interfaces Conversacionais, como é o caso do Google Analytics e do Amplitude.

Exemplos de Stacks

Sabendo agora dos diferentes módulos que compõem um Chatbot e as tecnologias possíveis para cada um deles, estes são alguns exemplos de Tech Stacks que funcionam muito bem:

Stack Google

  • Diálogo e NLP: Dialogflow
  • Ações: Firebase Cloud Functions
  • Banco de Dados: Firestore
  • Analytics: Dialogflow + Firebase
  • Plataformas de Conversação → Integrações diretas Pelo Dialogflow: Google Assistant, Messenger, Telegram, Slack e Twitter.

Stack Microsoft

  • Diálogo: BotKit
  • NLP: LUIS
  • Ações: BotKit + Azure
  • Banco de Dados: MongoDB (mais fácil) ou bancos relacionais como MySQL e Postgres
  • Analytics: Azure Bot Service
  • Plataformas de Conversação: Cortana, Skype, Microsoft Team, Slack, Messenger, Twilio SMS (Whatsapp e SMS) e Websites

Stack BotPress

  • Diálogo: Botpress
  • NLP: Botpress
  • Ações: Botpress + Heroku
  • Banco de Dados: PostgreSQL
  • Analytics: Botpress
  • Plataformas de Conversação: Facebook Messenger, Slack, Microsoft Teams, Skype, Websites e Telegram.

Conclusão

Pronto! Agora você já é capaz de decidir qual é a melhor Stack de Desenvolvimento que seja perfeita para o seu Chatbot e/ou Cliente. Mas aí eu quero saber, qual é a Stack que você já usa ou pretende usar depois de ler esse texto? Acha que tem alguma tecnologia faltando? Deixe nos comentários a sua opinião para a gente conversar ainda mais sobre esse tema!

--

--

Michael Barney Jr
Bots Brasil

Desenvolvedor apaixonado por Produtos Digitais e Plataformas Conversacionais 🤖