Lembretes de agendamentos com Python e Flask
Ahoy! Agora recomendamos que você crie seus lembretes de agendamento por SMS com a funcionalidade de programação de mensagens integrada da Twilio. Acesse a documentação de recursos de mensagens para saber mais sobre como programar mensagens SMS!
Este aplicativo da web mostra como você pode usar a Twilio para enviar a seus clientes uma mensagem de texto lembrando‐os de agendamentos futuros.
Usamos o Flask para construir o aplicativo da web que suporta nossa interface de usuário, e o Celery para enviar as mensagens de texto de lembrete aos nossos clientes no momento certo.
Neste tutorial, vamos destacar os principais bits de código que fazem este aplicativo funcionar. Confira o README do projeto no GitHub para ver como executar o código por conta própria.
Confira como a Yelp usa o SMS para confirmar reservas de restaurantes para clientes.
Vamos começar! Clique no botão abaixo para começar.
Configurar o aplicativo para usar a Twilio
Antes de podermos usar a API da Twilio para enviar mensagens de texto de lembrete, precisamos configurar nossas credenciais de conta. Elas podem ser encontradas no Twilio Console. Será necessário um número de telefone habilitado para SMS, você pode encontrar ou comprar um novo para usar aqui.
Colocamos essas variáveis de ambiente em um arquivo .env
e usamos o autoenv para aplicá‐las sempre que trabalhamos no projeto. Mais informações sobre como configurar este aplicativo podem ser encontradas no README do projeto.
Agora que a configuração está feita. Vamos passar para a estrutura do aplicativo.
A estrutura do aplicativo
O objeto Application
é o coração de qualquer app do Flask. O nosso inicializa o app, define os URLs e obtém todas as variáveis de ambiente.
O método celery
é um boilerplate para configurar o Celery utilizando configurações e contexto de nosso aplicativo do Flask. Nosso app usa o Redis como agente para o Celery. Mas você também pode usar qualquer um dos outros agentes do Celery disponíveis.
Para que o Celery funcione localmente em sua máquina, siga as instruções no README.
Com o nosso Application
pronto, vamos criar um Appointment model
.
O modelo do agendamento
Nosso modelo de agendamento é muito simples. Os campos name
e phone_number
nos informam para quem enviar o lembrete. Os campos time
, timezone
e delta
nos informam quando enviar o lembrete.
Usamos o SQLAlchemy para alimentar nosso modelo e nos dar uma boa interface ORM para usá‐lo.
Adicionamos um método extra get_notification_time
, para nos ajudar a determinar o momento certo para enviar nossos lembretes. A prática biblioteca arrow facilita esse tipo de aritmética de tempo.
Em seguida, usaremos esse modelo para criar um novo Appointment
e agendar um lembrete.
Agendar novos lembretes
Essa exibição controla a criação de novos agendamentos e a programação de novos lembretes. Ela aceita dados POST enviados para o URL /appointment
.
Usamos o WTForms para validar os dados do formulário usando uma classe chamada NewAppointmentForm
que definimos no forms/new_appointment.py
.
Depois disso, usamos arrow para converter o fuso horário do horário do agendamento para o horário UTC.
Em seguida, salvamos nosso novo objeto Appointment
e programamos o lembrete usando uma tarefa do Celery que definimos chamada send_sms_reminder
.
Vamos analisar essa tarefa em seguida.
Configurar um cliente de API da Twilio
Nosso módulo tasks.py
contém a definição de nossa tarefa send_sms_reminder
. Na parte superior deste módulo, usamos a biblioteca twilio-python para criar uma nova instância do Client
.
Usaremos esse objeto client
para enviar uma mensagem de texto usando a API da Twilio em nossa função send_sms_reminder
.
Vamos dar uma olhada no send_sms_reminder
agora.
Enviar um lembrete
Esta é a função send_sms_reminder
que chamamos em nossa exibição appointment.create
. Nossa função começa com um parâmetro appointment_id
, que usamos para recuperar um objeto Appointment
do banco de dados - uma prática recomendada do Celery.
Para compor o corpo de nossa mensagem de texto, usamos arrow novamente para converter o horário UTC armazenado em nosso agendamento para o fuso horário local de nosso cliente.
Depois disso, enviar a mensagem em si é uma chamada simples a client.messages.create()
. Usamos o número de telefone de nosso cliente como o argumento to
e nosso número Twilio como o argumento from_
.
É isso! Nosso aplicativo do Flask está pronto para enviar lembretes para os próximos agendamentos.
Para onde ir em seguida?
Esperamos que você tenha achado este exemplo de aplicativo útil.
Se você for um desenvolvedor do Python que trabalha com a Twilio e Flask, talvez queira conferir outros tutoriais:
Coloque um botão em sua página da web que conecta os visitantes ao suporte ao vivo ou à equipe de vendas por telefone.
Melhore a segurança da funcionalidade de login do seu app Flask adicionando autenticação de dois fatores por mensagem de texto.
Isso ajudou?
Obrigado por conferir este tutorial! Se você tiver algum feedback para compartilhar, entre em contato pelo Twitter... adoraríamos ouvir suas ideias e saber o que você está desenvolvendo!
Precisa de ajuda?
Às vezes, todos nós precisamos; a programação é difícil. Receba ajuda agora da nossa equipe de suporte, ou confie na sabedoria da multidão navegando pelo Stack Overflow Collective da Twilio ou buscando a tag Twilio no Stack Overflow.