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:

Automação do fluxo de trabalho com Python e Flask

Um dos conceitos mais abstratos que você lidará ao criar sua empresa é como será o fluxo de trabalho.

Em sua essência, a configuração de um fluxo de trabalho padronizado é permitir que seus provedores de serviços (agentes, hosts, representantes de atendimento ao cliente, administradores e o restante da equipe) atendam melhor aos seus clientes.

Para ilustrar um exemplo muito real, hoje vamos construir um webapp do Python e Flask para encontrar e reservar propriedades de férias, chamado provisoriamente de Airtng.

Veja como ficará:

  1. Um host cria uma listagem de propriedades de férias
  2. Um hóspede solicita uma reserva para um estabelecimento
  3. O host recebe um SMS notificando‐o sobre a solicitação de reserva. O host pode aceitar ou rejeitar a reserva
  4. O hóspede é notificado se uma solicitação foi rejeitada ou aceita

Saiba como a Airbnb usou o Twilio SMS para simplificar a experiência de aluguel para mais de 60 milhões de viajantes em todo o mundo.

Blocos de construção do fluxo de trabalho

Usaremos a API REST da Twilio para enviar mensagens aos nossos usuários em encontros importantes. Veja um pouco mais sobre nossa API:

Loading Code Sample...
        
        
        airtng_flask/__init__.py

        Load the application configuration

        airtng_flask/__init__.py

        Vamos começar! Clique no botão abaixo para começar.

        Automatizar um fluxo de trabalho

        Gerenciamento de usuários e sessões

        Para que esse fluxo de trabalho funcione, precisamos ter um Users criado em nosso aplicativo e permitir que ele faça login em Airtng.

        Nosso modelo User armazena as informações básicas de um usuário, incluindo seu número de telefone. Usaremos isso para enviar notificações por SMS mais tarde.

        Loading Code Sample...
              
              
              airtng_flask/models/user.py

              The Airtng User model

              airtng_flask/models/user.py

              Em seguida, vamos ver como definimos o modelo VacationProperty.

              Next

              O modelo VacationProperty

              Para construir uma empresa de aluguel de férias, precisamos de uma maneira de criar as listas de propriedades.

              O modelo VacationProperty pertence ao User que o criou (chamaremos esse usuário de host para avançar) e contém apenas duas propriedades: uma description e uma image_url.

              Também incluímos alguns campos de relacionamento de banco de dados para nos ajudar a vincular propriedades de férias aos hosts, bem como a quaisquer reservas feitas por nossos usuários.

              Loading Code Sample...
                    
                    
                    airtng_flask/models/vacation_property.py

                    VacationProperty model

                    airtng_flask/models/vacation_property.py

                    Em seguida, veremos como fazer um modelo de uma reserva.

                    Next

                    O modelo de reserva

                    O modelo Reservation está no centro do fluxo de trabalho para este aplicativo. É responsável por manter o controle de:

                    • O guest que realizou a reserva
                    • O vacation_property que o hóspede está solicitando (e host associado)
                    • O status da reserva: pending, confirmed ou rejected
                    Loading Code Sample...
                          
                          
                          airtng_flask/models/reservation.py

                          The Reservation model

                          airtng_flask/models/reservation.py

                          Agora que temos nossos modelos, vamos ver como um usuário criaria uma reserva.

                          Next

                          Criação de uma reserva

                          O formulário de criação de reserva contém apenas um campo, mensagem que será enviada ao usuário host reservar uma de suas propriedades.

                          O restante das informações necessárias para criar uma reserva é retirado do usuário que está conectado ao sistema e a relação entre uma propriedade e seu host proprietário.

                          Uma reserva é criada com um status padrão pending, portanto, quando o host responde com uma resposta accept ou reject, o sistema sabe qual reservation atualizar.

                          Loading Code Sample...
                                
                                
                                airtng_flask/views.py

                                Routes for the Airtng workflow

                                airtng_flask/views.py

                                Agora que vimos como iniciaremos uma reserva, vamos ver como notificar o host.

                                Mostre‑me como notificar o host

                                Notificar o host via SMS

                                Quando uma reserva é criada para uma propriedade, queremos notificar host sobre a solicitação de reserva.

                                Usamos a API REST da Twilio para enviar uma mensagem SMS ao host, usando um número de telefone da Twilio.

                                Agora, precisamos apenas esperar que o host envie uma resposta SMS aceitando ou rejeitando a reserva. Nesse ponto, podemos notificar o usuário e o host e atualizar as informações de reserva de forma correspondente.

                                Loading Code Sample...
                                      
                                      
                                      airtng_flask/models/reservation.py

                                      Notificar o usuário e o host

                                      airtng_flask/models/reservation.py

                                      Em seguida, vamos ver como lidar com mensagens recebidas dos webhooks da Twilio.

                                      Gancho neles

                                      Lidar com solicitações recebidas da Twilio

                                      Esse método lida com a solicitação da Twilio acionada pelo SMS do host e faz três coisas:

                                      1. Verifica se há uma reserva pendente de um usuário
                                      2. Atualiza o status da reserva
                                      3. Responde ao host e envia uma notificação ao usuário

                                      Configuração de solicitações recebidas da Twilio

                                      No Console da Twilio, você deve alterar o webhook "A Message Comes In (Uma mensagem chega)" para chamar o endpoint do seu aplicativo na rota /confirm:

                                      SMS Webhook

                                      Uma maneira de expor sua máquina ao mundo durante o desenvolvimento é usando o ngrok. Seu URL para o webhook do SMS em seu número de telefone deve ter a seguinte aparência:

                                      http://<subdomain>.ngrok.io/confirm
                                      

                                      Uma solicitação de entrada da Twilio vem com alguns parâmetros úteis. Isso inclui o número de telefone From e a mensagem Body.

                                      Usaremos o parâmetro From para procurar o host e verificar se ele tem alguma reserva pendente. Se ele fizer isso, usaremos o corpo da mensagem para verificar a mensagem "aceito" ou "rejeitado". Por fim, atualizamos o status da reserva e usamos a abstração SmsNotifier para enviar um SMS ao hóspede informando que o host aceitou ou rejeitou sua solicitação de reserva.

                                      Resposta do TwiML

                                      Em nossa resposta à Twilio, usaremos a linguagem de marcação do TwiML da Twilio para comandar a Twilio a enviar uma mensagem de notificação via SMS para o host.

                                      Loading Code Sample...
                                            
                                            
                                            airtng_flask/views.py

                                            Confirmar ou rejeitar uma solicitação de reserva pendente

                                            airtng_flask/views.py

                                            Parabéns!

                                            Você acabou de aprender a automatizar seu fluxo de trabalho com o Programmable SMS da Twilio. No próximo painel, veremos alguns outros recursos com os quais a Twilio facilita a adição.

                                            O que mais posso criar?

                                            Para onde ir em seguida?

                                            Para melhorar isso, você pode adicionar comunicações anônimas para que o host e o hóspede possam se comunicar por meio de um número de telefone da Twilio compartilhado: Call Masking with Python and Flask (Mascaramento de chamadas com Python e Flask).

                                            Você também pode aproveitar estes outros tutoriais:

                                            IVR Phone Tree (Árvore telefônica de URA)

                                            Crie uma experiência de atendimento ao cliente perfeita criando uma árvore telefônica de URA (Interactive Voice Response (unidade de resposta audível)) para sua empresa.

                                            Click to Call (Clique para ligar)

                                            Converta o tráfego da web em chamadas telefônicas com o clique de um botão.

                                            Isso ajudou?

                                            Obrigado por conferir este tutorial! Se tiver algum feedback para compartilhar conosco, hit us up on Twitter (entre em contato conosco no Twitter) e informe‐nos o que você está criando!

                                            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