O autor do material, cuja tradução publicamos hoje, diz que as pessoas modernas, cujas vidas são cheias de trabalho, costumam esquecer de escrever mensagens para seus amigos e parentes. Ele, olhando como seus pais enviam citações inspiradoras e dicas úteis de saúde para o WhatsApp todas as manhãs, decidiu que chegara a hora de retribuir.
Neste guia, escreveremos um script Python simples projetado para enviar mensagens do WhatsApp. No decorrer do trabalho, usaremos o pacote Twilio Python. Para organizar o lançamento diário do script em um determinado momento, colocaremos o código na nuvem.

Uma abordagem para resolver esse problema é usar o pacote Selenium Python e a versão da Web do WhatsApp em vez do serviço Twilio, que, após esgotar as possibilidades da oferta gratuita, precisa ser pago. Porém, como trabalhar com a versão da Web do WhatsApp exige a leitura periódica do código QR usando um telefone celular, não funcionará para automatizar o envio de mensagens com essa abordagem.
O trabalho no projeto consistirá em três etapas:
- Configuração do Twilio.
- Aprendendo e modificando código.
- Implantando um projeto na nuvem e configurando um gatilho.
Etapa 1. Configuração do Twilio
Crie uma conta gratuita no site da
Twilio , confirme seu endereço de e-mail e número de telefone.
Registro da conta TwilioAlém disso, como parte da oferta gratuita do Twilio, você deve usar a caixa de proteção do WhatsApp (WhatsApp Sandbox). Isso significa que você não pode usar seu próprio número de telefone e precisa seguir o procedimento para emitir permissão para receber mensagens do WhatsApp.
Você pode usar seu próprio número de mensagens depois que o WhatsApp permitir que o Twilio use seu número. Para obter permissão, você precisa preencher o formulário. Você pode aprender com o suporte técnico do Twilio que, embora o Twilio funcione diretamente com o WhatsApp, pode levar algum tempo para obter permissão. Além disso, fala sobre o escopo limitado para a emissão de licenças. Como resultado, muitos precisam usar a sandbox do Twilio WhatsApp.
Tudo isso não causa muita alegria, mas o que está disponível para nós como parte da oferta gratuita do Twilio nos permite resolver nosso problema. Além disso, verifica-se que a caixa de proteção do WhatsApp ainda é a única opção amplamente disponível.
Agora você precisa conectar o telefone do destinatário das mensagens à sandbox, após o qual poderá enviar mensagens para este telefone. Para aprender como fazer isso, você precisa ir para a seção de console do Twilio, dedicada ao WhatsApp. Em particular, é proposto aqui enviar uma mensagem do WhatsApp com o texto especificado para um número específico.
Página do console do Twilio com instruções para conectar um telefone ao qual você pode enviar mensagensSolicitação de conexão enviada pelo telefoneSalve o número do WhatsApp emitido para você em seus contatos. Ele pode receber qualquer nome. Para não complicar minha vida, liguei para esse contato, Twilio Sandbox, e enviei uma mensagem para ele pelo telefone de meu pai (isso pode ser visto na figura anterior). Este procedimento é realizado apenas uma vez.
Agora você precisa acessar o
console do Twilio e obter o SID e o token de autenticação da sua conta. Esses dados ajudarão o Twilio a reconhecê-lo quando você trabalha programaticamente com o serviço.
Etapa 2. Aprendendo e Modificando o Código
Faça
o download
deste repositório GitHub e descompacte o arquivo.
Conteúdo do arquivo zipAqui você encontrará o arquivo de origem (
whatsapp_messaging.py
) e o pacote de implantação do projeto (
aws_lambda_deploy.zip
).
Aqui está o código do script:
from twilio.rest import Client def msg_mom_and_dad(event=None, context=None):
Agora vamos analisar esse código. Aqui, por conveniência, uma captura de tela com linhas numeradas.
Código do arquivo Whatsapp_messaging.py com linhas numeradas- Linha 1. Cliente de importação para trabalhar com a API REST do Twilio.
- Linha 3. Criando a função
msg_mom_and_dad
. Passaremos essa função para a AWS. Será chamado diariamente no horário definido. - Linhas 6-7. Aqui você precisa substituir o
sid
e o auth_token
existentes no código pelo seu (falamos sobre recebê-los no final da seção anterior). - Linha 9. Crie um objeto de cliente Twilio usando credenciais.
- Linha 13. Criando um dicionário. Aqui, o nome do destinatário da mensagem é usado como chave e o número de telefone como valor. Você pode adicionar informações de contato adicionais a este dicionário.
- Linha 15. O loop
for
, no qual o dicionário é percorrido (até agora, há apenas uma entrada). No body
você precisa especificar o texto da mensagem. Criei uma mensagem simples com o texto "bom dia", seguido de um valor retirado da chave do item do dicionário atual. No meu caso, isso leva à formação da mensagem "bom dia papai!". from_
indica o número do WhatsApp que recebemos anteriormente. Em to
anotar o número do destinatário da mensagem - aquele a partir do qual eles enviaram anteriormente uma solicitação para conectar-se à sandbox do Twilio WhatsApp. - Linha 23. Aqui, para verificar o status da mensagem, exibimos seu SID. Não usaremos essas informações.
Para usar esse código para enviar mensagens, é necessário alterar o seguinte:
twilio_sid
auth_token
contact_directory
de_
corpo (isso é opcional)
Depois de fazer alterações no código, salve o arquivo. Em seguida, descompacte o arquivo
aws_lambda_deploy.zip
, substitua o arquivo
whatsapp_messaging.py
pelo seu arquivo com o mesmo nome e, em seguida, coloque tudo de volta no arquivo .zip. O significado dessas ações é incluir no código suas credenciais e informações sobre aqueles a quem você deseja enviar mensagens. Todo o resto do pacote, projetado para implantação na AWS, permaneceu inalterado. Agora vamos trabalhar com a AWS.
Etapa 3. Implante o projeto na AWS e configure o gatilho
O código está pronto para executar e enviar mensagens do WhatsApp. Se você estiver interessado em qual função os outros arquivos do arquivo
aws_lambda_deploy.zip
desempenham no projeto, lembre-se de que, entre esses arquivos, estão o pacote Twilio e todas as outras dependências do projeto. Precisamos de tudo isso porque planejamos usar as funções do AWS Lambda em um ambiente Python que não possui um pacote Twilio. E por que não
pip install twilio
isso simplesmente executando o comando
pip install twilio
para instalar o pacote certo? O fato é que aqui não temos um servidor.
Para fazer isso, usamos o AWS Lambda - um ambiente de computação sem servidor no qual você pode colocar fragmentos de código, cuja chamada, de acordo com as necessidades do usuário, é acionada por vários eventos e gatilhos. Nosso código está planejado para ser executado apenas uma vez por dia, portanto, usar algo como um servidor EC2 na AWS funcionando 24 horas por dia será um desperdício de recursos e dinheiro de computação. Nossa função Lambda será chamada diariamente em um horário específico, mediante solicitação de um gatilho, e sua implementação levará muito pouco tempo.
Comece a criar uma função Lambda
Faça login na sua conta da AWS. Depois disso, vá para
Services → Compute → Lambda → Create a function
.
Tela de criação de função LambdaVamos dar um nome à função.
Como o ambiente em que a função será executada, escolheremos o Python 3.6. Não precisamos nos conectar a outros serviços da AWS. Portanto, estamos satisfeitos com o nível de permissão especificado pela opção
Create a new role with basic Lambda permissions
.
Após concluir as configurações, basta clicar no botão
Create function
. Agora estaremos no painel de controle principal.
Painel de controleAqui, na seção
Function code
, você precisa especificar um
Handler
com o qual o sistema possa executar nosso código. No nosso caso, no campo
Handler
, escreva
whatsapp_messaging. msg_mom_and_dad
whatsapp_messaging. msg_mom_and_dad
, especificando o nome do arquivo com o código e a função que queremos chamar.
No campo
Function package
, você precisa carregar nosso arquivo .zip, ou seja, o arquivo que criamos na etapa anterior.
Agora o código está pronto para ser executado. Você pode verificar se a função funciona e envia mensagens clicando no botão
Test
.
A etapa final do nosso trabalho será a criação de um gatilho que chamará a função diariamente em um determinado momento. Siga o caminho
Add trigger → CloudWatch Events
.
Configuração de gatilhoPrecisamos criar uma nova regra (
Rule
). Ele precisa atribuir um nome (
Rule name
). Se desejar, você pode adicionar uma descrição (
Rule description
).
Especifique o tipo de regra (
Rule type
) como
Schedule expression
.
O tempo de chamada da função é definido usando a construção
cron(30 1 * * ? *)
. Vamos analisar esta construção:
30 1
significa hora UTC 1:30 da manhã. São 7 da manhã no meu horário IST.- Os dois caracteres a seguir,
* *
, indicam o dia do mês e o mês. - Os próximos dois personagens
? *
? *
, permite especificar o dia da semana e ano. Esse design significa que a função será chamada diariamente, sem restrições de anos e meses.
Aqui você pode aprender como configurar seus próprios trabalhos cron.
Após a conclusão da configuração do gatilho, verifique se a
Enable trigger
seleção
Enable trigger
está ativada, o que ativa o gatilho. Agora resta apenas clicar no botão
Add
e o gatilho será criado.
Informações do acionadorDetalhes da Função LambdaNo painel de controle da função Lambda, é possível ver que a entidade
CloudWatch Events
está anexada à função e que a função pode ser chamada quando o acionador correspondente é acionado.
Sumário
Mensagem enviada pelo script PythonConcluímos o trabalho no projeto. Agora você pode alterar o nome do contato do Twilio Sandbox para o seu próprio telefone no destinatário da mensagem, nos contatos do WhatsApp (eu mudei para Filho). Nosso sistema também permite que você se comunique com o destinatário das mensagens do painel de controle do Twilio.
Caros leitores! Você usa o Twilio em seus projetos?
