Tutoriel: créer un back-end d’API sans serveur pour Slack


Les backends Webhook sont un cas d’utilisation populaire pour les fonctions sans serveur. Les offres FaaS (Functions-as-a-service) permettent de fournir relativement facilement un point de terminaison HTTP qui héberge la logique Webhook, ce qui peut être aussi simple que d’envoyer un e-mail à quelque chose d’aussi divertissant que de répondre avec des GIF amusants!

Dans ce tutoriel, nous explorerons funcy – un backend Webhook sans serveur qui est une version réduite de l’impressionnant Giphy pour Slack. L’application (originale) Giphy Slack renvoie un tas de GIF pour un terme de recherche, et l’utilisateur peut en choisir un. Funcy le peaufine un peu en renvoyant simplement une (seule) image aléatoire pour un mot-clé de recherche en utilisant le API aléatoire Giphy.

Cet article de blog fournit un guide étape par étape pour déployer l’application sur Azure Functions et la connecter à votre espace de travail Slack. Le code est disponible sur GitHub pour vous de grok.

Aperçu

funcy est construit comme une commande Slash dans Slack. En tant qu’utilisateur, vous pouvez l’invoquer depuis votre espace de travail Slack en utilisant /funcy . Ceci, à son tour, appelle notre Webhook déployé sur Fonctions Azure – qui n’est rien d’autre qu’un tas de code Java. Il appelle l’API Giphy Random et renvoie le résultat à l’utilisateur.

Par exemple, en l’invoquant depuis votre espace de travail Slack à l’aide de /funcy serverless renverra un GIF aléatoire.

Les sections à venir vous guideront à travers les étapes suivantes:

  • Conditions préalables
  • Configuration et configuration de Slack
  • Déploiement sur Azure Functions

Conditions préalables

Avant de continuer, assurez-vous d’avoir les éléments suivants prêts – cela ne devrait pas prendre trop de temps

Veuillez noter votre clé API GIPHY car vous l’utiliserez plus tard

Configurer Slack

Veuillez noter que les instructions de cette section ont été adaptées du Documentation Slack.

Créer une application Slack

Connectez-vous à votre Espace de travail Slack. Commence par créer une nouvelle application Slack.

Créer une commande Slash

Une fois que vous avez terminé de créer l’application, accédez à la page des paramètres de votre application, puis cliquez sur le bouton Commandes Slash fonction dans le menu de navigation.

Vous serez présenté avec un bouton marqué Créer une nouvelle commande, et lorsque vous cliquez dessus, vous verrez un écran où il vous sera demandé de définir votre nouveau Commande Slash avec les informations requises.

Entrez les informations requises. Veuillez noter que le URL de la demande est celui où vous entrerez le point de terminaison HTTP de la fonction qui sera disponible après son déploiement. Vous pouvez utiliser une URL factice comme espace réservé juste pour le moment, par exemple https://temporary.com:4242

Une fois que vous avez terminé, appuyez sur sauver pour finir.

Installez l’application sur votre espace de travail

Une fois que vous avez créé la commande Slash, accédez à la page des paramètres de votre application, cliquez sur le bouton Informations de base fonction dans le menu de navigation, choisissez Installez votre application dans votre espace de travail et cliquez Installer l’application sur l’espace de travail. Cela installera l’application sur votre espace de travail Slack pour tester votre application et générer les jetons dont vous avez besoin pour interagir avec l’API Slack.

Dès que vous avez terminé d’installer l’application, le Identifiants de l’application apparaîtra sur la même page. Vous devez saisir votre Secret de signature Slack De là

Notez le secret de signature de votre application car vous l’utiliserez plus tard

Déployer sur Azure

Commencez par cloner le référentiel GitHub et accédez au répertoire de l’application

le pom.xml Le fichier contient les attributs suivants utilisés par le plug-in Azure Functions Maven – nom de l’application (functionAppName), Région (functionAppRegion) et groupe de ressources (functionResourceGroup). Il a des valeurs par défaut pour les paramètres ci-dessus, vous pouvez donc choisir de continuer à les utiliser si vous le souhaitez.

Veuillez noter que le nom de l’application doit être unique sur Azure.

Si vous souhaitez modifier les valeurs, veuillez consulter cet extrait de pom.xml qui met en évidence le qui doivent être mis à jour

Le nom de la fonction n’est pas le même que celui de l’application (configuré via pom.xml) et est spécifié à l’aide du @FunctionName annotation dans le code Java de la fonction – dans ce cas, le nom est funcy.

Vous pouvez maintenant créer la fonction et la déployer sur Azure

Les résultats d’un déploiement réussi ressembleront à ceci

Utilisez Azure CLI pour répertorier votre application Functions

Vous devriez voir une sortie JSON

Vous devriez pouvoir voir la fonction (sous Function App menu) dans Portail Azure

Une fois le déploiement réussi, la fonction doit être prête à répondre aux demandes et accessible via HTTP (s) au point de terminaison suivant – https://.azurewebsites.net/api/

Pour une application nommée funcyapp avec une fonction appelée funcy, le point final serait

Tu y es presque!

Mettez à jour votre application Azure Functions

Maintenant que l’application Azure Functions est opérationnelle, vous devez la mettre à jour pour amorcer le Giphy API Key et Slack Signing Secret en tant que variables d’environnement.

par exemple.

Veuillez consulter la documentation sur Comment gérer une application de fonction dans le portail Azure pour plus de détails.

Mettre à jour l’application Slack

Accédez à la page des paramètres de votre application, puis cliquez sur le bouton Commandes Slash fonction dans le menu de navigation. Modifiez la commande et remplacez la valeur du URL de la demande champ avec votre point de terminaison HTTP (s) de fonction

funcy Temps!

Depuis votre espace de travail, appelez la commande

/funcy

Puisque vous ne pouvez pas vous tromper avec les chats, essayez

/funcy cat

Ne vous inquiétez pas si vous voyez un Timeout error depuis Slack après la première invocation. Cela est dû au problème de “ démarrage à froid ” où la fonction prend quelques secondes pour démarrer mais Slack attend une réponse dans 3 secondes. Réessayez simplement (plusieurs fois) et tout devrait bien se passer.

Ressources

Les ressources mentionnées ci-dessous ont été utilisées spécifiquement pour développer l’application de démonstration présentée dans cet article de blog, vous êtes donc susceptible de les trouver également utiles!

J’espère vraiment que vous avez apprécié et appris quelque chose de cet article!

Close Menu