18.5 Criar o Projeto do Microsoft Azure

18.5.1 Familiarizar-se com as funções do Hub de Eventos do Azure

As funções do Azure permitem executar pequenos pedaços de código (chamadas de funções) sem se preocupar com a infraestrutura do aplicativo. Com as funções do Azure, a infraestrutura de nuvem fornece todos os servidores atualizados necessários para manter o aplicativo em execução em escala.

Uma função é acionada por um tipo específico de evento. Os acionadores suportados incluem a resposta a alterações nos dados, a resposta a mensagens (por exemplo, Hubs de Evento), a execução em um agendamento ou o resultado de uma solicitação HTTP.

As funções do Azure são um serviço de computação sem servidor que permite executar código acionado por evento sem precisar provisionar ou gerenciar explicitamente a infraestrutura.

Os Hubs de Evento do Azure se integram às Funções do Azure para uma arquitetura sem servidor.

18.5.2 Abrir o Código do Visual Studio e Logon no Azure

Visual Studio Code facilita…

  • definir e vincular funções do Azure a hubs de Evento
  • teste local
  • implantar no Azure
  • execução da função de registro remoto

Abrir código do Visual Studio

Para abrir o código do Visual Studio, insira visual na pesquisa do seu sistema operacional (pesquisa em destaque no OSX, na Barra de tarefas do Windows). Se não o encontrar, é necessário repetir as etapas descritas em Exercício 0 - Pré-requisitos.

visual-studio-code-icon.png

Logon no Azure

Ao efetuar logon com sua conta do Azure que você usou para se registrar no Exercise 0 - Pré-requisitos, o Código do Visual Studio permitirá que você localize e vincule todos os recursos do Hub do Evento.

Clique no ícone do Azure no Código do Visual Studio. Se você não tiver essa opção, algo pode ter dado errado com a instalação das extensões necessárias.

Em seguida, selecione Fazer logon no Azure:

3-01-vsc-open.png

Você será redirecionado ao seu navegador para fazer logon. Lembre-se de selecionar a conta do Azure que você usou para se registrar.

3-02-vsc-pick-account.png

Quando vir a seguinte tela no seu navegador, você está conectado com o Visual Code Studio:

3-03-vsc-login-ok.png

Retorne ao Visual Code Studio (você verá o nome da sua subscrição do Azure, por exemplo, Azure subscrição 1):

3-04-vsc-logged-in.png

18.5.3 Criar um projeto do Azure

Ao passar o mouse sobre o Azure subscrição 1, um menu será exibido acima da seção, selecione Criar novo projeto…:

3-05-vsc-create-project.png

Selecione uma pasta local de sua escolha para salvar o projeto e clique em Selecionar:

3-06-vsc-select-folder.png

Agora você inserirá o assistente de criação de projeto. Selecione Javascript como o idioma do seu projeto:

3-07-vsc-select-language.png

Selecione o acionador do Hub de Eventos do Azure como o primeiro modelo de função do seu projeto:

3-08-vsc-function-template.png

Digite um nome para sua função, use o seguinte formato ldap-aep-evento-hub-trigger e pressione enter:

3-09-vsc-function-name.png

Selecione Criar nova configuração de aplicativo local:

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

Selecione uma namespace de hub de evento, você deverá ver o Hub de Eventos definido no Exercício 2. Neste exemplo, a namespace do Hub Evento é mmeewis-aep-ativlement:

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

Selecione o Hub do Evento, você deverá ver o Hub do Evento definido no Exercício 2. No meu caso, esse é mmeewis-aep-ativlement-evento-hub:

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

Selecione RootManageSharedAccessKey como sua política de Hub de Eventos:

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

Digite para usar o Padrão:

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

Selecione Adicionar à área de trabalho sobre como abrir seu projeto:

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

Depois que o projeto for criado, clique em index.js para que o arquivo seja aberto no editor:

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

A carga enviada pela Adobe Experience Platform para seu Hub Evento incluirá as IDs do segmento:

[{
"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"
}]
}
}]

Nossa função de Hub de Eventos adicionará o nome do segmento para cada um dos segmentos na carga de resposta AEP. Para fazer isso, nossa função do Azure chamará uma função de Adobe IO Runtime para buscar definições de segmento do Adobe Experience Platform. Essa função de tempo de execução retornará definições de segmento das quais o segmento nomeia start com tudo e seu ldap. Os segmentos prefixados com todos são segmentos padrão usados pelo seu ambiente Adobe Experience Platform, por exemplo, todos - Visitante da página inicial.

A resposta que você receberá no código do Visual Studio terá alguns segmentos que se start com todos, ele também deve incluir seu segmento ldap - Ventilador de esportes luma. Caso contrário, o nome do segmento provavelmente não está correto:

{
  "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"
    }
  }
}

Substitua o código no index.js do código do Visual Studio pelo código abaixo. Esse código será executado sempre que a CDP em tempo real da Adobe Experience Platform enviar qualificações de segmento para o destino do Hub do Evento. Em nosso exemplo, o código é apenas exibir e aprimorar a carga recebida. Mas você pode imaginar qualquer tipo de função para processar qualificações de segmento em tempo real.

// 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);

    });

}

Depois de colar o código abaixo em index.js, modifique a linha 4 para refletir seu ldap, neste exemplo que é mmeewis:

const ldap = "mmeewis";

O resultado deve ser parecido com:

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

18.5.4 Executar Projeto do Azure

Agora é hora de executar seu projeto. Nesta fase, não implantaremos o projeto no Azure. Executaremos localmente no modo de depuração. Selecione o ícone Executar e clique na seta verde. Na primeira vez que executar seu projeto no modo de depuração, será necessário anexar uma conta do armazenamento do Azure e clicar em Selecionar conta do armazenamento.

3-17-vsc-run-project.png

Na lista das contas do armazenamento, selecione aquela que você criou como parte da 18.1.4 Configure sua Contado Armazenamento do Azure. Sua conta do armazenamento é chamada ldapaepstorage, por exemplo: mmeewisaepstorage.

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

Seu projeto está funcionando e agora está listando eventos no Hub Evento. No próximo exercício você demonstrará comportamento no site do Haqqani Signal que irá qualificá-lo para esses segmentos. Como resultado, você receberá uma carga de qualificação de segmento no terminal da função de disparo do Hub do Evento:

3-23-vsc-application-started.png

18.5.5 Parar o projeto do Azure

Para interromper o projeto, selecione a guia Terminal , clique na janela do terminal e pressione CMD-C no OSX ou CTRL-C no Windows:

3-24-vsc-application-stop.png

Próxima etapa: 18.6 Cenário completo

Voltar ao módulo 18

Voltar para todos os módulos

Nesta página