# ChatBots e Intellibots <center>![ChatBots e Intellibots](https://cldup.com/4KNATsUz_B.jpg)</center> ##JACKSON FERREIRA DE ANDRADE MAFRA Desenvolvedor há 15 anos com background em projetos de e-commerce e real estate, desde 2009 com interesses focados para o desenvolvimento de interfaces móveis e aplicações MEAP. Me chama lá... [http://about.me/jacksonfdam](http://about.me/jacksonfdam) [https://bitbucket.org/jacksonfdam](https://bitbucket.org/jacksonfdam) [https://github.com/jacksonfdam](https://github.com/jacksonfdam) [http://linkedin.com/in/jacksonfdam](http://linkedin.com/in/jacksonfdam) [@jacksonfdam](http://www.twitter.com/jacksonfdam) ##Prefácio O curso de Intellibots e chat bots é 100% prático. Neste guia você encontra as informações básicas sobre as plataformas e fundamentos. Todos os laboratórios serão disponibilizados no github, para download. ##O que é um chatbot? Por que criar um? O que eles fazem? Qual o contexto que eles existem? Definitivamente 2016 é um ano marcante para os Chatbots. Foi o ano em que grandes empresas (como Facebook, Microsoft, Google e até mesmo a Apple) decidiram abrir as suas plataformas para que milhares de desenvolvedores / designers / startups / empresas criassem chatbots. O primeiro chatbot, ELIZA, foi desenvolvido há 50 anos no Instituto de Tecnologia de Massachusetts (MIT). Ele simulou uma psicoterapeuta Rogerian, alguém que apenas repete as palavras do usuário humano de volta para o ser humano; não é muito bom. Nas décadas seguintes, chatbots eram, em sua maioria, de interesse acadêmico. Mas, nos últimos anos, chatbots baseados em smartphones ganharam grande interesse por parte da indústria com produtos de alto perfil, como Siri da Apple, Amazon Eco e WeChat da China. As maiores plataformas de mensagens, como Facebook Messenger e Skype, anunciaram programas de desenvolvimento para suportar aplicativos chatbot. Ao mesmo tempo, plataformas de mensagens menores, como Slack e Telegram, lançaram “lojas de bot” e fundos de investimento para atrair desenvolvedores. O Google está apostando diretamente em um aplicativo chatbot (Allo) desenvolvido por sua inteligência artificial e Big Data. Para os desenvolvedores, agora é o melhor momento de surfar a grande onda da “próxima grande coisa” em tecnologia. A ascensão dos chatbots é o resultado direto da mudança de comportamento do usuário no mundo móvel pós-app e do amadurecimento das tecnologias facilitadoras essenciais. <center>![chatbots](https://cldup.com/vMxrkfpdfs-3000x3000.jpeg)</center> ##Bots vs. chatbots Mas antes de seguirmos, é importante destacar uma diferença que parece pequena, mas que é crucial para esse assunto: bots e chatbots não são a mesma coisa. A principal diferença entre eles é o formato de funcionamento. Um bot é um robô que pode ter um ou vários scripts (roteiros de comandos) por trás dele. Esses scripts podem realizar cálculos, analisar informações ou o que você quiser que ele faça. Um bot não precisa ser capaz de fazer inferências, ele pode somente executar scripts que juntos vão servir para alguma coisa. Por exemplo, um bot que faça login no site do banco e pague os salários. Já o chatbot parte do pressuposto de que esse robô poderia se passar por um ser humano, tendo uma conversa minimamente razoável e se tornando difícil de distinguir de uma pessoa de verdade. Em um chatbot, é necessário ter uma inteligência artificial por trás, o que faz os scripts serem mais elaborados. Com as técnicas de inteligência artificial, o chatbot pode fazer inferências dos assuntos que você mais pergunta ou fala, para fazer passos mais específicos e acertar mais nas respostas. Colocar um bot em um chat definitivamente não faz dele um “chatbot”, ainda que o termo esteja sendo usado para designar scripts automatizados em janelas de chat. No entanto, um fato é que bots nem sempre precisam parecer humanos para serem bons robôs. Às vezes, tudo que a gente precisa é que eles façam o que robôs fazem de melhor: sejam eficientes. ### Falando com robôs Todo mundo já deve ter cruzado com um atendimento robótico que deu nos nervos. Vai desde o chat com aquele banco que pede pra você “falar o que está precisando”, mas jamais entende o que você quer dizer, até um certo robô que faz “tec, tec, tec” pra fingir que está buscando seu cadastro através do número do CPF informado (mesmo você sabendo que vai precisar dizer o CPF pra atendente humana depois). Mas a inclusão dos robôs é crucial para tornar o atendimento em massa mais rápido. Incluir alguma forma de automatização, seja com botões para escolher opções ou através de inteligência artificial, ajuda a fazer uma triagem do atendimento, direcionando os clientes e consumidores para atendimentos mais especializados. <center>![Poncho](https://cldup.com/IsOzgBwIKX.gif)</center> Só que falar com máquinas não é uma das nossas coisas favoritas, né? Por isso, quem faz os “roteiros” desses atendimentos têm feito um esforço de transformar a fala do robô de atendimento em algo mais amigável e gentil. Após quase uma década de crescimento explosivo, aplicativos móveis pararam amplamente de crescer. E como o Wall Street Journal diz em “What Comes After Apps“, usuários de smartphones chegaram ao seu limite da quantidade de aplicativos que querem instalar e abrir diariamente. Usuários estão passando cada vez mais tempo em poucos apps. E os grandes vencedores nesse sentido são aplicativos sociais e de mensagens. Eles não gostam de sair de seu app de mensagem apenas para pegar fragmentos de informações (por exemplo, checar o clima, preços de ações ou procurar por um restaurante ou um mapa). Usuários mais novos cresceram com computadores e são muito mais experientes nesse sentido do que os usuários mais velhos. Como resultado, os usuários mais jovens estão mais confortáveis com mensagens de texto e na comunicação com computadores usando comandos, que têm sido favorecidos por usuários avançados sobre GUIs mais lentas. Os consumidores, especialmente os ricos, estão terceirizando suas “tarefas”, como dirigir, fazer compras, limpeza, entrega de refeições e outras atividades, dando origem à “economia show” e à necessidade de mais serviço ao cliente. A inteligência artificial (IA) ficou muito melhor nos últimos anos em entender o que o usuário quer em linguagem natural. A economia de API amadureceu ao ponto de que muitos serviços úteis podem ser acessados a partir de computadores para executar tarefas do mundo real. Em suma, chatbots são usados nos ambientes preferidos dos usuários humanos (aplicativos de mensagens), conversam com usuários em linguagem natural, entendem o que os usuários querem, e realizam comandos humanos através de uma grande rede de serviços relacionados. ##Plataformas de bot Agora, vamos dar uma olhada em algumas plataformas de mensagem nas quais você pode construir bots. O **[Facebook Messenger](#facebookmessenger)** é uma das plataformas de mensagens mais populares, com mais de 1 bilhão de usuários ativos mensais. Após alguns meses de o Facebook ter aberto sua plataforma de bot para os desenvolvedores, mais de 23.000 desenvolvedores estavam construindo bots. Até agora, eles lançaram mais de 18.000 bots. Bots do Facebook Messenger estão amplamente associados às páginas do Facebook, o que é bastante onipresente entre as empresas. O **Kik Messenger** é um popular aplicativo de mensagens com mais de 200 milhões de usuários ativos mensais. Uma característica fundamental do Kik é seu anonimato, o que também é controverso, dado o grande número de adolescentes na plataforma. O Kik lançou uma bot store para promover bots em sua plataforma, em abril de 2016. O **[Telegram](#telegram)** é um relativamente novo aplicativo de mensagens. Ele foi lançado em 2013 e agora tem 100 milhões de usuários ativos mensais. Um diferencial importante do Telegram são seus recursos avançados de segurança e criptografia. O serviço tem suporte para bots desde junho de 2015. De forma semelhante ao Facebook Messenger, seus bots exibem elementos ricos de interface de usuários, como botões e cartões formatados. O **[Skype](#skypebots)** é uma plataforma de mensagens com mais de 300 milhões de usuários ativos mensais. Além de mensagens de texto, o foco tradicional do serviço é em chamadas de vídeo e por voz. O **Twitter** é uma plataforma pública de mensagens com cerca de 300 milhões de usuários ativos mensais. Bots sempre foram uma parte do Twitter como usuários “não-humanos”. Ao usar a API do Twitter, um bot pode seguir pessoas e enviar tweets. **WeChat** é a plataforma mobile de mensagens dominante na China e tem mais de 700 milhões de usuários ativos mensais. Ela é pioneira em chatbots, com uma plataforma de bots muito bem sucedia. Na China, as empresas muitas vezes têm um bot WeChat muito antes de criarem um site. **SMS** e **e-mail** são plataformas de mensagens tradicionais com o maior alcance de usuários. Dito isso, o número de mensagens enviadas usando aplicativos móveis, tais como Facebook Messenger, ultrapassou em muito o SMS nos últimos anos. Você pode usar APIs de telecomunicações, como Twilio, para construir bots SMS, e bots de e-mail podem ser construídos nos protocolos de e-mail abertos da Internet ou usando fornecedores de API especiais, como lonelybots. A plataforma de e-mail já tem chatbots úteis, por exemplo, o assistente inteligente de agendamento x.ai bot. O **Slack** é uma plataforma de mensagens de grupo voltada para equipes de trabalho. Em fevereiro de 2016, registrou 2,3 milhões de usuários ativos mensais, e está crescendo rapidamente. O Slack é um dos pioneiros na atual onda de renascimento dos chatbots. O serviço fornece uma das primeiras bot stores na indústria para que as equipes possam descobrir e instalar bots facilmente. Como esperado, a maioria dos bots do Slack está relacionada a trabalho e produtividade. Além dos aplicativos móveis de mensagens, existem muitos prestadores de serviços de mensagens. Aplicativos móveis integram seus serviços para fornecer recursos de mensagens in-app que os usuários podem utilizar para se comunicarem com outros. Como esses serviços de mensagens são orientados a API, é possível desenvolver bots para interagir diretamente com essas APIs e conversar com usuários do aplicativo. Exemplos de tais bibliotecas de mensagens in-app e SDKs incluem EaseMob, Camada, Tiger Connect e outros. ## Frameworks de bots Como um desenvolvedor de chatbot, pode ser esmagador desenvolver e direcionar tantos SDKs de mensagens ao mesmo tempo. Frameworks de bots são frameworks de software que abstraem muito do trabalho manual que está envolvido na construção de chatbots. Muitas dessas ofertas estão no mercado. No entanto, embora muitos frameworks de bots sigam a máxima “escreva uma vez, e faça deploy em qualquer lugar”, você está mais propenso a criar um chatbot separado para cada uma de suas plataformas de mensagens. Isso ocorre porque soluções do tipo “one-size-fits-all” devem estar em conformidade com o menor denominador comum de todas as plataformas de bots que eles suportam. Isso muitas vezes cria uma experiência de usuário menos ideal, especialmente nos primeiros dias do ecossistema, quando as próprias plataformas de bot nativas estão evoluindo rápida e constantemente, adicionando novos recursos. Além disso, as soluções de framework não são ótimas para iniciantes aprenderem sobre o desenvolvimento de chatbots. Elas tentar automatizar muito e obscurecem o mecanismo subjacente para iniciantes. Esses obrigam você a usar as características de interface do usuário que eles suportam, mas sua inovação está pelo menos um passo atrás das plataformas de mensagens nativas. Finalmente, frameworks existentes são baseados principalmente em node.js, enquanto uma grande maioria dos desenvolvedores do lado do servidor está em ambientes de programação mais maduros, como Java e PHP. Para uma aprendizagem eficaz, proponho uma abordagem de “framework open source leve”. Ele estabelece uma convenção de programação simples, baseada em solicitação e resposta para todos os bots. O objetivo é ter código “similar” para cada plataforma de bot, não código idêntico para ser executado em todos os lugares. Dessa forma, você tem a flexibilidade para adicionar recursos específicos para cada plataforma de bot, enquanto o framework ainda abstrai o código clichê comum, tais como segurança, registro, análise, armazenamento em cache e integração com API. Você pode baixar e aprender sobre meu próprio framework leve, tanto em Java quanto em PHP, no GitHub. ##NLP (Neuro Linguistic Programming) Ou Processamento de Linguagem Natural A ***NLP*** é uma das muitas subáreas da IA (Inteligência Artificial) e também da linguística que estuda os problemas da interpretação gramatical e semântica da linguagem natural. NLP nada mais é do que um sistema de IHM (Interface Homem máquina) só que, ao contrário dos sistemas convencionais, essa técnica visa tornar muito mais prática essa interação, através de comandos escritos ou de voz, usando NLP seria possível interagir com o computador. Esse tipo de sistema também visa, principalmente, viabilizar o uso dos recursos do computador por pessoas que possuem algum tipo de deficiência que não pode interagir com a máquina pelos meios convencionais. Entre as muitas aplicações para as quais esse campo de estudo pode contribuir, algumas são citadas a seguir: **Recuperação de Informação:** Muito utilizado em pesquisas, permite que um determinado assunto seja encontrado em um contexto, esse contexto pode ser pequeno, como um documento, mas também, pode ser grande como a World Wild Web. **Extração de Informação:** Visa extrair informações de documentos de texto, um sistema famoso que utiliza essa técnica em conjunto com a anterior é o IBM Watson, esse programa de computador conta com um super Hardware que permite que ele analise milhões de documentos em poucos segundos, utilizando técnicas de PLN. **Tradução Automática:** Cada língua apresenta uma peculiaridade com relação a forma como as sentença são constituídas, para realizar uma tradução bem sucedida é necessário que o algoritmo conheça todas as características de ambas línguas, para que desta forma possa realizar uma análise gramatical, traduzir as palavras e montar as sentenças traduzidas de forma coerente. Um exemplo que podemos dar é o próprio nome da técnica do português para o inglês, sendo em inglês “Natural Language Processing” e em português, “Processamento de Linguagem Natural”, reparem que em inglês o sujeito vem antes do verbo e em português, o sujeito vai depois, sendo que podem existir exceções, essa é uma das muitas características que devem ser levadas em consideração para que possamos realizar uma tradução bem sucedida. **Geração de linguagem natural:** pois bem, a partir do momento que extraímos uma determinada informação de um documento podemos exibi-la de forma que o usuário compreenda o conteúdo extraído, neste momento, podemos utilizar essa técnica de geração automática de texto, aonde conhecendo as palavras e como elas associam entre si, torna-se possível gerar um texto em linguagem natural expondo essa informação a usuário. **Correção Ortográfica:** Hoje em dias existem muitos sistemas para análise e correção ortográfica, os processadores de texto mais utilizados possuem esse recurso, os buscadores também implementam esse tipo de análise o projeto Wave do Google utilizava também rotinas de PLN para analisar as palavras digitadas pelo usuário e sugerir uma correção quando identificado um possível erro. Tudo isso é possível através de analise de características da linguagem, conhecendo o dicionário da linguagem e até mesmo analisando vários outros textos publicados que utilizam alguma sentença parecida com a que está sendo submetida à análise para ajudar na validação ou prover sugestões de melhorias para uma sentença. **Reconhecimento de voz:** Existem muitos sistemas hoje que tentam através do reconhecimento de voz melhorar a interação entre o usuário e seu aparelho de celular, existem vários aplicativos para Iphone, Android, etc… provém de recursos para o reconhecimento da voz e processamento linguístico do texto reconhecido para executar alguma ação. Para que o reconhecimento de voz possa ser feito é necessário um modelo acústico associado a um modelo linguístico, que através de outras técnicas de IA, irá comparar o áudio coletado com esse modelo acústico e associado ao modelo linguístico, prover o texto pronunciado. Essa é uma subárea da IA que tem retido vários trabalhos e ainda possui várias barreiras a serem superadas para termos um reconhecimento eficiente, lembrando que cada pessoa fala de forma um pouco diferente, possuem voz diferente e sotaques, desta forma existem muitas variáveis a serem consideradas. **Reconhecimento de texto manuscrito:** Também conhecido como OCR (Optical Caracter Recognition), o PLN contribui muito para ajudar a estimar a palavra a ser reconhecida quando existe alguma dúvida por parte do algoritmo de OCR propriamente dito, analisando a sentença lida, passa a ser possível analisa-la e sugerir mudanças na tentativa de corrigir possíveis erros de leitura. ### Usando NLP para melhorar suas vendas Como hoje em dia estamos todos voltados em um mundo de vendas, acreditando ou não. Quando foi a última vez que você teve que negociar com seu chefe ou colegas de trabalho uma ideia? Quando foi a última vez que você teve que convencer alguém que deveria ter feito algo? Se você está vendendo um produto, um serviço, um conceito ou simplesmente tentando influenciar os outros para chegar em seu resultado desejado, isso é uma venda. Lembre-se desses 05 passos: 1. Estabelecer e manter uma relação 2. Compreender o seu cliente ou futuro cliente 3. Estabelecer uma necessidade / estabelecer um valor 4. Fazer a ligação do seu produto a necessidade 5. Fechar a venda Sua capacidade de comunicar de forma eficaz será a chave para o seu sucesso em qualquer interação de vendas. Então, vamos considerar cada etapa do processo de vendas e ver como a PNL irá se encaixar. **1 - Estabelecer e manter uma relação** A maior parte de nossa comunicação é feita inconscientemente. É importante, então, estar ciente de como você está se comunicando para construir um relacionamento de forma consciente. Manter o contato visual quando você está falando ou ouvindo a outra pessoa é uma maneira de ficar conectado com a pessoa. Inclinando-se para frente e inclinar a cabeça um pouco de lado quando você está ouvindo demonstra que você está totalmente engajada a ouvir a outra pessoa. Combinar e espalhar a linguagem corporal, voz e palavras são outra forma de construir e manter uma relação. Qualquer resistência que você encontrar simplesmente significa que você não estabeleceu uma relação suficiente com a outra pessoa, se tornando uma boa indicação que deve criar uma relação diferente do que está fazendo. Construção de um relacionamento é o primeiro passo para alcançar melhores resultados em vendas ou em qualquer interação que envolve comunicação. **2 - Compreender o seu cliente ou futuro cliente** A melhor maneira de entender seu cliente é fazer diversas perguntas; Fazendo perguntas lhe permitirá conhecer o seu cliente e assim verificar se existe uma necessidade para seu produto ou serviço. Descubra o que é importante para eles, como eles processam as informações. Veja os padrões para encontrar informações internas. Observe suas palavras que são utilizadas com maior frequência. **3 - Estabelecer uma necessidade / estabelecer o valor** Depois de ter estabelecido uma necessidade é necessário estabelecer um valor. Será que eles veem algum valor ou seu produto irá resolver seus problemas? Reforça a sua proposta de valor, pedido algo como: "Então isso seria valioso para resolver esse problema, não é? Está é uma questão importante, pois se não tiver valor o seu produto as pessoas não vão comprar. As pessoas de vendas perdem muito tempo com pessoas que não compram. Você quer que seus clientes compram é essencial para o discurso de vendas mostrar um valor a seu produto. **4 - Fazer a ligação à necessidade / valor ao seu produto ou serviço** Em um processo de vendas, você não estará vendendo um produto ou serviço. Você está vendendo uma emoção. 90% da nossa mente estão inconsciente, emocional ou irracional, enquanto apenas 10% da nossa mente são conscientes ou racional. Nós pensamos que é nossa mente racional que toma uma decisão, mas o fato é que todas as nossas memórias, sentimento e emoções são armazenados em nossa mente inconsciente. E as maiorias das nossas decisões são feitas inconscientemente. Conectando-se com essa emoção é a chave para fecha com sucesso a sua venda. Por exemplo, um cliente está olhando para uma casa e fica olhando um armário. Você conecta-se a ela com a sensação que ela terá quando ela acordar de manhã e poderá escolher sua roupa naquele armário. Esse sentimento vai ligar à pessoa a casa que está sendo vendida. **5 - Fechar a venda** Se você seguiu com sucesso os passos 1 a 4, o encerramento deverá ser fácil. Basta pedir o fim. Considere a venda durante um todo sendo uma oportunidade de ganha-ganha. ### Watson O Watson é um sistema desenvolvido pela IBM, como já mencionei, feito para responder perguntas, para que um sistema de perguntas e respostas possa cumprir sua tarefa não basta que ele faça uma pesquisa em todos os documentos que ele possui em seu banco de dados, ele precisa primeiramente interpretar a pergunta, quebra-la em palavras chaves de forma a permitir uma pesquisa precisa e ao encontrar um conteúdo de acordo com a pergunta consiga formular uma resposta. O Watson faz isso, com ajuda de um super computador, ele analisa a pergunta, faz a pesquisa e constrói uma resposta em poucos segundos. Para construir o Watson a IBM desenvolveu em uma arquitetura conhecida como DeepQA, essa arquitetura cria e persegue diversas interpretações para a sentença analisada e gera diversas respostas plausíveis (hipóteses) com base em uma coleção de evidencias que permite determinar se a hipótese é valida ou falsa. ## Natural language understanding (NLU) Para um computador, um conjunto de palavras não possui nenhum significado intrínseco. Pegar nos resultados do reconhecimento de voz e extrair informação útil sobre a qual o computador pode agir, não é tarefa fácil. Dado que, mesmo as áreas do cérebro humano que processam a linguagem ainda são largamente desconhecidas, os primeiros linguistas aplicados à área da computação tiveram que começar do nada. A área de ***Natural Language Understanding (NLU)*** tem vindo a ser desenvolvida na sua maioria por companhias telefónicas e organizações ligadas à área da internet e redes IP. A razão para tal é sobretudo a fraca qualidade do sinal áudio transmitido nas linhas telefônicas, o que dificulta em muito a aplicação de centrais telefónicas automáticas. É aqui que entra o NLU, usando 75% de reconhecimento de voz certificado para o transformar em 85% ou 90% graças à análise contextual.Para este propósito, a análise da estrutura gramatical da fala tem pouco interesse. A NLU funciona ao longo de um processo muito similar com o processo de compilação de um programa, só que ao contrário. Isto é, em vez de adotar uma metodologia “top-down”, em que a compilação para sempre que detectar a falta de um ponto-e-vírgula (p.e), opta-se por uma abordagem “bottom-up”, tipicamente pessimista, que assume de antemão que algo estará errado no seu input e prepara-se para ter o melhor desempenho possível. Se tivéssemos optado por aplicar a abordagem ***“top-down parsing”*** à linguagem natural, muitos problemas iriam surgir, nomeadamente: - Todas as linguagens naturais coexistem com a ambiguidade, excepções às regras gramaticais, e inconsistência. A tarefa de definir uma gramática de parsing para cada linguagem torna-se praticamente impossível. - Não se pode esperar que todas as pessoas falem de um modo pré-definido, porque isso tornaria o sistema demasiadamente frágil. A NLU utiliza uma aproximação mais robusta e objectiva perante este problema: - Uma aplicação só deverá definir uma gramática para o menor subconjunto da linguagem natural apropriada ao seu domínio. Desta forma, muita da ambiguidade pode ser colocada de parte. - Em vez de usar o **“top-down parsing”,** o ***NLU*** irá utilizar o “bottom-up parsing”, tentando interpretar pequenos fragmentos de palavras soltas e combinando-as de modo a obter uma “imagem” global do que se está a tentar dizer. Por exemplo, na frase ***“Eu quero ir para Porto Alegre esta tarde”***, o NLU interpreta as palavras “esta tarde” como sendo a descrição de um instante no tempo, a palavra **"Porto Alegre"** como sendo o nome de uma cidade, e a palavra “para” seguida do nome de uma cidade como sendo a identificação de um destino. O resto da frase é descartado porque já temos elementos para extrair o sentido do que foi pronunciado. Se algo correr mal, nomeadamente na entrada de voz, e o sistema reconhece a fala ***“Elu queru iri para Porto Alegre espa tarde”***, os fragmentos mais importantes **“para Porto Alegre”** e **“tarde”** continuam a ser bem compreendidos (possivelmente com alguma incerteza, porque não sabemos a que dia é que o utilizador se está a referir) e 80-100% da fala é bem interpretada enquanto conteúdo, embora apenas 43% das palavras tenham sido exatamente identificadas. ## Serviços de IA Como discutido anteriormente neste artigo, o avanço dos serviços de IA em linguagem natural é um fator fundamental para chatbots. A IA permite que modernos chatbots escapem da armadilha de uma “árvore de telefone” e se tornem parceiros de usuários humanos. Quatro tipos importantes de serviços de IA estão relacionados à linguagem natural. Reconhecimento de padrões baseado em regras: exemplos desse tipo incluem data, e-mail, número de telefone, quantidade e acionar palavras. Essas regras são geralmente implementadas como expressões regulares no aplicativo. O benefício dessas regras é que elas são precisas, e você pode adicionar e subtrair regras para lidar com novas situações e corrigir erros. Classificador de linguagem natural: esse tipo de serviço de IA é usado para detectar e classificar a intenção de um comando do usuário. Por exemplo, quando o usuário pergunta “Está muito quente hoje?”, a IA deve saber que o usuário está perguntando sobre a temperatura de hoje. Esse classificador é construído através do treinamento de um algoritmo com muitas expressões de fala do mundo real em uma área do aplicativo. Um exemplo disso é o Watson Natural Language Classifier, um serviço web fornecido pela IBM que você pode usar para treinar seu modelo. Após o treinamento, você pode enviar novas frases usando o serviço web, e ele voltará as classificações com um nível de confiança para cada um. Gerenciador de conversa baseada em regra: com base na intenção do usuário e nos dados que estão associados com a intenção (chamados de entidades), tais como localização e tempo, o serviço pode aplicar regras e gerar respostas de script. A ideia por trás desse tipo de serviço é que a maioria das conversas de chatbots é muito semelhante. Portanto, elas podem ser capturadas em scripts sem o desenvolvedor ter que programar uma máquina de estado com inúmeras declarações IF-THEN. Reconhecimento de voz: embora muitos smartphones high-end hoje tenham reconhecimento de voz que é construído diretamente em seus métodos de entrada de texto, o reconhecimento de voz de terceiros ainda é importante para muitos dispositivos móveis ou computadores mais baratos. Além disso, ele é importante em alguns casos de uso quando a voz do usuário pode ser armazenada para posterior análise (como em um serviço de cliente quando um supervisor pode querer rever o humor e o tom do usuário). O IBM Watson fornece um serviço text-to-speech e um serviço speech-to-text em sete idiomas internacionais. Nota: O IBM Watson Developer Cloud tem uma coleção abrangente de serviços de IA prontos para serem usados e serviços NLP para o desenvolvimento de chatbots e muitas outras aplicações. Por exemplo, o Watson Conversation Service combina classificação de intenção NLP, detecção de entidade e gestão de conversa em script. ## Microsoft BOT Framework A Microsoft criou o BOT, que é um framework capaz de trocar mensagens e integrar diversos tipos de conectores de aplicações famosas (Skype, Slack, Email no Office 365, SMS etc.) com a aplicação BOT no servidor. Resumindo BOT Framework é um serviço operado pela Microsoft baseado num SDK e seus conectores – esse é o core do BOT Framework. Ao criar um BOT, você pode usar diversos serviços para hospedá-lo, serviços de linguagem natural do Machine Learning (LUIS), reconhecimento de voz com as API, integração com o Azure, entre outras, conforme a figura 1. <center>![Bot Framework](https://cldup.com/-s92T_4hOA.png)</center> ### Onde usar? Você pode criar o seu BOT e integrá-lo diretamente nos seus negócios através da integração com conectores como chat, Email no Office 365, Skype, Slack, Telegram, SMS, GroupMe, entre outros, conforme a figura 2. O SDK permite criar projetos em C# + Node.js e publicá-los no Azure. Essa integração é feita através de serviços REST. <center>![Bots](https://cldup.com/PW6jFmDJ-W-3000x3000.png)</center> ### Funcionamento do BOT O BOT é baseado em uma lógica que requisita e recebe textos de um Web Service, normalmente armazenado no Azure. Dependendo do texto solicitado ao servidor, ele trata a mensagem segundo uma inteligência que você cria, e responde à solicitação. Quando falo sobre inteligência, quero dizer que você pode e deve criar um conjunto de expressões, por exemplo, usar o **LUIS** ***(Language Understanding Intelligent Service)*** para treinar esse modelo de expressões. O treinamento é baseado no Machine Learning, que através dos diversos modelos matemáticos e estatísticos submete tais expressões. Como um BOT é baseado em serviços REST, tenha em mente que todas as mensagens trocadas entre cliente e servidor são mapeadas em JSON; por exemplo, a figura 3 mostra o conector BOT para o canal SMS. Imagine que você quer fazer o pedido de uma pizza através de um conector, não importa qual seja, o servidor recebe a mensagem (text: “Diga fazer pedido para iniciar o pedido”), processa e entende que o cliente deseja iniciar o pedido. Então, o cliente recebe a mensagem texto do servidor dando as instruções. Veja que no JSON é definida a linguagem a ser usada, até o momento está disponível apenas para algumas. <center>![Bot Connector Messages](https://cldup.com/x-ihAcXuLo-3000x3000.png)</center> ##API.AI O Api.ai é um plataforma que vai facilitar muito a criação de um Bot que pode responder de maneira fácil perguntas de texto e áudio. O Api.ai é uma plataforma muito bacana aonde você pode configurar rapidamente um Bot que consegue responder frases pré programadas (e até frases similares), ele permite também que você chame um Webhook quando determinada frase for recebida. ##Wit.ai A construção de um chatbot passa basicamente por dois grandes desafios: processamento de linguagem natural (***Natural language processing (NLP)***) e entendimento de linguagem natural (***Natural language understanding (NLU)***). O primeiro diz respeito a quebrar uma sentença em partes chamadas entidades e o segundo significa entender o que a sentença significa. Seria como se a NLP fosse a pré-escola e NLU a universidade. Fazer tudo isso do zero é certamente um trabalho muito grande, mas existem serviços como Wit.ai que tornam as coisas bem mais fáceis. O Wit.ai oferece uma API que pega um texto ou entrada de voz e retorna intents e entities. - **Intents:** significa a intenção do usuário, o que ele pretendia com aquela sentença. Por exemplo: previsão do tempo, listar tarefas etc. - **Entities:** entidades são variáveis que contém detalhes da tarefa do usuário. Por exemplo, considerando a entidade previsão do tempo, você deve ser capaz de identificar a partir da entrada de voz ou texto para qual lugar o usuário quer a previsão. Wit oferece vários built-in entity types como localização, números, valores em dinheiro, idade, distância, data e horário. Além desses também é possível criar os seus próprios. Dependendo das intents e entities que você obtém como entrada do usuário, sua aplicação pode tomar ações ou até mesmo fazer novas perguntas ao usuário. ##Telegram O Telegram, para quem ainda não conhece, é um aplicativo de mensagens baseado em nuvem. O fato de ele ser baseado em nuvem permite que o usuário acesse suas mensagens em qualquer dispositivo. O Telegram também criptografa as mensagens, além de disponibilizar chats privados e prover a autodestruição de mensagens, o que dá segurança e privacidade aos usuários. Já para os desenvolvedores, existe a API do Telegram, a qual pode ser usada para o desenvolvimento de aplicação sobre a plataforma. Com a API do Telegram é possível criar clientes para ler e enviar mensagens, ou seja, você pode criar seu próprio “Telegram” para qualquer plataforma. Além disso, é possível também o desenvolvimento de bots. Os Bots são aplicações com as quais o usuário pode interagir através do Telegram. A interação entre os usuários e os bots pode ser via mensagens ou através da execução de comandos. No site Telegram Bot Store ([https://storebot.me/](https://storebot.me/)) é possível encontrar uma série de bots das mais variadas funções.   ##Slack É uma ferramenta simples, que faz basicamente chat com diversos canais, mas que está ajudando muito na nossa comunicação. O Slack permite integração com diversos tipos de ferramentas, como o Visual Studio Team Services, Github, entre outros. E é totalmente gratuito, desde que você não se preocupe com permissões de usuários, histórico eterno de mensagens, ou não queira integrar com mais do que 10 aplicações. É suficiente para a maioria das empresas. O Slack já vem com um chat bot chamado Slackbot. O Slackbot é capaz de fazer coisas básicas, como responder a mensagens simples. Por exemplo, você pode configurar para que, quando alguém disser num chat “bom dia”, que ele responda com “bom dia”. É um recurso divertido. O Slackbot é um chat bot simples. Há chat bots mais poderosos. ###Por que criar um bot pro slack? Já vimos que bots são assistentes programáveis. Isso quer dizer que você pode criar um bot para te ajudar a resolver problemas que você encontre. Não sabe se sua agenda está livre? Seu time é distribuído através do mundo e você não lembra o fuso-horário? Sempre esquece aquele link que você só precisa usar uma vez por semana? Checar se o seu site está offline pra todo mundo ou se só para você? Todas essas situações podem ser resolvidas por alguém que esteja disponível 24 horas por dia, todos os dias da semana. Afinal, não sabemos quando iremos precisar dessas informações e quando precisarmos, não gostaríamos de esperar muito para saber as respostas. É aí que nosso bot entra! Ele não dorme, não come, não precisa de intervalos e está sempre disponível para lhe dar as informações que ele souber! ##Hubot O Hubot é feito pelo Github, e possui uma API de integração. Ele é escrito em CoffeeScript, roda sobre NodeJS, e é software livre. Ele se integra, através do que chama adaptadores ([https://hubot.github.com/docs/adapters/](https://hubot.github.com/docs/adapters/)), com diversos tipos de aplicações de chat, como o Slack, mas também outros, como o HipChat, o Campfire e até o Skype. O Hubot, sozinho, não faz nada. É através da sua API de integração que construimos scripts que respondem a comandos. Ele vem com uma série de scripts por padrão, que vem do pacote do npm hubot-scripts, que também é open source. No github ([https://github.com/github/hubot-scripts/tree/master/src/scripts](https://github.com/github/hubot-scripts/tree/master/src/scripts)) você pode ver os 461 scripts que já vêm com ele. De um tempo pra cá, esse repositório/pacote npm não recebe mais scripts novos, e todo novo script tem ido para a organização do github “hubot-scripts”, e cada script é um pacote npm independente. ##Referências: RUSSELL, Stuart J.; NORVIG, Peter. Inteligência Artificial. Editora Campus, Rio de Janeiro, 2004. Watson, IBM: http://www-03.ibm.com/innovation/us/watson/ Watson, Wikipédia: http://en.wikipedia.org/wiki/Watson_(computer) Wave, Google: http://googlewave.blogspot.com.br/ Philips Speech Processing : http://ww.speech.philips.com Indiatimes InfoTech - How speech recognition works : http://www.indiatimes.com/infotech/help/software/voicereq.html Revista PC World - Biometria: Reconhecimento de voz http://pcworld.terra.com.br/pcw/testes/tecno_hard/0030.html Revista PC World - Ouça e seja ouvido! O computador já conversa com você http://pcworld.terra.com.br/pcw/testes/tecno_hard/0040.html GIGNews.com - Speech Processing for Games http://www.gignews.com/fdlspeech1.htm Samsung Electronics - Research Center in Russia http://research.samsung.ru/surveys/1999-11/05-1.html ZDNet Portugal - PC Magazine http://www.zdnet.pt/pcmagazine/analises/software/0002/voz1.shtml Guia do PC : http://www.guiadopc.com.br/testes/viavoice.htm Um guia para desenvolvedores de chatbots http://imasters.com.br/desenvolvimento/um-guia-para-desenvolvedores-de-chatbots/?trace=1519021197&source=search Bot framework e integracao com aplicacoes: http://imasters.com.br/desenvolvimento/bot-framework-e-integracao-com-aplicacoes/?trace=1519021197&source=search Chatbots primeiro o chat depois os bots : http://chatbotsbrasil.take.net/chatbots-primeiro-o-chat-depois-os-bots/ Chatbotsbrasil : http://chatbotsbrasil.take.net Blip https://blip.ai/ API.ai : https://docs.api.ai/docs/welcome Processamento de linguagem-natural : https://vanderleiarruda.wordpress.com/2012/08/27/processamento-de-linguagem-natural/ Docs Bot framework : https://docs.botframework.com/en-us/