Automação do fluxo de trabalho com Java e Servlets
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 Java e Servlets para encontrar e reservar propriedades de férias, chamado provisoriamente 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.
Gerenciamento de usuários e sessões
Para que esse fluxo de trabalho funcione, precisamos ter um modelo de usuário e permitir logins.
Em seguida, vamos dar uma olhada no modelo de propriedade de férias.
Modelo de propriedade de férias
Para construir uma verdadeira empresa de aluguel de férias, precisaremos de uma maneira de criar uma lista de aluguel de propriedade.
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 imageUrl
.
O modelo tem duas associações implementadas: há muitas reservas nele e muitos usuários podem fazer essas reservas.
Em seguida, vamos analisar o modelo de reserva muito importante.
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
ourejected
Em seguida, mostraremos como nosso novo aplicativo criará uma nova reserva.
Criar uma reserva
O formulário de criação de reserva contém apenas um campo: a mensagem que será enviada ao host ao reservar uma de suas propriedades.
O restante das informações necessárias para criar uma reserva é retirado do usuário conectado e da relação entre uma propriedade e seu proprietário. Nosso Repository
genérico básico é responsável pelo manuseio da inserção da entidade.
Uma reserva é criada com um status padrão pending.
que permite que nosso aplicativo reaja facilmente a um host que rejeite ou aceite uma solicitação de reserva.
Agora, vamos ver como o sistema notificará um host
quando uma nova solicitação de reserva for enviada.
Notificar o host
Quando uma reserva é criada para uma propriedade, queremos notificar o proprietário de que alguém fez uma reserva.
Usamos uma abstração chamada SmsNotifier
que, nos bastidores, usa outra abstração chamada Sender
. Aqui é onde usamos a API REST da Twilio para enviar uma mensagem SMS ao host usando seu número de telefone da Twilio. É isso mesmo - é tão simples quanto enviar um SMS com a Twilio.
A próxima etapa mostra como lidar com um host aceitando ou rejeitando uma solicitação - vamos continuar.
Tratamento de mensagens recebidas
Vamos dar uma olhada mais detalhada no servlet ReservationConfirmation
. Esse servlet lida com nossa solicitação da Twilio recebida e faz três coisas:
- Verifica se há uma reserva pendente do usuário de entrada.
- Atualiza o status da reserva.
- Responde ao host e envia notificação ao hóspede.
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-confirmation:
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-confirmation
Uma solicitação recebida da Twilio vem com alguns parâmetros úteis, incluindo o número de telefone From
e a mensagem Body
.
Usaremos o parâmetro From
para pesquisar o host e verificar se ele tem alguma reserva pendente. Se ele fizer isso, usaremos o corpo da mensagem para verificar se há um "aceitar" ou "rejeitar".
Por fim, atualizamos o status da reserva e usamos a abstração SmsNotifier
para enviar um SMS ao hóspede com as notícias.
Em seguida, vamos ver como responderemos à Twilio.
Resposta do TwiML
Por fim, usaremos o TwiML da Twilio como resposta ao servidor da Twilio, instruindo‐o a enviar uma mensagem de notificação via SMS ao host.
Usaremos o verbo Message
para instruir o servidor da Twilio de que ele deve enviar a mensagem.
Parabéns! Você acabou de aprender a automatizar seu fluxo de trabalho com o Twilio SMS.
Em seguida, vamos ver alguns outros recursos interessantes que você pode querer adicionar ao seu aplicativo.
Para onde ir em seguida?
Gosta da Twilio? Gosta de Java? Você está no lugar certo. Aqui estão alguns outros excelentes tutoriais:
SMS and MMS notifications (Notificações de SMS e MMS)
Crie um sistema de notificação de servidor que alertará todos os administradores por meio de SMS quando ocorrer uma interrupção no servidor.
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! 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.