
Desde o início dos anos 2000, as notícias sobre a introdução de bots de bate-papo no trabalho têm aparecido com uma frequência invejável. Neste artigo, mostrarei por onde começar e apresentarei uma visão geral das soluções existentes, além de compartilhar minha experiência na criação de um bot para o Selectel.
Âmbito de aplicação
O desenvolvimento de negócios geralmente é acompanhado não apenas pela expansão do negócio principal, mas também pela depuração dos processos de suporte. Os chatbots são apenas parte da atividade comercial como parte da automação de rotina. A comunicação e a implementação de tarefas simples do mesmo tipo estão subjacentes ao trabalho do bot de bate-papo. Com ele, você pode executar não apenas tarefas repetitivas, mas também aquelas que uma pessoa não é capaz de executar, por exemplo, monitorar atividades nas redes sociais.
Quero dar uma variedade de áreas de aplicação para bots usando o exemplo do meu próprio trabalho na Selectel. Mini-spoiler: comecei meu trabalho como escritor técnico, agora sou engenheiro no departamento de soluções em nuvem. O caminho para a implementação de assistentes virtuais começou com um bot para o departamento de marketing, que rastreia comentários e menções da empresa nas redes sociais. Esse desenvolvimento é muito simples, mas complementa efetivamente as soluções existentes no mercado, por exemplo, o
serviço IFTTT .
Os seguintes desenvolvimentos em minha prática foram um chatbot interno para o departamento de RH e um bot para comunicação com clientes, apresentado como um suporte de demonstração durante as conferências SelectelTechDay em
São Petersburgo e
Moscou . Ambos os bots são criados usando diferentes serviços e tecnologias. E antes de mergulhar nos detalhes técnicos, considere o esquema de nível superior dos bots de dispositivos.
Os princípios básicos da botânica

A atividade do Chatbot é criada em torno de três ações principais:
- As informações são recebidas ou exibidas através de certos canais de comunicação, por exemplo, nas caixas de diálogo Slack ou Vk.com.
- O reconhecimento de intenção é uma análise abrangente das informações recebidas para formar uma resposta
- Processamento de ações - qualquer trabalho realizado no lado do servidor, necessário para preparar a resposta correta. Por exemplo, se uma previsão do tempo foi solicitada, uma solicitação será feita a uma determinada API sobre o clima na cidade N e os resultados desse comando serão enviados ao usuário
As principais ações dos chatbots são combinadas no âmbito da tarefa de manter o contexto, a fim de criar uma forma humanóide de comunicação e apoiar o diálogo. O chatbot deve "lembrar" o assunto da conversa e adaptar suas respostas de acordo.
A questão de conectar o chatbot às plataformas sociais se destaca separadamente. Os conectores para mensageiros instantâneos e redes sociais podem ser implementados de forma independente ou com suporte na estrutura de produtos existentes para criar bots de bate-papo.
No momento, existem muitas soluções que oferecem um serviço pronto para automatizar o suporte técnico ou os processos de vendas. Prestarei mais atenção às ferramentas que permitem criar um serviço que atenda aos requisitos internos de segurança da empresa sem complicar o processo de desenvolvimento.
Construção botânica
Os três princípios acima mencionados de chat bots (canal, análise, ação) podem ser implementados de diferentes maneiras. A opção mais fácil é comparar o texto recebido e enviar as respostas correspondentes ao usuário.

Nosso objetivo é um pouco mais alto - obter um sistema no qual você possa adicionar rapidamente novos scripts e entender o usuário na maioria dos casos.
Para fazer isso, precisamos entender do que o usuário está falando, controlar o andamento do diálogo e, em alguns casos, executar determinadas ações (por exemplo, reservar salas de reunião). Isso pode ser alcançado usando as seguintes ferramentas:
- DialogFlow (Google)
- Wit.ai (Facebook)
- Serviço de Bot do Azure (Microsoft)
- Rasa Core (código aberto)
Ao escolher um produto, os seguintes fatores são levados em consideração:
- Quão crítica é a colocação do código executável do bot nos sistemas existentes
Por exemplo, no caso do Wit.ai e do Dialogflow, não controlamos completamente todo o processo - fornecemos o texto para esses aplicativos e obtemos uma resposta pronta. Usando o Rasa Core ou o Azure BotBuilder SDK, podemos armazenar toda a correspondência dentro dos limites dos sistemas internos - Quantos canais de comunicação você precisa conectar
O Dialogflow fornece a capacidade de usar um número limitado de conectores que conectam mensageiros instantâneos e redes sociais especificando chaves de acesso. Você pode usar qualquer número de canais para o Wit.ai e o Rasa Core, mas a lógica de conexão com eles deve ser implementada de forma independente (geralmente essa é uma tarefa muito trivial). O Serviço de Bot do Azure tem a capacidade de usar conectores para determinados canais, mas não está limitado a eles, e também pode ser conectado a outras fontes independentemente - Quão fácil é fazer alterações na base de conhecimento de bot
Ao criar um bot na forma de código de programa sem usar uma interface visual para interagir com ele, limitamos o círculo de pessoas que podem fazer alterações nos diálogos e respostas do bot. A funcionalidade para adicionar e editar frases deve estar disponível para todos
Para nosso assistente virtual interno do bot de bate-papo Tirex, foi escolhida uma plataforma do Google Dialogflow, que fornece a capacidade de editar visualmente intenções, e as ações são realizadas dentro de uma
nuvem privada em Selectel . Os fatores determinantes foram a velocidade de início do trabalho com o bot, a segurança no envio de mensagens e a presença do canal Slack na lista de suportados.

A idéia de criar um bot de bate-papo está no ar há muito tempo, especialmente considerando que problemas poderiam ser resolvidos com ele:
- Um aumento no número de funcionários da empresa e, com isso, um fluxo crescente de perguntas semelhantes como "Como usar uma biblioteca corporativa?" e "Onde almoçar?"
- Reserva regular de salas de reunião e emissão de passes
- Pesquise informações e documentos na base de conhecimento corporativa

Criar e conectar um bot no Dialogflow leva vários minutos. No início, consideraremos os princípios do chatbot no sistema e, em seguida, adicionaremos a implementação de ações complexas.
Criando um bot no Dialogflow
Criação de Arquitetura
Mais adiante, no texto, operaremos com conceitos como:
- Intenção é uma tarefa formalizada que um usuário deseja executar.
- Parâmetros - um conjunto de dados necessários para concluir uma tarefa
- Resposta - uma função ou programa executado em resposta a uma intenção reconhecida
- Frase de treinamento - um exemplo de mensagem do usuário na qual o chatbot aprende
O Dialogflow processa a linguagem natural e extrai todos os dados necessários para executar comandos complexos. Para isso, são criados
agentes que contêm várias
intenções . Cada uma das
intenções permite que você prepare um chatbot para entender as nuances e sutilezas ao formular solicitações.
A intenção inclui
frases ,
parâmetros e
respostas de treinamento . Dentro da frase de treinamento, destacamos os parâmetros (por exemplo, hora ou local) necessários para formar a resposta correta.
A resposta é indicada
intencionalmente , ou o Dialogflow envia uma solicitação ao nosso servidor, que faz o trabalho necessário e retorna a
resposta ao nosso chatbot como um exemplo:
- Para perguntas simples (por exemplo, "Temos um programa de seguro no exterior?", A resposta está na intenção
- Para tarefas mais complexas como "Existe uma sala de chamadas grátis agora?" a resposta é formada usando uma solicitação adicional ao servidor, que determina o tempo livre para todos os participantes e salas

Trabalhe com intenções
Considere trabalhar com a Dialoglow como um exemplo de reserva de negociação. Criamos um agente de gerenciamento de reservas e determinamos as seguintes intenções:
- Ver reservas existentes
- Reserve uma sala de reuniões
Cada uma das intenções é invocada por frases de treinamento. Quanto mais eles são adicionados, maior a probabilidade de a ação desejada ser executada. No nosso exemplo, a intenção de "Reservar uma sala de reuniões" será causada pelas seguintes frases:
- Reserve hoje às 23.15 por 30 minutos comigo
- Oi Reserve uma sala de reuniões em 08/08/2018 das 15:00 às 16:00
- Livro
- Eu preciso de uma sala de reuniões

O princípio da coleta de dados intencional é o seguinte:
- Com base na entrada recebida, o Dialogflow entende qual é a intenção. No nosso exemplo - negociação de reservas
- Se os parâmetros necessários não foram especificados na primeira mensagem (por exemplo, o horário da reunião), o bot de bate-papo fará perguntas esclarecedoras
- Após receber todos os dados, o Dialogflow enviará uma solicitação ao nosso servidor na VPC para reservar a sala desejada
Vejamos esse processo em ação:

A ação é processada enviando uma solicitação com todos os dados para o endereço pré-adicionado do servidor de ação (URL do Webhook):

Há um servidor em
website.ru/webhook que processa comandos complexos (em nosso exemplo, ele retorna a string "Olá do servidor!").
Github Gist para um início rápido:
Criando um bot usando o RASA
Para usar o chatbot sem serviços de terceiros para reconhecimento de texto, você pode usar ferramentas como
Rasa , que permitem controlar totalmente todo o processo do bot. Rasa é um conjunto de componentes de software de código aberto que contêm reconhecimento de fala e gerenciamento de diálogo. Você já pode ver o
Boilerplate , que eu preparei para me familiarizar com a plataforma, e publicaremos instruções mais detalhadas se houver solicitações da comunidade Habr.
Chatbots e negócios
Se usar serviços de automação para atendimento ao cliente não é uma pergunta fácil. As ferramentas modernas oferecem muitas soluções ao escolher entre flexibilidade, velocidade do trabalho e segurança. Agora, os sistemas de reconhecimento de intenção em linguagem natural estão disponíveis não apenas de forma proprietária, mas também distribuídos gratuitamente, o que abre grandes oportunidades para seus próprios experimentos. Consideramos uma das opções que permite implementar rapidamente os bots de bate-papo para automatizar as mesmas tarefas da sua empresa, sem custos de capital e com trabalho mínimo. Se você já usa robôs de bate-papo em seu trabalho, compartilhe comentários nos comentários sobre suas impressões e, é claro, sobre as impressões de seus clientes.