Crea automazioni senza problemi per aumentare la produttività con Microsoft Graph, Hub eventi di Azure e Funzioni

Ogni giorno milioni di persone trascorrono il loro tempo prezioso in strumenti di produttività. Cosa succede se usi i dati e l’intelligence dietro le applicazioni Microsoft (Microsoft Teams, Outlook e molte altre app di Office) per creare automazioni apparentemente inutilizzate e app personalizzate per aumentare la produttività? In questo post, costruiremo un’esperienza di onboarding senza problemi per i nuovi dipendenti che entrano a far parte di un’azienda con la potenza di Microsoft Graph.

Cosa tratteremo

  • La potenza di Microsoft Graph
  •  Come interagiscono Microsoft Graph e Hub eventi?
  • Esercizio: Configurare Hub eventi di Azure e Key Vault
  • Esercizio: Sottoscrivere una risorsa per ricevere notifiche di modifica tramite Funzioni di Azureusers
  • Esercizio: creare una funzione di onboarding
  • Esegui il debug della tua esperienza di onboarding
  • Risorse

Si raccomandano i seguenti prerequisiti:

La potenza di Microsoft Graph

Microsoft Graph è la porta d’accesso ai dati e all’intelligence nella piattaforma Microsoft 365. Microsoft Graph espone le API Rest e le librerie client per accedere ai dati nei servizi principali di Microsoft 365 come Calendario, Teams, Da fare, Outlook, Contatti, Planner, OneDrive, OneNote e altro ancora.

È possibile creare esperienze personalizzate utilizzando Microsoft Graph, ad esempio automatizzando il processo di onboarding per i nuovi dipendenti. Quando vengono creati nuovi dipendenti in Azure Active Directory, verranno aggiunti automaticamente al team di onboarding in Microsoft Teams.

Come interagiscono Microsoft Graph e Hub eventi?

Microsoft Graph utilizza il meccanismo webhook per tenere traccia delle modifiche nelle risorse e inviare notifiche di modifica ai client. Come esempio per le notifiche di modifica di Microsoft Graph, è possibile ricevere notifiche di modifica quando:

  • Viene aggiunta una nuova attività nell’elenco delle attività
  • Un utente modifica lo stato presenza da occupato a disponibile
  • Un evento viene eliminato/annullato dal calendario

Se si vuole tenere traccia di un set di risorse di grandi dimensioni con una frequenza elevata, è possibile usare Hub eventi di Azure anziché i webhook tradizionali per ricevere notifiche di modifica. Hub eventi di Azure è un popolare servizio di inserimento e distribuzione di eventi in tempo reale creato per la scalabilità.

Le notifiche di modifica di Microsoft Graph possono essere ricevute anche tramite la griglia di eventi di Azure attualmente disponibile per i partner Microsoft. Per altre informazioni, consulta la documentazione: Panoramica degli eventi dei partner per i clienti – Griglia di eventi di Azure

Esercizio: Configurare Hub eventi di Azure e Key Vault

Per ottenere il recapito delle notifiche di modifica di Microsoft Graph a Hub eventi di Azure, sarà necessario configurare Hub eventi di Azure e Azure Key Vault. Useremo Azure Key Vault per accedere alla stringa di connessione di Hub eventi.

Creare Hub eventi di Azure

  1. Passare al portale di Azure e selezionare Crea una risorsa, digitare Hub eventi e fare clic su Crea.
  2. Inserisci i dettagli per la creazione dello spazio dei nomi di Hub eventi e quindi fai clic su Crea.
  3. Vai alla pagina dello spazio dei nomi di Hub eventi appena creato, seleziona la scheda Hub eventi nel riquadro sinistro e + Hub eventi:
    • Assegnare un nome all’hub eventi come hub eventi
    • Fai clic su Crea.
  4. Fare clic sul nome dell’hub eventi e quindi selezionare Criteri di accesso condiviso e + Aggiungi per aggiungere un nuovo criterio:
    • Assegnare un nome al criterio
    • Controlla Invia e ascolta
    • Fai clic su Crea.
  5. Dopo aver creato il criterio, fare clic sul nome del criterio per aprire il riquadro dei dettagli e quindi copiare il valore della chiave primaria della stringa di connessione. Scrivilo; Ne avrai bisogno per il prossimo passo.
  6. Vai alla scheda Gruppi di consumatori nel riquadro sinistro e seleziona + Gruppo di consumatori, assegna un nome per il tuo gruppo di consumatori come onboarding e seleziona Crea.

Creare Azure Key Vault

  1. Passare al portale di Azure e selezionare Crea una risorsa, digitare Key Vault e selezionare Crea.
  2. Immettere i dettagli di creazione dell’insieme di credenziali delle chiavi, quindi fare clic su Revisione + Crea.
  3. Passare a Key Vault appena creato e selezionare la scheda Segreti dal riquadro sinistro e fare clic su + Genera/Importa:
    • Dai un nome al segreto
    • Per il valore, incollare la stringa di connessione generata nel passaggio Hub eventi
    • Fai clic su Crea
    • Copiare il nome del segreto.
  4. Selezionare Criteri di accesso nel riquadro sinistro e + Aggiungi criteri di accesso:
    • Per Autorizzazioni segrete, selezionare Ottieni
    • Per Entità, selezionare Microsoft Graph Change Tracking
    • Fare clic su Aggiungi.
  5. Selezionare la scheda Panoramica nel riquadro sinistro e copiare l’URI del Vault.

Esercizio: Sottoscrivere una risorsa per ricevere notifiche di modifica tramite Funzioni di Azureusers

Per iniziare a ricevere le notifiche di modifica di Microsoft Graph, è necessario creare una sottoscrizione alla risorsa di cui si desidera tenere traccia. Useremo Funzioni di Azure per creare una sottoscrizione.

Per creare una sottoscrizione per Microsoft Graph Change Notifications, è necessario effettuare una richiesta http post a . Microsoft Graph richiede l’autenticazione di Azure Active Directory per effettuare chiamate API. Innanzitutto, sarà necessario registrare un’app in Azure Active Directory e quindi effettuare la chiamata API di sottoscrizione di Microsoft Graph con Funzioni di Azure.https://graph.microsoft.com/v1.0/subscriptions

Creare un’app in Azure Active Directory

  1. Nel portale di Azure passare ad Azure Active Directory e selezionare Registrazioni app nel riquadro sinistro e selezionare + Nuova registrazione. Compila i dettagli per il nuovo modulo di registrazione all’app come di seguito:
    • Nome: Graph Subscription Auth
    • Tipi di account supportati: account in qualsiasi directory aziendale (qualsiasi directory di Azure AD – Multitenant) e account Microsoft personali (ad esempio Skype, Xbox)
    • Seleziona Registra.
  2. Passare all’app appena registrata in Azure Active Directory e selezionare Autorizzazioni API:
    • Seleziona + Aggiungi un’autorizzazione e Microsoft Graph
    • Selezionare Autorizzazioni applicazione e aggiungere e .User.Read.AllTeamMember.ReadWrite.All
    • Seleziona Concedi il consenso dell’amministratore per l’organizzazione
  3. Seleziona la scheda Certificati e segreti dal riquadro di sinistra, seleziona + Nuovo segreto client:
    • Scegli la durata di scadenza desiderata
    • Seleziona Aggiungi
    • Copiare il valore del segreto.
  4. Passare a Panoramica dal riquadro sinistro, copiare l’ID applicazione (client) e l’ID directory (tenant).

Creare una sottoscrizione con Funzioni di Azure

  1. Aprire Visual Studio Code, aprire il pallet facendo clic su Windows o su Mac, cercare “create function” e scegliere Funzioni di Azure: Create Function:CTRL + SHIFT + PCMD + SHIFT + P
    • Apparirà una finestra con un messaggio “è necessario avere un progetto aperto per creare la funzione”, selezionare Crea nuovo progetto. Creare una nuova cartella e selezionare la cartella per il progetto
    • Selezionare JavaScript come linguaggio di progetto
    • Selezionare Timer Trigger come modello per la prima funzione del progetto.
    • Denominare il trigger del timer come SubscriptionFunction e premere invio.
    • Specificare la pianificazione come e premere invio0 */61 * * * *
    • Selezionare Apri nella finestra corrente e premere Invio.
  2. Seleziona Terminale dalla barra dei menu in alto e seleziona Nuovo terminale. Eseguire i seguenti comandi nel terminale per installare le dipendenze:npm install @azure/identity @microsoft/microsoft-graph-client isomorphic-fetch readline-sync
  3. Creare una cartella sotto il progetto e il nome come Condiviso.
  4. Creare un nuovo file all’interno della cartella condivisa, denominato dateTimeFormat.js, copiare l’intero codice in dateTimeFormat.js all’interno del file per definire la data di scadenza della sottoscrizione.
  5. Creare un nuovo file all’interno della cartella condivisa, denominato Graph.js. Aggiungi il seguente frammento di codice di autenticazione all’interno del grafico.js:const expiry = require('./dateTimeFormat'); require('isomorphic-fetch'); const azure = require('@azure/identity'); const graph = require('@microsoft/microsoft-graph-client'); const authProviders = require('@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials'); let _clientSecretCredential = undefined; let _appClient = undefined; let _expiry = undefined; function ensureGraphForAppOnlyAuth() { if (!_clientSecretCredential) { _clientSecretCredential = new azure.ClientSecretCredential( '<YOUR-AAD-APP-TENANT-ID>', '<YOUR-AAD-APP-CLIENT-ID>', '<YOUR-AAD-APP-CLIENT-SECRET>' ); } if (!_appClient) { const authProvider = new authProviders.TokenCredentialAuthenticationProvider( _clientSecretCredential, { scopes: [ 'https://graph.microsoft.com/.default' ] }); _appClient = graph.Client.initWithMiddleware({ authProvider: authProvider }); } } Sostituisci e con i dettagli dell’app registrata nel passaggio precedente<YOUR-AAD-APP-TENANT-ID><YOUR-AAD-APP-CLIENT-ID><YOUR-AAD-APP-CLIENT-SECRET>
  6. Aggiungere la funzione seguente all’interno di Graph.js per effettuare una richiesta API REST all’endpoint Microsoft Graph e creare una sottoscrizione per tenere traccia dei nuovi utenti:/subscriptionsasync function postSubscriptionAsync() { ensureGraphForAppOnlyAuth(); if(!_expiry){ _expiry = await expiry.getDateTimeAsync(); } const subscription = { changeType: 'created, updated', notificationUrl: 'EventHub:https://<YOUR-VAULT-URI>/secrets/<YOUR-KEY-VAULT-SECRET-NAME>?tenantId=<YOUR-TENANT-ID>', resource: 'users', expirationDateTime: _expiry, clientState: 'secretClientValue', }; return _appClient?.api('/subscriptions') .post(subscription); } module.exports.postSubscriptionAsync = postSubscriptionAsync; In notificationUrl assicurarsi di sostituire con l’uri del vault, con il nome segreto e con l’ID tenant copiato dall’insieme di credenziali delle chiavi.<YOUR-VAULT-URI><YOUR-KEY-VAULT-SECRET-NAME><YOUR-TENANT-ID>
  7. Vai all’indice > SubscriptionFunction e .js copia i seguenti riferimenti nella parte superiore della pagina:require('isomorphic-fetch'); const graph = require('../Shared/graph');
  8. Nell’indice.js, copiare il seguente frammento di codice all’interno della funzione per attivare la sottoscrizione ogni 61 minuti: const subscription = await graph.postSubscriptionAsync();
  9. Vai a local.settings.json, sostituisci il codice esistente con lo snippet di codice qui sotto:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node" }, "watchDirectories": [ "Shared" ] }
  10. Solo a scopo di test, vai a SubscriptionFunction > function.json e aggiungi il seguente parametro all’interno dell’associazione:"runOnStartup": true Assicurarsi di rimuovere questo parametro per la produzione.
  11. Eseguire l’emulatore di archiviazione di Microsoft Azure ed eseguire il comando seguente sul terminale Visual Studio Code per testare la funzione:func host start

Quando la funzione di sottoscrizione viene eseguita correttamente, verrà creata una sottoscrizione per la risorsa. Hub eventi di Azure riceverà notifiche ogni volta che viene creato un nuovo utente in Azure Active Directory.users

Esercizio: creare una funzione di onboarding

Creeremo una seconda funzione nel progetto per ricevere notifiche di modifica da Hub eventi quando viene creato un nuovo utente in Azure Active Directory e aggiungeremo un nuovo utente nel team di onboarding in Microsoft Teams.

  1. Apri il patlete su Visual Studio cliccando su Windows o su Mac, cerca “create function” e scegli Azure Functions: Create Function:CTRL + SHIFT + PCMD + SHIFT + P
    • Selezionare il trigger dell’hub eventi di Azure come modello per la funzione
    • Assegna un nome al trigger dell’hub eventi come OnboardingFunction e premi invio
    • Seleziona + Crea nuova impostazione app locale
    • Seleziona le impostazioni dell’hub eventi create nei passaggi precedenti:
      • Sottoscrizione di Azure
      • Spazio dei nomi dell’hub eventi
      • Hub eventi
      • Criteri dell’hub eventi
      • Gruppo di consumatori
    • Premere invio.
  2. Vai a Grafico > condiviso.js, aggiungi il seguente parametro nella parte superiore della pagina:let _memberId = undefined;
  3. All’interno di Graph.js, copia il codice seguente per aggiungere automaticamente il nuovo utente al team di onboarding in Microsoft Teams:async function postTeamsMemberAsync(memberId) { ensureGraphForAppOnlyAuth(); _memberId = memberId; const user = 'https://graph.microsoft.com/v1.0/users(\'' + _memberId +'\')'; const conversationMember = { '@odata.type': '#microsoft.graph.aadUserConversationMember', roles: ['owner'], 'user@odata.bind': user }; return _appClient?.api('/teams/<YOUR-ONBOARDING-TEAM-ID>/members') .post(conversationMember); } module.exports.postTeamsMemberAsync = postTeamsMemberAsync; Assicurati di sostituire con l’ID team che desideri aggiungere ai tuoi utenti come membro. È possibile accedere a Microsoft Graph Explorer ed eseguire la query di esempio dei team aggiunti per visualizzare gli ID team disponibili.<YOUR-ONBOARDING-TEAM-ID>
  4. Vai all’indice > OnboardingFunction e .js copia i seguenti riferimenti nella parte superiore della pagina:const graph = require('../Shared/graph');
  5. Nell’.js di indice e sostituire il codice all’interno della funzione con il frammento di codice seguente: eventHubMessages.forEach(async (message, index) => { var jsonMessage = JSON.parse(message); for (let i in jsonMessage.value) { var resourceData = jsonMessage.value[i].resourceData; const newMemberId = resourceData.id; await graph.postTeamsMemberAsync(newMemberId); } });

 Esegui il debug della tua esperienza di onboarding

Per eseguire il debug della nostra esperienza di onboarding, sarà necessario eseguire le nostre funzioni localmente e creare un nuovo utente in Azure Active Directory per vedere se il nuovo utente viene aggiunto automaticamente nel team di onboarding di Microsoft Teams.

  1. Aprire il terminale in Visual Studio Code ed eseguire le funzioni con il seguente comando:func host start Assicurarsi che l’emulatore di archiviazione di Microsoft Azure sia in esecuzione in background.
  2. Passare a Portale di Azure e selezionare Azure Active Directory dal riquadro sinistro e passare a Utenti. Seleziona + Nuovo utente e Crea nuovo utente. Compila i dettagli come di seguito:
    • Nome utente: JaneDoe
    • Nome: Jane Doe
  1. Quando si aggiunge come nuovo utente, dovrebbe attivare l’esecuzione di OnboardingFunction.Jane Doe

Una volta che OnboardingFunction viene eseguito correttamente, dovresti essere in grado di vedere come membro del team Onboarding su Microsoft Teams! Jane Doe

Risorse

Verificato da MonsterInsights