Servidor Couchbase

Chatbot no Azure e no Couchbase para o Viber

Um chatbot pode ser uma forma inovadora de interagir com os usuários. Depois de escrever um post apresentando os conceitos básicos de sem servidore também escrever um post sobre escrita Funções do AzurePor isso, decidi que tentaria criar algo um pouco mais prático do que um "hello, world".

Usar uma arquitetura sem servidor para um chatbot faz sentido. O uso do chatbot pode ser esporádico. O uso pode ter picos e quedas em vários momentos do dia. Ao usar a arquitetura sem servidor, você pagará apenas pelos recursos e pelo tempo necessários.

Se você quiser acompanhar o processo, todo o código-fonte desta postagem do blog está em disponível no Github.

Viber Chatbot

Eu poderia ter escolhido muitas plataformas diferentes para criar um chatbot: Facebook Messenger, Skype, WhatsApp, entre outras. Mas decidi optar pelo Viber.

Nos Estados Unidos, o Viber não parece ter um grande número de seguidores, mas eu o tenho usado bastante. É uma maneira muito prática de conversar com minha esposa, enviar fotos, GIFs engraçados e assim por diante. Acho que ele é mais confiável e mais rápido do que o SMS, especialmente para fotos. Gostaria que todos da minha família o usassem! Também é um bom efeito colateral o fato de que O Viber é um cliente do Couchbase. Eles mudaram do MongoDb para dar suporte às suas necessidades crescentes de dados.

Também, API REST do Viber é simples e bem documentado. Entre o uso da arquitetura sem servidor e a API do Viber, não pude acreditar na rapidez com que passei do zero ao chatbot.

Configuração

Primeiro, você precisará começar por criar um bot no Viber (você precisará de uma conta do Viber em algum momento). O Viber lhe dará uma chave de API semelhante a 30a6470a1c67d66f-4207550bd0f024fa-c4cacb89afc04094. Você usará isso nos cabeçalhos HTTP para se autenticar na API do Viber.

Em seguida, crie uma nova solução do Azure Functions. Já escrevi anteriormente no blog sobre Funções do Azure com uma continuação em Inicialização preguiçosa.

Decidi usar o C# para escrever minhas funções do Azure. Infelizmente, não há SDK .NET para o Viber (até onde eu sei), então terei que usar a API REST diretamente. Não é grande coisa, apenas usei RestSharp. Mas se você preferir NodeJS ou PythonO Viber oferece a você SDKs para esses idiomas.

Antes de começar a codificar, você precisará configurar um Webhook. Essa é simplesmente uma maneira de dizer ao Viber para onde enviar as mensagens recebidas. Você só precisará fazer isso no início. Fiz isso implantando primeiro uma função básica do Azure que retorna 200. Usei o Postman para definir o webhook inicial.

Chatbot webhook with Postman

Por fim, configurei um cluster do Couchbase no Azure. Começar a usar o Couchbase e o Azure é fácil e gratuito. (Você pode até usar o botão "Test Drive" para obter 3 horas de Couchbase Server sem gastar nenhum crédito do Azure). Criei um único usuário chamado "viberchatbot", um bucket chamado "ViberChatBot" e carreguei o bucket "travel-sample".

Função do Azure

Para esse aplicativo, eu queria criar um chatbot com um pouco mais de substância do que "Hello, world" e também queria me divertir um pouco. Aqui estão os comandos que quero que meu chatbot entenda:

  • Se eu disser "hi" (ou hello, etc.), ele responderá com "Howdy!".

  • Se eu solicitar "métricas", ele me informará quantas mensagens foram processadas até o momento.

  • Se eu mencionar "twitter", ele fará uma recomendação sobre quem seguir.

  • Se eu solicitar voos de CMH para ATL (ou outros aeroportos), ele me informará quantos voos existem hoje (usarei o balde para amostras de viagem para esses dados).

  • Se eu disser "help", ele me fornecerá uma lista dos comandos acima.

Decidi não usar nenhuma biblioteca de processamento ou análise de linguagem natural. Vou usar apenas declarações if/else simples e algumas combinações básicas de strings. Se estiver planejando criar um chatbot robusto com recursos avançados, definitivamente recomendo consultar bibliotecas e ferramentas como LUIS, wit.ai, NLTK e outros.

Código do chatbot

Comecei criando algumas classes C# para representar a estrutura dos dados que o Viber enviará ao meu endpoint sem servidor.

Aulas no Viber

Essa não é, nem de longe, uma representação exaustiva dos recursos do Viber, mas é suficiente para começar a receber mensagens de texto básicas.

Em seguida, a função do Azure converterá a solicitação HTTP bruta em uma solicitação ViberIncoming objeto.

Depois disso, criei um ViberProcessador com uma classe Processo que recebe esse objeto.

Processamento de mensagens do Viber

Registro de entrada cria um registro (no Couchbase) para que eu saiba tudo sobre cada solicitação recebida.

ProcessMessage analisará o texto da mensagem e descobrirá o que fazer em resposta. Você pode conferir o código completo em Githubmas aqui está um breve trecho para que você tenha uma ideia:

Obtenção de métricas

Uma das coisas que meu chatbot escuta é "métricas". Quando você solicita as métricas, ele fornece uma contagem das mensagens recebidas que foram processadas. Como estou registrando cada solicitação no Couchbase, a consulta de métricas é feita facilmente com uma consulta N1QL.

Enviar uma mensagem de volta

O chatbot precisa se comunicar de volta com a pessoa que está falando com ele. Como eu disse anteriormente, não há SDK do Viber .NET, portanto, tenho que criar uma chamada REST "manualmente". Isso é bastante fácil com o RestSharp:

Observe que também estou registrando cada resposta do Viber para o Couchbase. Isso pode ser uma informação muito útil para análise posterior e/ou solução de problemas. Se o Viber decidir alterar a estrutura e o conteúdo de sua resposta, os dados no Couchbase serão todos armazenados como dados JSON flexíveis. Você não terá erros surpreendentes ou dados ausentes nesse ponto de ingestão.

Resumo

Isso é tudo o que é básico. Confira o código-fonte para ver o conjunto completo de ações/operações que o chatbot pode realizar. Para testar o bot, usei o aplicativo Viber para Android no meu telefone (e no da minha esposa, para garantir que funcionasse quando eu fosse a público).

Conversation with chatbot

Atenção: no momento em que você ler isto, o chatbot que criei provavelmente estará off-line. Qualquer outra pessoa que criar um "Bot do Couchbase" não será eu!

Aqui está uma recapitulação dos benefícios dessa abordagem para a criação de um chatbot:

  • O abordagem sem servidor é uma boa maneira de controlar os custos de um chatbot. Seja no Viber ou em outra plataforma de mensagens, há potencial para uso esporádico e cíclico.

  • API REST do Viber utiliza JSON, o que torna o Couchbase uma opção natural para rastreamento/armazenamento/consulta.

  • A facilidade de dimensionamento e as parcerias do Couchbase com Microsoft (e Amazon e Google) fazem dele uma ótima opção para um backend de chatbot.

Isso foi muito divertido, e eu definitivamente poderia me empolgar brincando com esse novo chatbot. Ele poderia analisar imagens, contar piadas, procurar todo tipo de informação, vender produtos e serviços ou qualquer outra operação útil.

Gostaria muito de saber o que você está fazendo com os chatbots! Deixe um comentário ou entre em contato comigo em Twitter @mgroves.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.