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 C# e ASP.NET MVC

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 C# e ASP.NET MVC 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...
        
        
        AirTNG.Web/Domain/Reservations/Notifier.cs

        Notify the host

        AirTNG.Web/Domain/Reservations/Notifier.cs

        Pronto para começar? Clique com ousadia no botão logo após esta frase.

        Com ousadia, clique em mim para continuar

        Autenticar usuários

        Para que esse caso de uso funcione, precisamos lidar com a autenticação. Contaremos com a ASP.NET Identity (Identidade ASP.NET) para essa finalidade.

        Cada User precisará ter um phone_number que usaremos posteriormente para enviar notificações via SMS.

        Loading Code Sample...
              
              
              AirTNG.Web/Models/IdentityModels.cs

              The User model

              AirTNG.Web/Models/IdentityModels.cs

              Em seguida, vamos dar uma olhada no modelo de propriedade de férias.

              Next

              O modelo de propriedade de férias

              Nosso aplicativo de locação obviamente exigirá a listagem de propriedades.

              A VacationProperty pertence ao User que a criou (chamaremos esse usuário de host a partir de agora) e contém apenas duas propriedades: uma Description e um ImageUrl.

              Uma VacationProperty pode ter muitas Reservations.

              Loading Code Sample...
                    
                    
                    AirTNG.Web/Models/VacationProperty.cs

                    Vacation Property Model

                    AirTNG.Web/Models/VacationProperty.cs

                    Em seguida, vamos ver como é nosso modelo de reserva.

                    Next

                    Modelo de reserva

                    O modelo Reservation está no centro do fluxo de trabalho para este aplicativo.

                    É responsável por manter o controle de:

                    • A VacationProperty a qual está associada.
                    • O User proprietário dessa propriedade de férias (o host). Por meio dessa propriedade, o usuário terá acesso ao número de telefone do host indiretamente.
                    • O Status da reserva
                    Loading Code Sample...
                          
                          
                          AirTNG.Web/Models/Reservation.cs

                          The Reservation Model

                          AirTNG.Web/Models/Reservation.cs

                          Agora que nossos modelos estão prontos, vamos dar uma olhada no controlador que criará reservas.

                          Next

                          Criar uma reserva

                          O formulário de criação de reserva contém apenas um campo: a mensagem que será enviada ao host quando uma de suas propriedades for reservada. O restante das informações necessárias para criar uma reserva é retirado da própria propriedade de férias.

                          Uma reserva é criada com um status padrão ReservationStatus.Pending. Dessa forma, quando o host retorna com uma mensagem accept ou reject, o aplicativo sabe qual reserva atualizar.

                          Loading Code Sample...
                                
                                
                                AirTNG.Web/Controllers/ReservationsController.cs

                                The Reservations Controller

                                AirTNG.Web/Controllers/ReservationsController.cs

                                Em seguida, vamos ver como enviaremos notificações via SMS ao host de aluguel de férias.

                                Enviar mensagem ao host!

                                Notificar o host

                                Quando uma reserva é criada queremos notificar o proprietário da propriedade que alguém está interessado.

                                É aqui que usamos a Twilio C# Helper Library (Biblioteca auxiliar C# da Twilio) para enviar uma mensagem por SMS para o host usando nosso número de telefone da Twilio. Como você pode ver, o envio de mensagens por SMS usando a Twilio leva requer apenas algumas linhas de código.

                                Em seguida, precisamos apenas esperar que o host envie uma resposta por SMS aceitando ou rejeitando a reserva. Então, podemos notificar o hóspede e o host sobre a atualização das informações da reserva.

                                Loading Code Sample...
                                      
                                      
                                      AirTNG.Web/Domain/Reservations/Notifier.cs

                                      Notify the host

                                      AirTNG.Web/Domain/Reservations/Notifier.cs

                                      Agora vamos ver como estamos lidando com as respostas do host.

                                      Next

                                      Tratamento de mensagens recebidas

                                      O controlador Reservations/Handle lida com nossas solicitações recebidas da Twilio e faz quatro coisas:

                                      1. Verifica a reserva pendente do hóspede
                                      2. Atualiza o status da reserva
                                      3. Responde ao host
                                      4. Envia uma notificação ao hóspede
                                      Loading Code Sample...
                                            
                                            
                                            AirTNG.Web/Controllers/ReservationsController.cs

                                            Lidar com uma resposta do host

                                            AirTNG.Web/Controllers/ReservationsController.cs

                                            Vamos ver com mais detalhes como os webhooks da Twilio são configurados para permitir a entrada de solicitações em nosso aplicativo.

                                            Next

                                            Solicitações recebidas da Twilio

                                            No Console da Twilio, você deve configurar o webhook de SMS para chamar o endpoint do seu aplicativo na rota Reservations/Handle.

                                            SMS Webhook

                                            Uma maneira de expor sua máquina de desenvolvimento ao mundo exterior é usando o ngrok. O URL do webhook de SMS no seu número ficaria assim:

                                            http://<subdomain>.ngrok.io/Reservations/Handle
                                            

                                            Uma solicitação recebida da Twilio vem com alguns parâmetros úteis, como um número de telefone from e o body da mensagem.

                                            Usaremos o parâmetro from para procurar o host e verificar se ele/ela tem alguma reserva pendente. Se ele/ela tiver uma mensagem pendente, usaremos o corpo da mensagem para verificar se há "aceitar" e "rejeitar".

                                            Na última etapa, usaremos o TwiML da Twilio como uma resposta para a Twilio para enviar um mensagem por SMS para o hóspede.

                                            Loading Code Sample...
                                                  
                                                  
                                                  AirTNG.Web/Controllers/ReservationsController.cs

                                                  Aceitar ou rejeitar uma reserva

                                                  AirTNG.Web/Controllers/ReservationsController.cs

                                                  Agora que sabemos como expor um webhook para lidar com solicitações da Twilio, vamos ver como geramos o TwiML necessário.

                                                  Gerar alguns TwiML

                                                  Resposta do TwiML

                                                  Depois de atualizar o status da reserva, devemos notificar o host que ele confirmou ou rejeitou a reserva com êxito. Também precisamos retornar uma mensagem de erro se não houver reservas pendentes.

                                                  Se a reserva for confirmada ou rejeitada, enviamos um SMS adicional para o hóspede para notificá‐lo.

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

                                                  Loading Code Sample...
                                                        
                                                        
                                                        AirTNG.Web/Controllers/ReservationsController.cs

                                                        Responder a uma mensagem

                                                        AirTNG.Web/Controllers/ReservationsController.cs

                                                        Parabéns! Você acabou de aprender a automatizar seu fluxo de trabalho com o Twilio SMS.

                                                        Em seguida, vamos ver o que mais podemos fazer com o Twilio C# SDK.

                                                        O que mais posso criar?

                                                        Para onde ir em seguida?

                                                        Se você é um desenvolvedor .NET que trabalha com a Twilio, sabe que temos muito conteúdo excelente aqui no site Docs. Aqui estão apenas algumas ideias para o próximo tutorial:

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

                                                        Encaminhe facilmente os autores da chamada para as pessoas e informações certas com um sistema URA (unidade de resposta audível).

                                                        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! Envie um tweet para nós em @twilio com o que você está criando!

                                                        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