Azure – Notificações Utilizando Webhooks (com Zapier e Twilio)

Durante meus testes / aprendizado no mundo Azure, uma das coisas que eu achei mais interessante foi a possibilidade de utilizar Webhooks, possbilitando diversas customizações na forma em que podemos ser alertados sobre algum evento em nossos serviços no Azure (vídeo exemplo ao final do post).

Da Wikipedia:

Um webhook em desenvolvimento Web é um método de argumentar ou alterar o comportamento de uma página da Web, ou aplicação da Web, com callbacks personalizados. Estas ligações de retorno poderão ser mantidas, modificadas, e geridas por terceiros e responsáveis pelo desenvolvimento que poderão não necessariamente estar afiliados com a origem do site da Web ou aplicação. O termo “webhook” foi inventado por Jeff Lindsay em 2007 a partir do termo de programação de computador Hook.[1]

Ou seja: em determinado evento de meu serviço, em real-time, o Azure irá fazer uma chamada http post para alguma URL (utilizando JSON). A partir deste momento, as possibilidades ficam interessantes.

Vamos para aplicabilidade em um cenário real: um website rodando com auto-scale configurado (Scale-Out), entre 1 e 3 instancias. Regra: se a CPU permanecer acima de 70% por um período de 10 minutos, aumento automático de 1 instancia. Da mesma forma, o oposto (CPU inferior a 70% por determinado período de tempo, diminuição automática de número de instancias – “Scale-In”). Para cada evento “Scale-Out” ou “Scale-In”, gostaria de receber uma ligação de voz para meu celular, com uma mensagem personalizada, fornecendo alguns detalhes (por exemplo: Serviço XYZ Escalou de 1 para 2 Instâncias) ou uma mensagem SMS.

Para conseguir criar este fluxo de maneira relativamente fácil, precisamos de outros dois serviços: Twilio e Zappier, Gostaria de ressaltar que são dois serviços independentes do Azure, sendo duas empresas diferentes. Twilio tem sede em San Francisco/CA, e fornece serviços de mensageria, voz, vídeo e autenticação através de suas API´s 100% cloud based. Já o Zapier fornece componentes (conhecidos como “Zaps”) para integração de aplicações web (ao invés de fazer manualmente chamadas para API´s, este serviço fornece uma abstração de todo esse processo, sendo necessario somente definir os passos necessários e preencher alguns campos).

Quanto ao custo: o Twilio fornece um trial, com crédito de U$ 15.00. O Zapier oferece um plano grátis, mas com limitação de 2 steps por “Zap”. Para fins de teste, são suficientes. Mesmo nos planos pagos, eu acho que vale a pena. É possível agregar um valor imenso aos seus serviços e aplicações por um custo acessível.

Implementação:

  • Crie sua conta no Zapier e Twilio
  • Faça login no Zapier, clique em “Make a Zap”
  • Escolha um nome para o Zap. Na configuração da trigger, opção “Choose App“, escolha “WebHook“:

1 - Azure-Creating-Zapier-Twilio-Webhook

 

  • Em “Choose Trigger“, selecione “Catch Hook“:

2 - Azure-Creating-Zapier-Twilio-Webhook

3 - Azure-Creating-Zapier-Twilio-Webhook

  • Test this Step: obrigatório, caso contrário seu Zap não irá funcionar. Será necessário fazer um HTTP POST para URL do Webhook, utilizando o mesmo payload do passo anterior. No meu caso, eu utilizei o Fiddler para fazer esta chamada (você pode usar qualquer outra ferramenta, como curl por exemplo):

4 - Azure-Creating-Zapier-Twilio-Webhook

5 - Azure-Creating-Zapier-Twilio-Webhook

  • Feito o HTTP POST com sucesso, você será notificado na tela pelo Zapier. A URL utilizada será necessária no último passo de configuração (Azure)
  • O próximo passo é configurar a Action resultante da Trigger recém criada. É neste momento em que o Zap fará a chamada para a API do Twilio:

6 - Azure-Creating-Zapier-Twilio-Webhook

  • Como citado anteriormente, é possível fazer o envio de SMS ou efetuar uma ligação. Escolha “Call Phone“.

7 - Azure-Creating-Zapier-Twilio-Webhook

  • Será necessário fazer autorização do Zap para ter acesso a API. Basta fornecer a “Account SID” e “Auth Token“. Estas informações são encontradas no Twilio Console, seção “Account-> Account Settings“:

8 - Azure-Creating-Zapier-Twilio-Webhook

9 - Azure-Creating-Zapier-Twilio-Webhook

  • O passo seguinte é editar o Template. É neste local onde pode ser configurada a mensagem de voz que você irá receber. Será necessário informar o número telefônico de origem (que é criado durante o cadastro no Twilio), o número de destino (com código do país) e formatar a mensagem. Para fins de exemplo, eu estou utilizando apenas o campo “Description“. Você pode fazer qualquer combinação de campos a fim de deixar o mais personalizado possível.

10 - Azure-Creating-Zapier-Twilio-Webhook

  • Teste este passo, marque o Zap como “On” e finalize:

11 - Azure-Creating-Zapier-Twilio-Webhook

  • A última configuração necessária (e a mais fácil), é no Azure. No blade de configuração do Scale-Out, em Notifications, insira a URL do Zap criado.

12 - Azure-Creating-Zapier-Twilio-Webhook

 

Abaixo criei um vídeo com os passos acima e seu respectivo resultado:

 

Dúvidas? Me contate! Até a próxima.

[ ]´s