18.5 Erstellen Sie Ihr Microsoft Azurblau-Projekt

18.5.1 Azurblauer Ereignis-Hub-Funktionen

Azurblaue Funktionen ermöglichen es Ihnen, kleine Codeabschnitte (so genannte Funktionen) auszuführen, ohne sich um die Anwendungsinfrastruktur zu sorgen. Mit Azurblauen Funktionen bietet die Cloud-Infrastruktur alle aktuellen Server, die Sie benötigen, um Ihre Anwendung im Maßstab laufen zu lassen.

Eine Funktion wird durch einen bestimmten Typ von Ereignis ausgelöst . Zu den unterstützten Auslösern gehören die Reaktion auf Datenänderungen, die Reaktion auf Nachrichten (z. B. Ereignis-Hubs), die zeitliche Ausführung oder eine HTTP-Anforderung.

Azurne Functions ist ein serverlloser Compute-Dienst, mit dem Sie Ereignis-gesteuerten Code ausführen können, ohne explizit eine Infrastruktur bereitstellen oder verwalten zu müssen.

Azurblauer Ereignis Hubs integriert mit Azurblauen Funktionen für eine serverllose Architektur.

18.5.2 Visual Studio-Code und Anmeldung in Azurblase öffnen

Visual Studio Code macht es einfach…

  • Definieren und Binden von Blaulfunktionen an Ereignis-Hubs
  • lokal
  • bereitstellen in Azurblau
  • Ausführung der Remote-Protokollfunktion

Visual Studio-Code öffnen

Um Visual Studio-Code zu öffnen, geben Sie Visual in die Suche Ihres Betriebssystems ein (Spotlight-Suche auf OSX, Suche in Windows-Taskleiste). Wenn Sie ihn nicht finden, müssen Sie die unter Übung 0 - Voraussetzungenbeschriebenen Schritte wiederholen.

visual-studio-code-icon.png

Melden Sie sich bei

Wenn Sie sich mit Ihrem Blue-Account anmelden, das Sie früher bei Übung 0 - Voraussetzungenregistriert haben, können Sie mit Visual Studio-Code alle Ereignis Hub-Ressourcen finden und binden.

Klicken Sie in Visual Studio-Code auf das Symbol azurblauer . Wenn Sie diese Option nicht haben, ist bei der Installation der erforderlichen Erweiterungen möglicherweise ein Fehler aufgetreten.

Wählen Sie dann Anmelden in Azurblau:

3-01-vsc-open.png

Sie werden zu Ihrem Browser weitergeleitet, um sich anzumelden. Denken Sie daran, das blaue Konto auszuwählen, das Sie früher registriert haben.

3-02-vsc-pick-account.png

Wenn der folgende Bildschirm im Browser angezeigt wird, sind Sie bei Visual Code Studio angemeldet:

3-03-vsc-login-ok.png

Zurück zu Visual Code Studio (Sie sehen den Namen Ihres Abonnements, z. B. Abonnement 1):

3-04-vsc-angemeldet-in.png

18.5.3 Erstellen eines Blauen Projekts

Wenn Sie den Mauszeiger über Abonnement 1 bewegen, wird ein Menü über dem Abschnitt angezeigt, wählen Sie Neues Projekt erstellen…:

3-05-vsc-create-project.png

Wählen Sie einen lokalen Ordner Ihrer Wahl aus, um das Projekt zu speichern, und klicken Sie auf Auswählen:

3-06-vsc-select-folder.png

Sie können jetzt den Assistenten zur Projekterstellung aufrufen. Wählen Sie JavaScript als Sprache für Ihr Projekt aus:

3-07-vsc-select-language.png

Wählen Sie den Azurblauen Ereignis-Hub-Auslöser als erste Funktionsvorlage Ihres Projekts aus:

3-08-vsc-function-template.png

Geben Sie einen Namen für Ihre Funktion ein, verwenden Sie das folgende Format ldap-aep-Ereignis-Hub-Trigger und drücken Sie die Eingabetaste:

3-09-vsc-function-name.png

Wählen Sie Neue lokale App-Einstellung erstellen:

3-10-vsc-function-local-app-setting.png

Wählen Sie einen Ereignis-Hub-Namensraum aus. Sie sollten den Ereignis-Hub sehen, den Sie in Übung 2 definiert haben. In diesem Beispiel ist der Ereignis Hub-Namensraum mmeewis-aep-enable:

3-11-vsc-function-select-Namensraum.png

Wählen Sie Ihren Ereignis-Hub aus. Sie sollten den Ereignis-Hub sehen, den Sie in Übung 2 definiert haben. In meinem Fall ist dies mmeewis-aep-enable-Ereignis-Hub:

3-12-vsc-function-select-eventhub.png

Wählen Sie RootManageSharedAccessKey als Ereignis-Hub-Richtlinie aus:

3-13-vsc-function-select-eventhub-policy.png

Geben Sie Standard ein:

3-14-vsc-eventhub-consumer-group.png

Wählen Sie Hinzufügen zum Arbeitsbereich zum Öffnen des Projekts aus:

3-15-vsc-project-add-to-workspace.png

Nachdem Sie das Projekt erstellt haben, klicken Sie auf index.js , um die Datei im Editor zu öffnen:

3-16-vsc-open-index-js.png

Die Nutzlast, die Adobe Experience Platform an Ihren Ereignis-Hub sendet, beinhaltet Segment-IDs:

[{
"segmentMembership": {
"ups": {
"ca114007-4122-4ef6-a730-4d98e56dce45": {
"lastQualificationTime": "2020-08-31T10:59:43Z",
"status": "realized"
},
"be2df7e3-a6e3-4eb4-ab12-943a4be90837": {
"lastQualificationTime": "2020-08-31T10:59:56Z",
"status": "realized"
},
"39f0feef-a8f2-48c6-8ebe-3293bc49aaef": {
"lastQualificationTime": "2020-08-31T10:59:56Z",
"status": "realized"
}
}
},
"identityMap": {
"ecid": [{
"id": "08130494355355215032117568021714632048"
}]
}
}]

Unsere Ereignis Hub-Funktion fügt den Segmentnamen für jedes Segment in der AEP-Antwortnutzlast hinzu. Dazu ruft unsere Azure-Funktion eine Adobe-IO-Laufzeitfunktion auf, um Segmentdefinitionen von Adobe Experience Platform abzurufen. Diese Laufzeitfunktion gibt Segmentdefinitionen zurück, deren Segmentnamen Beginn mit all und Ihrem ldap heißen. Bei den Segmenten, denen alle vorangestellt werden, handelt es sich um Standardsegmente, die von Ihrer Adobe Experience Platform-Umgebung verwendet werden, z. B. alle - Homepage-Besucher.

Die Antwort, die Sie in Visual Studio-Code erhalten werden, wird einige Segmente haben, die Beginn mit allen, es sollte auch Ihr ldap - Luma Sports Fan Segment. Andernfalls ist die Benennung des Segments wahrscheinlich nicht korrekt:

{
  "segments": {
    "39f0feef-a8f2-48c6-8ebe-3293bc49aaef": {
      "description": "mmeewis - Citi Signal Sports Fan",
      "name": "mmeewis - Citi Signal Sports Fan"
    },
    "a77d96aa-d166-43b1-baba-005d35261b8a": {
      "description": "all - Interest in Nadia Elements Shell",
      "name": "all - Interest in Nadia Elements Shell"
    },
    "ca114007-4122-4ef6-a730-4d98e56dce45": {
      "description": "all - Homepage Visitors",
      "name": "all - Homepage Visitors"
    }
  }
}

Ersetzen Sie den Code in der Datei "index.js"des Visual Studio-Codes durch den folgenden Code. Dieser Code wird jedes Mal ausgeführt, wenn Adobe Experience Platform Echtzeit-CDP Segmentqualifikationen an Ihr Ereignis Hub-Ziel sendet. In unserem Beispiel geht es im Code nur darum, die empfangene Nutzlast anzuzeigen und zu erhöhen. Aber Sie können sich jede Art von Funktion vorstellen, um Segmentqualifikationen in Echtzeit zu verarbeiten.

// Marc Meewis - Solution Consultant Adobe - 2020
// Adobe Experience Platform Enablement - Module 18

const request = require('request');

const sandbox = "--module18sandbox--";
const ldap = "--demoProfileLdap--";
const segmentDefAPIEndpoint = "--jwtSegment--";

// Main function
// -------------
// This azure function is fired for each segment activated to the Adobe Exeperience Platform Real-time CDP Azure 
// Eventhub destination
// This function enriched the received segment payload with the name fo the segment. 
// You can replace this function with any logic that is require to process and deliver
// Adobe Experience Platform segments in real-time to any application or platform that 
// would need to act upon an AEP segment qualiification.
// 

module.exports = async function (context, eventHubMessages) {

    return new Promise (function (resolve, reject) {

        // fetch aep segment definitions first

        getAEPSegmentInfo().then(function(segments) {
        
            eventHubMessages.forEach((message, index) => {

                // process each eventhub message

                var segmentKeys = Object.keys(message.segmentMembership.ups);

                for (var segmentKey of segmentKeys) {

                    // lookup the segment-id in the segment definitions and add the 
                    // the segment name to the eventhub payload

                    var segmentContent = "";

                    if (segments.hasOwnProperty(segmentKey)) {
                        segmentName = segments[segmentKey].name;
                    }
                    else {
                        segmentName = "Not Found";
                    }

                    // add the segment name to the payload

                    message.segmentMembership.ups[segmentKey].segmentName = segmentName;
                    
                }

            });

            // output the enriched Adobe Experience Platform payload send to Azure Eventhub

            context.log('Message : ' + JSON.stringify(eventHubMessages, null, 2));

            resolve();

        });

    });    

};


// helper functions

function extractSegmentDenitions(segments, segmentdata) {

    for (var s=0; s < segmentdata.length; s++) {
        var segmentDef = segmentdata[s];

        var segment = {};

        segment.name = segmentDef.name;
        segment.description = "";
        if (segmentDef.hasOwnProperty("description")) {
            segment.description = segmentDef.description;
        }

        segments[segmentDef.id] = segment;

    }

    return segments;

}



async function getAEPSegmentDefinitions(segmentFilter, segments) {

    return new Promise (function (resolve, reject) {

        const allSegmentsAPICall = segmentDefAPIEndpoint + "?segmentFilter=" + segmentFilter + "&sandboxId=" + sandbox;

        var options = {
            method:'get',
            url:allSegmentsAPICall
        };
        
        request(options, function (error, response, body) {
            if (error) 
                reject(error);
            else {
                
                segmentsResponse = JSON.parse(body)

                segments = extractSegmentDenitions(segments, segmentsResponse.segmentData.segments);

                resolve(segments);
            }

        });

    });

}

async function getAEPSegmentInfo() {

    var segments = {};

    return new Promise (async function (resolve, reject) {

        segments = await getAEPSegmentDefinitions("all", segments);

        segments = await getAEPSegmentDefinitions(ldap, segments);
                
        resolve(segments);

    });

}

Nachdem Sie den unten stehenden Code in die Datei "index.js"eingefügt haben, müssen Sie Zeile 4 entsprechend Ihrer LDAP ändern (in diesem Beispiel mmeewis):

const ldap = "mmeewis";

Das Ergebnis sollte wie folgt aussehen:

3-16b-vsc-edit-index-js.png

18.5.4 Blaues Projekt ausführen

Jetzt ist es an der Zeit, Ihr Projekt auszuführen. In diesem Stadium werden wir das Projekt nicht in Azurblau. Es wird lokal im Debug-Modus ausgeführt. Wählen Sie das Symbol Ausführen und klicken Sie auf den grünen Pfeil. Wenn Sie Ihr Projekt zum ersten Mal im Debug-Modus ausführen, müssen Sie ein Azurblauer Datenspeicherung-Konto anhängen, klicken Sie auf Datenspeicherung auswählen Konto.

3-17-vsc-run-project.png

Wählen Sie in der Liste der Datenspeicherung-Konten das Konto aus, das Sie im Rahmen von 18.1.4 Einrichten Ihres Blue Datenspeicherung-Kontoserstellt haben. Ihr Datenspeicherung-Konto trägt den Namen ldapaepstorage, z. B.: mmeewisaepstorage.

3-22-vsc-select-Datenspeicherung-account.png

Ihr Projekt ist jetzt in Betrieb und listet Ereignisse im Ereignis Hub auf. In der nächsten Übung zeigen Sie das Verhalten auf der Website von Citi Signal, das Sie für diese Segmente qualifiziert. Als Ergebnis erhalten Sie eine Segmentqualifizierungs-Nutzlast im Terminal Ihrer Ereignis Hub-Auslösefunktion:

3-23-vsc-application-started.png

18.5.5 Blaues Projekt beenden

Um Ihr Projekt zu beenden, wählen Sie die Registerkarte Terminal aus, klicken Sie auf das Terminalfenster und drücken Sie unter OSX auf CMD-C oder unter Windows STRL-C :

3-24-vsc-application-stop.png

Nächster Schritt: 18.6 End-to-End-Szenario

Zurück zu Modul 18

Zurück zu allen Modulen

Auf dieser Seite