Empfehlungsconnectors

Empfehlungsconnectors ermöglichen die Synchronisierung von Partnerempfehlungen mit CRM-Leads (Customer Relationship Management). Du kannst einen Empfehlungsconnector erstellen, indem du Microsoft Flow als HTTPS-Endpunkt für den Empfang von Partnerempfehlungen verwendest. Die durch den Flow empfangene Empfehlung kann dann als Lead in ein CRM-System geschrieben werden.

Voraussetzungen

Übersicht über den Ablauf

Verweise werden wie folgt in das CRM-System importiert:

  1. Der Partner richtet einen Webhook für den Empfang von Empfehlungsbenachrichtigungen ein.
  2. Der Partner registriert den Webhook bei Partner Center. Außerdem abonniert der Partner Webhookereignisse für die Erstellung oder Aktualisierung von Empfehlungen.
  3. Der Empfehlungsclient erstellt oder aktualisiert eine Empfehlung.
  4. Das Webhooksystem von Partner Center überprüft die Registrierung des Partners und sendet eine Benachrichtigung an den Webhook.
  5. Der Webhook empfängt die Benachrichtigung.
  6. Das Flow-Dokument in Microsoft Flow verwendet ein Token, um die Empfehlungs-API von Partner Center aufzurufen.
  7. Der Flow-Endpunkt ruft die Empfehlung ab.
  8. Der Flow-Endpunkt erstellt den CRM-Lead.

Flow chart showing the steps in this section for importing partner referrals into the CRM.

Flow-Dokumentprozess

Das Flow-Dokument für einen Empfehlungsconnector synchronisiert eine Partnerempfehlung mit einem CRM-Lead aus Dynamics 365.

  1. Der Connector bezieht ein Token, um eine Verbindung mit https://api.partner.microsoft.com/v1.0/engagements/referrals herzustellen.
  2. Der Connector ruft unter Verwendung von https://api.partner.microsoft.com/v1.0/engagements/referrals/{id} die Empfehlung ab, durch die der Connector ausgelöst wurde.
  3. Der Connector stellt eine Verbindung mit Dynamics 365 her.
  4. Der Connector erstellt einen neuen Lead oder aktualisiert einen bereits vorhandenen Lead mit den neuesten Informationen aus der Empfehlung.
  5. Der Connector aktualisiert die Empfehlung mit den neuesten Informationen des CRM-Leads.

Flow chart showing the steps in this section for the flow document process.

Exemplarischer Empfehlungsconnector

Der folgende exemplarische Empfehlungsconnector veranschaulicht die Synchronisierung von Partner Center-Empfehlungen mit CRM-Leads in Dynamics 365.

Wichtig

Die Flow-Connectors im Beispielcode können ersetzt werden, um in andere CRM-Systeme zu schreiben.

Importieren des Flow-Synchronisierungspakets

Lade das Beispielcodepaket herunter, importiere es in Microsoft Flow, und stelle eine Verbindung mit Dynamics 365 her:

  1. Lade das Flow-Synchronisierungspaket aus dem GitHub-Repository herunter.

  2. Melde dich mit den entsprechenden Anmeldeinformationen bei Microsoft Flow an.

  3. Wähle im Navigationsmenü die Option Meine Flows aus. Wähle anschließend Importieren aus.

  4. Wähle auf der Seite Paket importieren das heruntergeladene Flow-Synchronisierungspaket aus. Wähle anschließend Hochladen aus.

    Import package screen for package files

  5. Suche nach Abschluss des Paketuploads unter Paketinhalt überprüfen nach dem hochgeladenen Paket.

    Details of import package screen

  6. Wähle für das hochgeladene Paket die Schaltfläche Aktion (Schraubenschlüsselsymbol) aus. Daraufhin wird das Blatt Importeinrichtung geöffnet.

  7. Wähle unter Setup die Art der Einrichtung aus.

    • Wähle zum Erstellen eines neuen Flows die Option Neu erstellen aus, und gib unter Ressourcenname einen neuen Ressourcennamen ein.
    • Wenn du einen bereits vorhandenen Flow gleichen Namens aktualisieren möchtest, wähle Aktualisieren aus.

    Create or update new pacakge screen

  8. Suche auf der Seite Paket importieren im Abschnitt Paketinhalt überprüfen unter Verwandte Ressourcen nach deiner Dynamics 365-Verbindung.

  9. Wähle für deine Dynamics 365-Verbindung die Schaltfläche Aktion (Schraubenschlüsselsymbol) aus. Daraufhin wird das Blatt Importeinrichtung für die zugehörige Ressource geöffnet.

  10. Wähle Neu erstellen aus, um eine neue Dynamics 365-Verbindung zu erstellen, oder wähle eine bereits vorhandene Verbindung aus.

  11. Vergewissere dich, dass nun auf der Seite Importeinrichtung der ausgewählte Flow-Einrichtungstyp und die Dynamics 365-Verbindung angezeigt werden. Wähle anschließend Importieren aus.

    Import package status screen

  12. Vergewissere dich, dass deine Flow-Ressource erstellt oder aktualisiert wurde.

Konfigurieren von Flow-Parametern

Konfiguriere die Parameter deiner Flow-Ressource:

  1. Wähle im Navigationsmenü von Microsoft Flow die Option Meine Flows aus.

  2. Wähle die Flow-Ressource aus, die du im vorherigen Abschnitt erstellt oder aktualisiert hast.

  3. Wähle auf der Seite des Flows die Option Flow bearbeiten aus.

  4. Wähle die Variable AAD-Application (client) ID aus, und gib die ID deiner Azure AD-Anwendung ein.

  5. Wähle die Variable UserId aus, und gib deine Benutzer-ID ein.

  6. Wähle die Variable UserPassword aus, und gib dein Kennwort ein.

  7. Wähle die Variable AAD-Directory (tenant) ID aus. Gib die Mandanten-ID deiner Azure AD-Anwendung ein.

  8. Wähle Speichern aus, um deinen Flow zu speichern.

    Flow variables settings screen

Authentifizieren des Rückrufs

Authentifiziere das Rückrufereignis von Partner Center:

Tipp

Ein Beispiel findest du im Beispielcode der Funktions-App im folgenden Abschnitt.

  1. Erstelle eine Azure-Funktions-App zum Authentifizieren des Rückrufereignisses von Partner Center.

    1. Vergewissere dich, dass die erforderlichen Header (Authorization, x-ms-certificate-url und x-ms-signature-algorithm) vorhanden sind.
    2. Lade das Zertifikat herunter, das zum Signieren des Inhalts verwendet wurde (x-ms-certificate-url).
    3. Überprüfe die Zertifikatkette.
    4. Überprüfe die Organisation des Zertifikats.
    5. Lies den Inhalt mit UTF-8-Codierung in einen Puffer.
    6. Erstelle einen RSA-Kryptografieanbieter.
    7. Vergewissere dich, dass die Signatur zu dem passt, was mit dem angegebenen Hashalgorithmus (z. B. SHA256) signiert wurde.
    8. Nach erfolgreicher Überprüfung wird eine Bestätigungsmeldung (OK) zurückgegeben.
  2. Notiere dir den generierten Rückruf-URI für den HTTP-Endpunkt deiner Funktions-App. Dieser URI wird angezeigt, wenn du deine Funktions-App erstellst. Außerdem befindet sich dieser URI auf der Azure-Ressourcenseite deiner Funktions-App.

  3. Bearbeite in Microsoft Flow den Flow „Partner Referral to Microsoft Dynamics CRM Lead“ (Partnerempfehlung zu Microsoft Dynamics CRM-Lead), den du im Abschnitt Importieren des Flow-Synchronisierungspakets importiert hast.

    1. Füge den URI-Wert der Funktions-App dem Schritt „web hook certificate validation“ (Webhook-Zertifikatüberprüfung) hinzu.
    2. Kopiere den Rückruf-URI deiner Funktions-App, und füge ihn in das Flow-Dokument ein.
    3. Speichere dein Flow-Dokument.

Beispielcode der Funktions-App

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using System;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    string requestBody = null;
    if (!string.IsNullOrWhiteSpace(GetFirstValueFromHeader(req, "x-ms-certificate-url")) && !string.IsNullOrWhiteSpace(GetFirstValueFromHeader(req, "x-ms-signature-algorithm")))
    {
        var certificateUrl = req?.Headers["x-ms-certificate-url"].First();
        try
        {
            string resultContent = null;
            using (var client = new HttpClient())
            {
                var result = await client.GetAsync(req.Headers["x-ms-certificate-url"].First());
                resultContent = await result.Content.ReadAsStringAsync();
                log.LogInformation(resultContent);
            }
            if (!string.IsNullOrEmpty(resultContent))
            {
                var certificate = new X509Certificate2(Encoding.UTF8.GetBytes(resultContent));
                var validationResult = certificate.Verify() && certificate.Issuer.Contains("O=Microsoft Corporation");
                if (validationResult)
                {
                    return new OkResult();
                }
                else
                {
                    return new BadRequestResult();
                }
            }
        }
        catch (Exception)
        {
            new BadRequestObjectResult("Certificate could not be retrieved, invalid caller to flow");
        }

        requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        dynamic data = JsonConvert.DeserializeObject(requestBody);
    }
    else
    {
        new BadRequestObjectResult("Missing headers");
    }

    return new BadRequestObjectResult("Certificate validation failed");
}

private static string GetFirstValueFromHeader(HttpRequest request, string headerName)
{
    StringValues matchingHeaderValues;
    request.Headers.TryGetValue(headerName, out matchingHeaderValues);
    return matchingHeaderValues.Count != 0 ? matchingHeaderValues.First() : string.Empty;
}

Registrieren des Flows bei Partner Center

Registriere deine Flow-Ressource bei Partner Center, um den Flow auszulösen und Webhookereignisse zu empfangen:

  1. Wähle im Navigationsmenü von Microsoft Flow die Option Meine Flows aus.
  2. Wähle den erstellten oder aktualisierten Flow aus.
  3. Wähle auf der Seite des Flows die Option Flow bearbeiten aus.
  4. Kopiere und speichere die HTTP-POST-URL des Flows. Diese URL wird zum Auslösen des Flows benötigt.
  5. Führe eine Registrierung durch, um Webhookereignisse zu empfangen, wenn Empfehlungen erstellt oder aktualisiert werden. Verwende das folgende Format:
{
    "WebhookUrl": "<<FlowUrl>>",
    "WebhookEvents": [
        "referral-created",
        "referral-updated"
    ],
    "signatureTokenToMsSignatureHeader": true
}