Exercice - Déclencher une fonction Azure avec un événement GitHub

Effectué

Dans cet exercice, vous allez mettre à jour votre fonction en vue d’analyser des informations provenant de la charge utile du webhook GitHub, puis vous allez afficher les résultats.

Mettre à jour votre fonction pour analyser la charge utile du webhook

  1. Dans le portail Azure, accédez à l’application de fonction que vous avez créée précédemment.

  2. Dans le volet Application de fonction, dans le volet de gauche, sous Fonctions, sélectionnez Fonctions. Le volet Fonctions s’affiche pour votre application de fonction.

  3. Sélectionnez la fonction HttpTrigger1 que vous avez créée. Le volet HttpTrigger1 s’affiche pour votre fonction.

  4. Dans le volet du menu de gauche, sélectionnez Code + test sous Développeur. Le volet Code + Test s’affiche pour votre fonction.

  5. Dans le chemin affiché au-dessus du code, dans la liste déroulante, sélectionnez index.js. Le code JavaScript de votre déclencheur s’affiche.

  6. Mettez à jour le code en remplaçant les trois dernières lignes de code dans le corps de la fonction par le code suivant.

    if (req.body.pages[0].title){
        context.res = {
            body: "Page is " + req.body.pages[0].title + ", Action is " + req.body.pages[0].action + ", Event Type is " + req.headers['x-github-event']
        };
    }
    else {
        context.res = {
            status: 400,
            body: ("Invalid payload for Wiki event")
        };
    }
    

    Ce code récupère le type d’événement dans l’en-tête de requête, ainsi que les champs title et action dans le corps du message. Ces informations indiquent que la page a changé, en précisant si elle a été modifiée ou si elle vient d’être créée. Le code construit une réponse qui synthétise l’action. Le JavaScript devrait ressembler à ce qui suit :

    module.exports = async function (context, req) {
        context.log('JavaScript HTTP trigger function processed a request.');
    
        const name = (req.query.name || (req.body && req.body.name));
        const responseMessage = name
            ? "Hello, " + name + ". This HTTP triggered function executed successfully."
            : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";
    
        if (req.body.pages[0].title){
            context.res = {
                body: "Page is " + req.body.pages[0].title + ", Action is " + req.body.pages[0].action + ", Event Type is " + req.headers['x-github-event']
            };
         }
         else {
            context.res = {
                status: 400,
                body: ("Invalid payload for Wiki event")
            };
        }
    }
    
  7. Dans la barre de menus supérieure, sélectionnez Enregistrer.

Déclencher votre fonction Azure avec un événement Gollum

  1. Retournez à votre compte GitHub.

  2. Sélectionnez le référentiel que vous utilisez pour ce module.

  3. Dans la barre de menus supérieure, sélectionnez Paramètres. Le volet Paramètres s’affiche.

  4. Dans la barre latérale , sélectionnez Webhooks. Le volet Webhooks s’affiche.

  5. Sélectionnez Modifier pour votre webhook. Le volet Webhooks/Manage webhook (Webhooks/Gérer un webhook) s’affiche.

  6. Sélectionnez l’onglet Recent Deliveries (Livraisons récentes).

  7. Sélectionnez l’entrée de la dernière livraison (en haut) en sélectionnant son bouton de sélection (...).

  8. Sélectionnez Redeliver (Relivrer).

  9. Dans la boîte de dialogue Redeliver payload? (Relivrer la charge utile ?) qui s’affiche, sélectionnez Yes, redeliver this payload (Oui, relivrer cette charge utile). Cette action simule une nouvelle modification de votre page Wiki.

  10. Sélectionnez l’entrée de la dernière livraison (en haut) (redelivery (nouvelle livraison)) en sélectionnant son bouton de sélection (...).

  11. Sélectionnez l’onglet Response (Réponse). Vous allez voir comment le webhook a déclenché votre fonction, qui a ensuite analysé les informations et envoyé une réponse similaire au texte suivant :

    Page is Home, Action is edited, Event Type is gollum