Índice:

CovBot - um chatbot baseado em WhatsApp para COVID 19 Informações e mais: 7 etapas
CovBot - um chatbot baseado em WhatsApp para COVID 19 Informações e mais: 7 etapas
Anonim
Image
Image
Crie uma conta Twilio
Crie uma conta Twilio

CoVbot é um chatbot baseado em Whatsapp simples e intuitivo. O principal recurso do bot é:

Ele pode fornecer a você o status mais recente do COVID-19 no país de sua escolha de uma forma simples e intuitiva.

Além disso, o bot pode sugerir atividades divertidas para fazer EM CASA, como:

  1. Sugira um filme - Um filme para assistir da lista dos 10 filmes principais, com uma breve visão geral do enredo e da duração. Como essa lista não é codificada no software, sempre fornecerá as atualizações mais recentes com base nas tendências atuais.
  2. Sugira um programa de TV - Um programa de TV para assistir a partir dos programas de TV mais populares, com uma breve visão geral do enredo e das classificações. Como essa lista não é codificada no software, sempre fornecerá as atualizações mais recentes com base nas tendências atuais.
  3. Sugira um livro - um livro para ler da lista dos dez melhores livros, com a sinopse e a imagem da capa do livro.
  4. Treinos diários - este é um vídeo baseado em uma programação de treino de 7 dias fornecida pela CRANK gym em sua conta do Instagram.

Se você gosta deste Instructable, considere votar nele no Concurso de Autor de Primeiro Item. (e sim, este é o meu primeiro instrutível, então se algo não estiver claro ou precisar de mais explicações, por favor me avise na seção de comentários e eu posso te ajudar:)

Suprimentos

Este projeto é exclusivamente baseado em software, portanto, qualquer pessoa que o siga instrutível com um laptop / desktop PC / macOS / Linux e internet pode concluir este projeto. Também incluirei uma seção detalhada no final para explicar o código / processo com mais detalhes para pessoas com alguma experiência em programação. Observe que isso não é necessário para concluir o projeto

Nível de dificuldade do projeto:

Não é muito fácil, mas não é muito difícil

O Hardware que usaremos:

  • Um laptop / desktop com Windows / macOS / Linux.
  • Um celular com WhatsApp Messenger instalado

O software que usaremos:

  1. Linguagem de programação Python
  2. ngrok - é uma ferramenta usada para nos permitir acessar nosso servidor de fora de nossa rede
  3. Editor de sua escolha: (por exemplo, Notepad ++, Sublime Text, Vim etc.)

Etapa 1: Instale o software necessário

Image
Image

Nesta etapa, faremos o seguinte:

  1. Instale Python> 3.6 e teste-o
  2. Instale as bibliotecas Python necessárias
  3. Instale o ngrok

Se você tiver ambos os aplicativos instalados, pode pular esta etapa

Instale o Python:

Todo o backend / base de código do servidor para este projeto é escrito em Python 3.6. Portanto, para executar nossos aplicativos, precisamos ter o Python> 3.6 instalado em nosso computador. Siga o tutorial de CoreySchafer sobre como instalar o python para Windows e macOS

Você pode testar se tudo está instalado corretamente digitando o seguinte no cmd / Terminal:

python -c 'print (f "Hello World")'

Se tudo foi instalado corretamente, Hello World deve ser impresso na tela. Se você receber um erro de sintaxe inválida, significa que a versão incorreta do python está instalada. Instale uma versão do python> = 3.6

Instale as bibliotecas Python necessárias usando pip:

Usaremos as seguintes bibliotecas Python para fazer nosso software funcionar:

  1. Flask - esta é a estrutura do nosso servidor
  2. Twilio - esta biblioteca fornece uma maneira para o python se comunicar com o WhatsApp
  3. Solicitação - esta biblioteca é usada para solicitar dados de APIs
  4. BeautifulSoup4 - Esta biblioteca é usada para extrair informações de sites
  5. lxml - esta biblioteca é usada em combinação com BeautifulSoup para extrair as informações relevantes de um site

Para instalar essas bibliotecas, você pode fazer o seguinte:

Abra o CMD / Terminal e digite o seguinte comando:

pip install flask, twilio, request, beautifulsoup4, lxml

OU

Baixe o arquivo requirements.txt e abra um terminal no diretório onde o arquivo está e digite:

pip install -r requisitos.txt

Instale o ngrok

O ngrok permite que você exponha à Internet um servidor em execução em sua máquina local. Apenas diga ao ngrok em qual porta seu servidor está escutando.

Siga o guia no site do ngrok para instalar o ngrok para o sistema operacional que você está usando.

Dica: a etapa 3 do guia não é relevante para este projeto, portanto, pode ser ignorada

Etapa 2: crie uma conta Twilio

Nesta etapa, faremos o seguinte:

  1. Inscreva-se para uma conta Twilio
  2. Introdução rápida a seções úteis no console do Twilio

Inscrever-se:

Neste projeto, usaremos a API Twilio Whatsapp para conectar nosso programa python ao Whatsapp. Para poder usar a API do Twilio, precisamos primeiro criar uma conta no site oficial do Twilio. Para uma conta de teste, o Twilio oferece um crédito gratuito de $ 15 para usarmos.

Introdução rápida:

Depois de criar uma conta, as seções mais interessantes do console do Twilio para este projeto são:

Painel - No painel, você pode ver a quantidade de crédito restante, você pode editar o nome do seu projeto e alterar a linguagem de programação

Subseção Whatsapp na seção SMS programável - Na seção Whatsapp do console, você pode obter acesso ao código de junção do bot, o número do Whatsapp que usaremos no projeto para falar com nosso bot e também a configuração do webhook. Mais detalhes sobre tudo isso serão descritos nas próximas etapas

Etapa 3: Obtenha a chave API para dados, filmes e programa de TV do COVID 19

Obtenha a chave API para dados, filmes e programas de TV do COVID 19
Obtenha a chave API para dados, filmes e programas de TV do COVID 19
Obtenha a chave API para dados, filmes e programas de TV do COVID 19
Obtenha a chave API para dados, filmes e programas de TV do COVID 19

Uma chave de API ou chave de interface de programação de aplicativo é um código que é transmitido por aplicativos de computador. O programa ou aplicativo então chama a API ou interface de programação de aplicativo para identificar seu usuário, desenvolvedor ou programa de chamada para um site.

Usamos uma API para obter informações sobre o status, filmes e programas de TV mais recentes do COVID 19. Para acessar a API, você precisa de uma chave pessoal para cada usuário. Nesta etapa, obteremos essas chaves

Obtenha a chave API para dados COVID 19:

  • Faça login ou cadastre-se para obter sua conta RapidAPI.
  • Depois disso, vá para COVID-19 API de Gramzivi
  • Role para baixo até a seção "Parâmetros do cabeçalho" do console da API.
  • Sua chave API deve estar visível no campo “X-RapidAPI-Key”.

Obtenha a chave de API para dados de filmes e programas de TV:

  • Faça login ou cadastre-se para obter sua conta TMDB
  • Depois disso, vá para sua configuração - API
  • Role para baixo até a seção "Chave API (autenticação v3)"
  • Sua chave de API deve estar visível abaixo dela

Crie o arquivo "config.py"

Agora criaremos um arquivo config.py para armazenar nossas chaves de API. Criamos um arquivo separado para eles, porque as chaves de API são informações confidenciais e se você compartilha seu projeto, não deve compartilhar sua chave de API.

  • Crie um novo diretório de projeto
  • Dentro do diretório recém-criado, crie um novo arquivo chamado "config.py"
  • Edite este arquivo com um editor de sua escolha (Sublime, Notepad ++) e copie e substitua o seguinte texto pelas informações relevantes obtidas na etapa anterior:

session_key = "secreto" #Isso não é seguro.. mas apenas para teste está ok

rapid_api_key = "" api_key = ""

Salve o arquivo

Etapa 4: conectar Python e Twilio via Ngrok

Nesta etapa, faremos o seguinte:

  1. Baixe o código fonte
  2. Execute o programa e encaminhe o IP local para um endereço público via ngrok para que possamos fazer uma solicitação a ele
  3. Configure nossa conta Twilio para encaminhar a solicitação ao nosso servidor

Baixe o código-fonte do bot:

Baixe todo o arquivo anexado nesta configuração no diretório do projeto criado na última etapa.

Execute o programa:

Vá para o diretório do código-fonte no CMD / terminal e execute o seguinte comando:

python server_main.py

Certifique-se de ter o "config.py" que criamos na última etapa ou você receberá um erro

A saída deve ser algo assim:

* Servindo aplicativo Flask "server_main" (carregamento lento)

* Ambiente: produção AVISO: Este é um servidor de desenvolvimento. Não o use em uma implantação de produção. Em vez disso, use um servidor WSGI de produção. * Modo de depuração: ativado * Executando em https://127.0.0.1:5000/ (Pressione CTRL + C para sair) * Reiniciando com stat * O depurador está ativo! * PIN do depurador: 740-257-236

Isso significa que seu servidor está funcionando corretamente em sua rede local na porta 5000. Para tornar este servidor acessível de fora de sua rede local, usaremos o ngrok

Encaminhe o IP local para um endereço público via ngrok

Vá para o diretório onde você baixou o ngrok via CMD / terminal e execute o seguinte comando:

ngrok http 5000

A saída deve ser algo assim:

ngrok por @inconshreveable (Ctrl + C para sair)

Status da sessão online Sessão expira em 7 horas e 59 minutos Versão 2.3.35 Região Estados Unidos (EUA) Interface da web https://127.0.0.1:4040 Encaminhando _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Encaminhando _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Conexões ttl opn rt1 rt5 p50 p90 0 0 0,00 0,00 0,00 0,00

Copie o link HTTP da parte "Forwading" (apenas até ngrok.io). (Eu adicionei o _ neste exemplo para evitar instrutível para interceptá-lo como um link)

Configure o Twilio para usar o novo endereço para encaminhar a solicitação do servidor para:

Agora que encaminhamos com sucesso nosso servidor para ser acessado publicamente, precisamos configurar o Twilio de forma que, quando uma solicitação for feita usando a API Twilio Whatsapp, encaminhemos a solicitação para nosso servidor. Para fazer isso, precisamos fazer o seguinte:

  1. Vá para a seção Whatsapp no console do Twilio
  2. Navegue até a subseção "Sanbox"
  3. Na caixa de texto "QUANDO VEM UMA MENSAGEM", cole o link HTTP do ngrok copiado com a extensão / sms (NÃO COPIE _ no início e no final):

_https://d44c955749bf.ngrok.io/sms_

Agora tudo para o chatbot está configurado. Na próxima etapa, podemos testar se tudo está funcionando corretamente

Etapa 5: Teste nosso aplicativo

Teste nosso aplicativo
Teste nosso aplicativo
Teste nosso aplicativo
Teste nosso aplicativo
Teste nosso aplicativo
Teste nosso aplicativo

Nesta etapa, faremos o seguinte:

  1. Junte-se ao nosso bot usando o código de acesso
  2. Experimente nosso aplicativo

Junte-se ao nosso bot usando o código de acesso

Neste projeto, usaremos o número do sandbox do Whatsapp do Twilio para nosso bot do Whatsapp. Para cada pessoa, esse número será diferente. Você pode encontrar o seu número assim:

  • Faça login na sua conta Twilio
  • Acesse Twilio Console -> Seção Whatsapp -> Sandbox
  • Você verá seu número do Twilio Sandbox com o seguinte texto:

Convide seus amigos para o seu Sandbox. Peça que enviem uma mensagem do WhatsApp para:

Devido a uma política de segurança do Whatsapp, todos que desejam falar com um bot automatizado via Whatsapp precisam optar explicitamente por um código. Você pode descobrir seu código olhando na mesma seção do número do sandbox do Twilio com o texto:

Depois de adquirir o número do Whatsapp do Twilio Sandbox e o código de ativação, para começar a usar o bot, vá para o seu telefone celular e faça o seguinte:

  1. Salve o "Twilio Sandbox Whatsapp Number" em seu contato com o nome de sua escolha (por exemplo, CovBot)
  2. Abra o Whatsapp e envie a seguinte mensagem para esse contato:

Junte

Você deverá ver uma mensagem como esta:

Twilio Sandbox: Tudo pronto….

Isso significa que você se conectou ao seu bot e está pronto para perguntar qs

Experimente nosso aplicativo:

Para testar os vários recursos do seu bot depois de se conectar, envie a seguinte mensagem para o bot:

Oi

Você deverá ver o seguinte texto:

Bem-vindo ao CoVbot!

Um chatbot simples que pode fornecer as últimas atualizações do COVID-19 de uma forma simples, rápida e fácil. Uma vez que estamos todos em quarentena, o bot pode ser usado para sugerir algumas atividades divertidas para aproveitar ao máximo o nosso tempo em casa enquanto nos esforçamos para manter a segurança de nós, amigos e família. Esperamos que você goste e seja útil! Envie 4 para começar!

Agora você pode seguir a opção de experimentar os diferentes recursos do bot.

É ISSO! Seu Whatsapp Chatbot está pronto !!!! Parabéns

Etapa 6: Como funciona e melhorias futuras:

Como isso funciona e melhorias futuras
Como isso funciona e melhorias futuras
Como isso funciona e melhorias futuras
Como isso funciona e melhorias futuras
Como isso funciona e melhorias futuras
Como isso funciona e melhorias futuras
Como isso funciona e melhorias futuras
Como isso funciona e melhorias futuras

Esta seção é para pessoas que têm alguma experiência em programação Python. Caso contrário, você pode pular esta seção

Explicação do código

Loop Principal:

Quando uma mensagem do Whatsapp é enviada ao seu número do Twilio, a API do Twilio faz uma solicitação POST para o seu servidor que você especificou. O servidor é implementado usando a estrutura Flask e, portanto, podemos usar o objeto Flask Request para recuperar os dados recebidos durante a solicitação POST. Com base nos dados (neste caso, números), decidimos qual opção o usuário selecionou e fornecemos as informações apropriadas

Dados COVID e filmes e programas de TV:

Os dados do COVID 19, filmes e programas de TV são recuperados de uma API. Eu uso a biblioteca Python de solicitação para obter os dados e, em seguida, convertê-los em um formato JSON. Então, apenas analiso as informações relevantes. Para filmes e programa de TV, também usei a biblioteca python aleatória para escolher um programa de TV e um filme aleatórios

Detalhes do livro

O algoritmo de sugestão de livro usado no projeto é apenas um raspador de web. Não consegui encontrar nenhuma API que fornecesse um livro aleatório com detalhes, então apenas raspei um site usando BeautifulSoup4 e usando o analisador lxml extraio as informações relevantes do livro

Detalhes do submenu:

Implementar os submenus foi um pouco mais complicado do que o resto, já que as mensagens do Whatsapp são como SMSes, que é um protocolo sem estado. Para resolver isso, usei duas técnicas:

  1. Usando variáveis globais para lembrar o estado da mensagem - implementado apenas para a subopção COVID 19. Nesse caso, quando um usuário seleciona "Status do COVID 19 na opção do meu país", uma variável global chamada incomplete_message é definida como True para indicar que outra mensagem baseada na opção anterior ainda é necessária. Em seguida, há uma verificação no início que verifica se uma mensagem está marcada como incompleta, se assim for, assume que a mensagem é o nome do país para os dados COVID e passa a informação para a função correta e define a mensagem incompleta da variável global como False
  2. Usando Twilio Cookies e Flask Sessions - Cookies e Flask Sessions são usados no submenu "Sugerir uma atividade de quarentena" para implementar o estado, assim como qualquer aplicativo da web usa atualmente, mas em vez de lembrar coisas como seu nome de usuário ou conta lembrar a conversão entre dois números. Se você gosta de mais informações sobre esta parte, recomendo a leitura deste guia incrível sobre os cookies do Twilio escrito pela equipe do Twilio

Melhorias futuras:

  1. Use Orientação a Objetos de Python e Padrões de Design para melhorar a arquitetura de código e DRYness
  2. Remover variáveis globais
  3. O tratamento de erros pode ser melhorado
  4. Atualizar automaticamente o endereço ngrok usando milho e Twilio CLI
  5. Documentação de código

Etapa 7: Notas Finais

Espero que todos gostem deste projeto. Este é meu primeiro instrutível, portanto, se algo não estiver claro ou precisar de mais explicações, deixe-me saber na seção de comentários e eu posso ajudá-lo. Além disso, se você fez este projeto com uma técnica ou lista de recursos diferente, todos compartilhem

Recomendado: