Créer une Azure functions pour envoyer des notifications sur Slack

Auteur du billet de blog : Nicolas Hilaire - Neotech Solutions

Nicolas Hilaire

Consultant .NET
  Publié le lundi 3 octobre 2016

Artisan logiciel particulièrement intéressé par les technologies .NET. Polyvalent et curieux, je suis néanmoins à l'écoute des autres technologies du marché. MVP (Microsoft Most Valuable Professional) de 2007 à 2014, je suis également auteur d'un ouvrage pour apprendre le C#, à destination des débutants et de plusieurs MOOCs sur le C#, Windows Phone ou ASP.NET MVC...

Chez Neotech-Solutions, nous avons des blogs http://www.neotech-solutions.fr/blogs/. Et comme beaucoup d’autres, nous utilisons slack pour la communication interne. Mieux qu’un flux RSS, je vais vous montrer comment les utilisateurs de slack sont avertis de la parution d’un nouveau billet de blog, et ceci grâce à Azure Functions.

 

Azure functions c’est quoi ?

On peut dire que c’est la nouvelle mouture des web jobs. L’idée est qu’un bout de code (une « function ») soit démarré suite à un événement. Le bout de code est hébergé dans le cloud, sans avoir à se soucier de l’hébergement, ni de la scalabilité.

Pour créer une Azure Functions, allez dans le portail azure et cliquez sur New => Compute => Function App :

 

 

Renseignez les divers éléments, puis cliquez sur create :

 

 

Allez sur le blade de votre function, et cliquez sur New Function :

 

 

Vous pouvez choisir un template de création de base, ainsi qu’un langage. Pour ma part je vais choisir bien sûr le C# et un timer trigger, qui permettra à ma fonction de se lancer à intervalles réguliers :

 

 

Donnez un nom à votre fonction ainsi qu’une récurrence :

 

 

Ici ma fonction s’exécutera toutes les 8h. Je vous renvoie à la documentation https://azure.microsoft.com/en-us/documentation/articles/functions-bindings-timer/ pour paramétrer correctement votre cron.

 

Je vais aussi avoir besoin d’accéder au storage account de l’azure functions ; on peut récupérer les clés d’accès et la chaîne de connexion dans les paramètres :

 

 

Ajouter l'intégration à Slack

 

Créons maintenant un web hook entrant slack afin de pouvoir envoyer des données depuis ma fonction Azure. Le JSON à envoyer aura cette tête :

 

 

Allez dans l’ajout d’applications Slack et cherchez incoming webhooks :

 

 

Puis cliquez sur Add Configuration :

 

 

Il faut choisir un channel et ajouter l’intégration :

 

 

Vous obtenez en retour une url où poster, du type https://hooks.slack.com/services/xxx/yyyy/zzzz

 

Du code

 

Il n’y a plus qu’à écrire la fonction Azure :

 

 

Et voilà le résultat :

 

 

Qu’y a-t’il de notable dans le code ?

  • On référence une assembly du Framework .NET avec #r.
  • La méthode Run peut être mise en asynchrone, comme je l’ai fait ici

Sinon, l’algo est simple. Je récupère la liste des billets depuis le flux RSS. Si c’est un nouveau billet alors j’envoie une notification ; puis je stocke cette information dans une azure table (celle qui est associée à l’azure function) afin de me rappeler que j'ai déjà traité ce billet, sinon je ne fais rien.

Et voilà :).

 

Conclusion

Nous avons vu dans ce billet comment exécuter un code à intervalle régulier dans le cloud, sans se soucier de l'hébergement ou des serveurs ; et tout ça très simplement grâce à Azure Functions.

 

Commentaires