You are viewing the Portuguese (Brazil) site, but your language preference is set to English. Switch to English site →

Menu

Expand
Classifique esta página:

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.

Vamos 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.

Loading Code Sample...
        
        
        .env.example

        Configure the environment variables

        .env.example

        Agora que a configuração está feita. Vamos passar para a estrutura do aplicativo.

        Vamos analisar 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.

        Loading Code Sample...
              
              
              application.py

              Our core application code

              application.py

              Com o nosso Application pronto, vamos criar um Appointment model.

              Vamos criar alguns agendamentos

              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.

              Loading Code Sample...
                    
                    
                    models/appointment.py

                    The Appointment model

                    models/appointment.py

                    Em seguida, usaremos esse modelo para criar um novo Appointment e agendar um lembrete.

                    Agendar novos lembretes

                    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.

                    Loading Code Sample...
                          
                          
                          views/appointment.py

                          Scheduling new reminders

                          views/appointment.py

                          Vamos analisar essa tarefa em seguida.

                          Criar a tarefa send_sms_reminder

                          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.

                          Loading Code Sample...
                                
                                
                                tasks.py

                                Configurar um cliente de API da Twilio

                                tasks.py

                                Vamos dar uma olhada no send_sms_reminder agora.

                                Enviar mensagens de lembrete com a API da Twilio

                                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_.

                                Loading Code Sample...
                                      
                                      
                                      tasks.py

                                      Perform the actual task of sending a SMS

                                      tasks.py

                                      É isso! Nosso aplicativo do Flask está pronto para enviar lembretes para os próximos agendamentos.

                                      Para onde ir em seguida?

                                      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:

                                      Clique para ligar

                                      Coloque um botão em sua página da web que conecta os visitantes ao suporte ao vivo ou à equipe de vendas por telefone.

                                      Autenticação de 2 fatores

                                      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!

                                      Andrew Baker Kevin Segovia Daniel Erazo
                                      Classifique esta página:

                                      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.

                                      Loading Code Sample...
                                            
                                            
                                            

                                            Obrigado pelo seu feedback!

                                            Selecione o(s) motivo(s) para seu feedback. As informações adicionais que você fornece nos ajudam a melhorar nossa documentação:

                                            Enviando seu feedback...
                                            🎉 Obrigado pelo seu feedback!
                                            Algo deu errado. Tente novamente.

                                            Obrigado pelo seu feedback!

                                            thanks-feedback-gif