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 PHP e Laravel

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, vamos criar um aplicativo da web PHP e Laravel para encontrar e reservar propriedades de férias — provisoriamente chamado 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...
        
        

        Routes for handling reservations or Twilio webhooks

        Vamos dar o próximo passo com ousadia! Pressione o botão abaixo para começar.

        Vamos trabalhar em nosso fluxo de trabalho

        Gerenciamento de usuários e sessões

        Nosso fluxo de trabalho exigirá que os usuários criem contas e façam login para tentar reservar propriedades.

        Cada User precisará ter um phone_number, que será necessário para enviar notificações via SMS posteriormente.

        Loading Code Sample...
              
              
              database/migrations/2014_10_12_000000_create_users_table.php

              User table migration

              database/migrations/2014_10_12_000000_create_users_table.php

              Em seguida, criaremos uma tabela que representa uma propriedade de aluguel de férias.

              Next

              Propriedade de férias

              Precisaremos de uma maneira de criar as listas de propriedades para que o Airtng seja um sucesso.

              O modelo de VacationProperty pertence a um User que o criou (chamaremos esse usuário de host a partir de agora) e contém apenas duas propriedades: uma description e um image_url.

              Ele tem duas associações: tem muitas reservas e muitos usuários por meio dessas reservas.

              Loading Code Sample...
                    
                    
                    database/migrations/2015_10_23_193814_create_vacation_properties_table.php

                    VacationProperty table migration

                    database/migrations/2015_10_23_193814_create_vacation_properties_table.php

                    Em seguida: como iremos modelar uma reserva.

                    Next

                    Nosso 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

                    Como a reserva pode ter apenas um hóspede neste exemplo, simplificamos o modelo atribuindo o phone_number diretamente ao modelo (mas você vai querer removê‐lo).

                    Loading Code Sample...
                          
                          
                          database/migrations/2015_10_23_194614_create_reservations_table.php

                          Reservations table migration

                          database/migrations/2015_10_23_194614_create_reservations_table.php

                          Nossas tabelas estão prontas, agora vamos ver como criar uma reserva.

                          Next

                          Criação de reserva

                          O formulário de criação de reserva contém apenas um campo: a mensagem que será enviada ao usuário host ao 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 proprietário.

                          Uma reserva é criada com um status pending padrão, então quando o host retorna com uma mensagem confirm ou reject, o sistema sabe qual reserva atualizar.

                          Loading Code Sample...
                                
                                
                                app/Http/Controllers/ReservationController.php

                                Criar uma nova reserva

                                app/Http/Controllers/ReservationController.php

                                Vamos ver como a notificação via SMS é enviada ao host quando a reserva é criada.

                                Notificar o host

                                Notificar o host

                                Quando uma reserva é criada para uma propriedade, queremos notificar o proprietário dessa propriedade que alguém solicitou uma reserva.

                                É aqui que usamos a API REST da Twilio para enviar uma mensagem por SMS para o host usando nosso número de telefone da Twilio. O envio de mensagens por SMS usando a Twilio requer apenas algumas linhas de código.

                                Agora, precisamos apenas esperar que o host envie uma resposta por SMS para "aceitar" ou "rejeitar", notificar o hóspede e atualizar a reserva.

                                Loading Code Sample...
                                      
                                      
                                      app/Http/Controllers/ReservationController.php

                                      Notificar o host sobre uma nova solicitação de reserva

                                      app/Http/Controllers/ReservationController.php

                                      Vamos ver como lidar com as mensagens recebidas da Twilio e aceitar ou rejeitar reservas.

                                      Next

                                      Tratamento de mensagens recebidas

                                      Vamos analisar mais detalhadamente o método acceptReject. Esse método lida com nossa solicitação recebida da Twilio e faz três coisas:

                                      1. Verifica se há uma reserva pendente do usuário de entrada
                                      2. Atualiza o status da reserva
                                      3. Responde ao host e envia uma notificação ao hóspede
                                      Loading Code Sample...
                                            
                                            
                                            app/Http/Controllers/ReservationController.php

                                            Aceitar ou rejeitar uma lógica de reserva

                                            app/Http/Controllers/ReservationController.php

                                            Para rotear mensagens por SMS de e para o host, precisamos configurar webhooks da Twilio. O próximo painel mostrará o caminho.

                                            Next

                                            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 /reservation/incoming:

                                            SMS Webhook

                                            Uma maneira de expor sua máquina ao mundo durante o desenvolvimento é usar 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/reservation/incoming
                                            

                                            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 enviamos um SMS para o hóspede informando que o host aceitou ou rejeitou sua solicitação de reserva.

                                            Resposta do TwiML

                                            Em nossa resposta para a Twilio, usaremos o TwiML da Twilio para dar o comando para a Twilio enviar uma mensagem de notificação via SMS para o host.

                                            Loading Code Sample...
                                                  
                                                  
                                                  app/Http/Controllers/ReservationController.php

                                                  Como localizar uma reserva de uma solicitação recebida da Twilio

                                                  app/Http/Controllers/ReservationController.php

                                                  Na última etapa, responderemos à solicitação da Twilio com alguns TwiML instruindo‐a a enviar um SMS para o host e para o hóspede.

                                                  Next

                                                  Resposta do TwiML

                                                  Depois de atualizar o status da reserva, devemos notificar o host que ele confirmou ou rejeitou a reserva com êxito. Se o host não tiver reservas pendentes, retornaremos uma mensagem de erro.

                                                  Se estivermos modificando uma reserva, também enviaremos uma mensagem ao usuário que solicitou o aluguel fornecendo as boas ou más notícias.

                                                  Usamos o Message verb (verbo Enviar mensagem) do TwiML para instruir a Twilio a enviar duas mensagens por SMS.

                                                  Loading Code Sample...
                                                        
                                                        
                                                        app/Http/Controllers/ReservationController.php

                                                        Responder a um usuário com o status da reserva

                                                        app/Http/Controllers/ReservationController.php

                                                        Parabéns! Acabamos de automatizar um fluxo de trabalho de locação com o Programmable SMS da Twilio e agora você está pronto para adicioná‐lo ao seu próprio aplicativo.

                                                        Em seguida, vamos dar uma olhada em outros recursos fáceis de adicionar que você talvez queira adicionar.

                                                        Next

                                                        O que fazer em seguida?

                                                        PHP + Twilio? Excelente escolha! Aqui estão alguns outros tutoriais para você experimentar:

                                                        Click To Call (Clique para ligar)

                                                        Coloque um botão em sua página da web que conecta os visitantes ao suporte ao vivo ou aos vendedores por telefone.

                                                        Automated Survey (Pesquisa automatizada)

                                                        Colete instantaneamente dados estruturados de seus usuários com uma pesquisa realizada por uma chamada de voz ou mensagens de texto SMS.

                                                        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!

                                                        Mario Celi 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