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á:
- Um host cria uma listagem de propriedades de férias
- Um hóspede solicita uma reserva para um estabelecimento
- O host recebe um SMS notificando‐o sobre a solicitação de reserva. O host pode aceitar ou rejeitar a reserva
- O hóspede é notificado se uma solicitação foi rejeitada ou aceita
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:
Pronto para começar? Clique com ousadia no botão logo após esta frase.
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.
Em seguida, vamos dar uma olhada no modelo de propriedade de férias.
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.
Em seguida, vamos ver como é nosso modelo de reserva.
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
Agora que nossos modelos estão prontos, vamos dar uma olhada no controlador que criará reservas.
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.
Em seguida, vamos ver como enviaremos notificações via SMS ao host de aluguel de férias.
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.
Agora vamos ver como estamos lidando com as respostas do host.
Tratamento de mensagens recebidas
O controlador Reservations/Handle
lida com nossas solicitações recebidas da Twilio e faz quatro coisas:
- Verifica a reserva pendente do hóspede
- Atualiza o status da reserva
- Responde ao host
- Envia uma notificação ao hóspede
Vamos ver com mais detalhes como os webhooks da Twilio são configurados para permitir a entrada de solicitações em nosso aplicativo.
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
.
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.
Agora que sabemos como expor um webhook para lidar com solicitações da Twilio, vamos ver como geramos o TwiML necessário.
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.
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.
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!
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.