Freigeben über


Abonnieren von Ereignissen

In diesem Artikel wird beschrieben, wie Sie Ereignisse von Azure Communication Services über das Portal, azure CLI, PowerShell und .NET SDK abonnieren.

Sie können Ereignisabonnements für Communication Services-Ressourcen über das Azure-Portal, Azure CLI, PowerShell oder mit dem Event Grid Management SDK von Azure einrichten.

In diesem Artikel wird der Prozess der Einrichtung eines Webhooks als Abonnent für SMS-Ereignisse von Azure Communication Services beschrieben. Eine vollständige Liste der Ereignisse finden Sie unter Azure Communication Services als Azure Event Grid-Quelle.

Voraussetzungen

Registrieren des Event Grid-Ressourcenanbieters

In diesem Artikel wird beschrieben, wie Sie den Event Grid-Ressourcenanbieter registrieren. Wenn Sie Event Grid zuvor im selben Abonnement verwendet haben, fahren Sie mit dem nächsten Abschnitt fort.

Führen Sie im Azure-Portal folgende Schritte aus:

  1. Wählen Sie im linken Menü Abonnements aus.

  2. Wählen Sie das Abonnement, das Sie für Event Grid verwenden möchten, aus der Abonnementliste aus.

  3. Wählen Sie auf der Seite Abonnement unter Einstellungen im linken Menü Ressourcenanbieter aus.

  4. Suchen Sie nach Microsoft.EventGrid, und vergewissern Sie sich, dass der StatusNicht registriert lautet.

  5. Wählen Sie microsoft.EventGrid in der Anbieterliste aus.

  6. Wählen Sie Registrieren auf der Befehlsleiste aus.

    Bild, das die Registrierung des Microsoft.EventGrid-Anbieters mit dem Azure-Abonnement zeigt.

  7. Aktualisieren Sie, um sicherzustellen, dass der Status von Microsoft.EventGrid in Registriert geändert wird.

    Bild der erfolgreichen Registrierung des Microsoft.EventGrid-Anbieters mit dem Azure-Abonnement.

Erstellen eines Ereignisabonnements

Melden Sie sich zunächst beim Azure-Portal an, um ein Ereignisabonnement für eine Azure Communication Services-Ressource zu erstellen. Wählen Sie in der oberen linken Ecke der Seite die Communication Services-Ressource aus.

  1. Wählen Sie im linken Menü die Registerkarte Ereignisse aus.

  2. Klicken Sie auf + Ereignisabonnement.

    Screenshot mit der hervorgehobenen Schaltfläche zum Erstellen eines Ereignisabonnements im Azure-Portal.

  3. Gehen Sie auf der Seite Ereignisabonnement erstellen wie folgt vor:

    1. Geben Sie einen Namen für das Ereignisabonnement ein.

    2. Geben Sie einen Namen für das Systemthema ein.

    3. Wählen Sie die Ereignistypen aus, die Sie im Ereignisabonnement empfangen möchten.

      Screenshot, der die Auswahl von Ereignistypen zeigt.

      Weitere Informationen finden Sie unter Communication Services Events.

    4. Wählen Sie für den Endpunkttyp die Option „Webhook“ aus.

      Screenshot, der die Auswahl des Endpunkttyps zeigt.

    5. Wählen Sie Endpunkt konfigurieren aus

      Screenshot mit der hervorgehobenen Schaltfläche zum Erstellen einer Ereignisseite im Azure-Portal.

    6. Geben Sie den Link zum Webhook ein, und wählen Sie Auswahl bestätigen aus.

      Screenshot, der die Seite zum Auswählen eines Webhook-Endpunkts im Azure-Portal zeigt.

    7. Fügen Sie auf der Registerkarte Filter die Namen der Ereignistypen hinzu, die Sie im Abonnement filtern möchten. Fügen Sie alle Kontextattributefilter hinzu, die Sie im Abonnement verwenden möchten. Wählen Sie dann unten auf der Seite die Option Weiter: Zusätzliche Features aus.

      Screenshot mit der hervorgehobenen Seite zum Erstellen von Event Grid-Filtern im Azure-Portal.

    8. Wählen Sie Zusätzliche Features aus, um die Verarbeitung unzustellbarer Nachrichten zu aktivieren und Wiederholungsrichtlinien anzupassen.

      Screenshot der Registerkarte „Zusätzliche Features“ auf der Seite „Ereignisabonnement erstellen“.

    9. Wählen Sie abschließend die Option Erstellen.

Ereignisabonnement aktualisieren

In diesem Abschnitt erfahren Sie, wie Sie ein Ereignisabonnement für Azure Communication Services aktualisieren, um die Ereignisse zu aktualisieren, die Sie über einen Webhook empfangen möchten.

Melden Sie sich zunächst beim Azure-Portal an, um ein Ereignisabonnement für eine Azure Communication Services-Ressource zu aktualisieren. Wählen Sie in der oberen linken Ecke der Seite die Communication Services-Ressource aus.

  1. Wählen Sie im linken Menü die Registerkarte Ereignisse aus.

  2. Wählen Sie zunächst Ereignisabonnements und dann das Ereignisabonnement aus, das Sie aktualisieren möchten.

    Screenshot mit der hervorgehobenen Schaltfläche des Ereignisabonnements im Azure-Portal.

  3. Wählen Sie auf der Seite Ereignisabonnement die Registerkarte Filter aus. Wählen Sie die Ereignistypen aus, die Sie im Ereignisabonnement empfangen möchten.

    Screenshot der Auswahl der zu aktualisierenden Ereignistypen.

  4. Wählen Sie Zusätzliche Features aus, um die Verarbeitung unzustellbarer Nachrichten zu aktivieren und Wiederholungsrichtlinien anzupassen.

    Screenshot der Registerkarte „Zusätzliche Features“ auf der Seite „Ereignisabonnement aktualisieren“.

  5. Um den Webhook zum Empfangen von Ereignissen zu aktualisieren, wählen Sie neben dem Webhook-Link die Option Ändern aus, und geben Sie den neuen Webhook-Endpunkt ein.

    Screenshot des Links zum Ändern des Webhook-Endpunkts auf der Seite „Ereignisabonnement“.

  6. Wenn fertig, wählen Sie Speichern.

    Screenshot der Schaltfläche „Speichern“ im Azure-Portal.

Löschen eines Ereignisabonnements

Führen Sie die folgenden Schritte aus, um ein Ereignisabonnement für Azure Communication Services zu löschen.

Melden Sie sich zunächst beim Azure-Portal an, um ein Ereignisabonnement für eine Azure Communication Services-Ressource zu löschen. Wählen Sie in der oberen linken Ecke der Seite die Communication Services-Ressource aus.

  1. Wählen Sie im linken Menü die Registerkarte Ereignisse aus.

  2. Wählen Sie zunächst Ereignisabonnements und dann das Ereignisabonnement aus, das Sie löschen möchten.

    Screenshot mit hervorgehobener Schaltfläche

  3. Wählen Sie oben auf der Seite „Ereignisabonnement“ Löschen aus.

    Screenshot der Schaltfläche „Löschen“, die im Azure-Portal hervorgehoben ist.

Nächste Schritte

Voraussetzungen

Registrieren des Event Grid-Ressourcenanbieters

In diesem Artikel wird beschrieben, wie Sie den Event Grid-Ressourcenanbieter registrieren. Wenn Sie Event Grid zuvor im selben Abonnement verwendet haben, fahren Sie mit dem nächsten Abschnitt fort.

  1. Führen Sie den folgenden Befehl aus, um den Anbieter zu registrieren:

    az provider register --namespace Microsoft.EventGrid
    
  2. Es kann einen Moment dauern, bis die Registrierung abgeschlossen ist. Führen Sie den folgenden Befehl aus, um den Status zu überprüfen:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Wenn registrationStateRegistered ist, können Sie den Vorgang fortsetzen.

Erstellen eines Ereignisabonnements

Melden Sie sich bei Azure CLI an, um Ereignisabonnements einer Azure Communication Services-Ressource zu erstellen. Sie können sich anmelden, indem Sie den Befehl az login am Terminal ausführen und dann Ihre Anmeldeinformationen angeben.

Verwenden Sie den Befehl , um ein Ereignisabonnement mithilfe der az eventgrid event-subscription create zu erstellen:

az eventgrid event-subscription create 
    --name EventsWebhookSubscription
    --source-resource-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>
    --included-event-types Microsoft.Communication.SMSReceived Microsoft.Communication.SMSDeliveryReportReceived
    --endpoint-type webhook 
    --endpoint https://azureeventgridviewer.azurewebsites.net/api/updates  

Eine Liste der Communication Services-Ereignisse finden Sie unter Communication Services-Ereignisse.

Ereignisabonnements auflisten

Verwenden Sie den Befehl , um alle vorhandenen Ereignisabonnements aufzulisten, die für eine Azure Communication Services-Ressource eingerichtet wurden, indem Sieaz eventgrid event-subscription list verwenden.

az eventgrid event-subscription list 
    --source-resource-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>    

Ereignisabonnement aktualisieren

Verwenden Sie den Befehl , um ein vorhandenes Ereignisabonnement mithilfe az eventgrid event-subscription update zu aktualisieren.

az eventgrid event-subscription update 
    --name EventsWebhookSubscription
    --source-resource-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>
    --included-event-types Microsoft.Communication.SMSReceived Microsoft.Communication.SMSDeliveryReportReceived Microsoft.Communication.ChatMessageReceived
    --endpoint-type webhook 
    --endpoint https://azureeventgridviewer.azurewebsites.net/api/updates

Löschen eines Ereignisabonnements

Verwenden Sie den Befehl , um ein vorhandenes Ereignisabonnement mithilfe az eventgrid event-subscription delete zu löschen.

az eventgrid event-subscription delete 
    --name EventsWebhookSubscription 
    --source-resource-id /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>

Nächste Schritte

Voraussetzungen

Registrieren des Event Grid-Ressourcenanbieters

In diesem Artikel wird beschrieben, wie Sie den Event Grid-Ressourcenanbieter registrieren. Wenn Sie Event Grid zuvor im selben Abonnement verwendet haben, fahren Sie mit dem nächsten Abschnitt fort.

Führen Sie im Azure-Portal folgende Schritte aus:

  1. Wählen Sie im linken Menü Abonnements aus.

  2. Wählen Sie das Abonnement, das Sie für Event Grid verwenden möchten, aus der Abonnementliste aus.

  3. Wählen Sie auf der Seite Abonnement unter Einstellungen im linken Menü Ressourcenanbieter aus.

  4. Suchen Sie nach Microsoft.EventGrid, und vergewissern Sie sich, dass der StatusNicht registriert lautet.

  5. Wählen Sie microsoft.EventGrid in der Anbieterliste aus.

  6. Wählen Sie Registrieren auf der Befehlsleiste aus.

    Bild, das die Registrierung des Microsoft.EventGrid-Anbieters mit dem Azure-Abonnement zeigt.

  7. Aktualisieren Sie, um sicherzustellen, dass der Status von Microsoft.EventGrid in Registriert geändert wird.

    Bild der erfolgreichen Registrierung des Microsoft.EventGrid-Anbieters mit dem Azure-Abonnement.

Das SDK installieren

Installieren Sie zunächst die Microsoft Azure Event Grid Management-Bibliothek für .NET mit NuGet:

dotnet add package Azure.ResourceManager.EventGrid;

Schließen Sie das Event Grid Management SDK in Ihr C#-Projekt ein:

using Microsoft.Azure.Management.EventGrid;
using Microsoft.Azure.Management.EventGrid.Models;

Authentifizieren mit Azure Identity-Bibliothek

  1. Erstellen Sie eine Microsoft Entra-Anwendung und einen Dienstprinzipal, und richten Sie einen geheimen Clientschlüssel oder ein vertrauenswürdiges Zertifikat ein, das von der Zertifizierungsstelle ausgestellt wurde. Folgen Sie den Anweisungen unter Registrieren einer Microsoft Entra-App und Erstellen eines Dienstprinzipals.

  2. Speichern Sie das Geheimnis oder das Zertifikat in Azure Keyvault.

  3. Gewähren Sie Mitwirkenden oder Besitzern Zugriff auf das Abonnement für diese Anwendung, indem Sie die Anweisungen unter Gewähren eines Benutzerzugriffs auf Azure-Ressourcen mithilfe des Azure-Portals befolgen.

  4. Weitere Informationen zum Autorisieren des Zugriffs auf Event Grid-Ressourcen.

Die Azure Identity-Bibliothek bietet Unterstützung für die Microsoft Entra ID-Tokenauthentifizierung im gesamten Azure SDK. Es bietet eine Reihe von TokenCredential-Implementierungen, die Sie zum Erstellen von Azure SDK-Clients verwenden können, welche die Microsoft Entra-Tokenauthentifizierung unterstützen. Weitere Informationen finden Sie unter Azure Identity-Clientbibliothek für .NET-.

  1. Schließen Sie die Azure Identity-Clientbibliothek für .NET mit NuGet ein.

    dotnet add package Azure.Identity;
    dotnet add package Azure.Security.KeyVault.Secrets
    
  2. Einschließen der Azure Identity-Bibliothek in Ihr C#-Projekt.

    using Microsoft.Azure.Identity;
    using Azure.Security.KeyVault.Secrets
    
  3. Sie können entweder die geheimen Anmeldeinformationen oder die Zertifikatanmeldeinformationen übergeben, um Zugriffstoken abzurufen, basierend auf der Konfiguration des Dienstprinzipals.

    • Abrufen eines Zugriffstokens mithilfe geheimer Anmeldeinformationen

      Um die geheimen Anmeldeinformationen abzurufen, müssen Sie sie aus dem Keyvault lesen, den Sie in Voraussetzung 2 mithilfe des SecretClient erstellt haben.

      // Authenticate the Keyvault client with DefaultAzureCredential and get the secret.
      SecretClient secretClient = new SecretClient(new Uri("https://myvault.vault.azure.net/"), new DefaultAzureCredential());
      string clientSecret = await secretClient.GetSecretAsync(secretName).Value;
      
      // Get access token using secret credentials
      string[] scopes = { "https://management.azure.com/.default" };
      var application = ConfidentialClientApplicationBuilder
                          .Create('your-servicePrincipal-appId')
                          .WithAuthority(authorityUri: new Uri(authority), validateAuthority: true)
                          .WithTenantId('your-tenant_id')
                          .WithClientSecret(clientSecret)
                          .Build();
      
      var token = await application
                      .AcquireTokenForClient(scopes)
                      .ExecuteAsync();
      
    • Abrufen eines Zugriffstokens mithilfe von Zertifikatanmeldeinformationen.

      Um die Zertifikatanmeldeinformationen abzurufen, müssen Sie sie aus dem Keyvault lesen, den Sie in Voraussetzung 2 mithilfe des CertificateClient erstellt haben.

      Weitere Informationen zur Microsoft Entra-Anwendungskonfigurationsautorität finden Sie unter Anwendungskonfigurationsautorität.

      // Authenticate the certificate client with DefaultAzureCredential and get the certificate.
      CertificateClient certificateClient = new SecretClient(new Uri("https://myvault.vault.azure.net/"), new DefaultAzureCredential());
      X509Certificat2 cert = await certificateClient.DownloadCertificateAsync(certificateName);
      
      // Get access token using certificate credentials
      string[] scopes = { "https://management.azure.com/.default" };
      string authority = "https://login.microsoftonline.com/<tenant>/";
      var application = ConfidentialClientApplicationBuilder
                          .Create('<servicePrincipal-appId>')
                          .WithAuthority(authorityUri: new Uri(authority), validateAuthority: true)
                          .WithTenantId("<tenantId>")
                          .WithCertificate(cert)
                          .Build();
      
      var token = await application
                      .AcquireTokenForClient(scopes)
                      .WithSendX5C(true)
                      .ExecuteAsync();
      
  4. Authentifizieren von EventGridManagementClient mit Zugriffstoken mithilfe von geheimen Anmeldeinformationen oder Zertifikatanmeldeinformationen

// Authenticate EventGridManagementClient with Microsoft Entra ID access token credential
eventGridClient = new EventGridManagementClient(new Uri("https://management.azure.com/"),
    new TokenCredentials(token.AccessToken));

eventGridClient.SubscriptionId = 'your_subscription_id';

Erstellen eines Ereignisabonnements

In diesem Codebeispiel wird gezeigt, wie Sie das Ereignisabonnement für den Webhook-Abonnentendpunkt erstellen.

string webhookUri = $"<webhookUri>";
string resourceId="/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>";
string[] includedEventTypes = new string[]{ "Microsoft.Communication.SMSReceived", 
                                            "Microsoft.Communication.SMSDeliveryReportReceived"
                                            };

EventSubscription eventSubscription = new EventSubscription(
    name: "<eventSubscriptionName>",
    eventDeliverySchema: "EventGridSchema",
    filter: new EventSubscriptionFilter(
    includedEventTypes: includedEventTypes),
    destination: new WebHookEventSubscriptionDestination(webhookUri));

await eventGridClient.EventSubscriptions.CreateOrUpdateAsync(
    scope: resourceId,
    eventSubscriptionName: "<eventSubscriptionName>",
    eventSubscriptionInfo: eventSubscription);

Ereignisabonnement aktualisieren

In diesem Codebeispiel wird gezeigt, wie Sie das Ereignisabonnement aktualisieren, um weitere Ereignisse hinzuzufügen, die Sie auf dem Webhook-Abonnentendpunkt empfangen möchten.

string webhookUri = $"<webhookUri>";
string resourceId="/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>";
string[] additionalEventTypes = new string[]{ 
                                            "Microsoft.Communication.ChatMessageReceived"
                                        };

await eventGridClient.EventSubscriptions.UpdateAsync(
    scope: resourceId,
    eventSubscriptionName: "<eventSubscriptionName>",
    eventSubscriptionUpdateParameters: new EventSubscriptionUpdateParameters(
            filter: new EventSubscriptionFilter(includedEventTypes: additionalEventTypes)));

Löschen eines Ereignisabonnements

Dieser Beispielcode zeigt, wie Sie das Ereignisabonnement für den Webhook-Abonnentendpunkt löschen.

string webhookUri = $"<webhookUri>";
string resourceId="/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>";

await eventGridClient.EventSubscriptions.DeleteAsync(
    scope: resourceId,
    eventSubscriptionName: "<eventSubscriptionName>");

Voraussetzungen

Registrieren des Event Grid-Ressourcenanbieters

In diesem Artikel wird beschrieben, wie Sie den Event Grid-Ressourcenanbieter registrieren. Wenn Sie Event Grid zuvor im selben Abonnement verwendet haben, fahren Sie mit dem nächsten Abschnitt fort.

  1. Führen Sie den folgenden Befehl aus:
Register-AzResourceProvider -ProviderNamespace Microsoft.EventGrid
  1. Es kann einen Moment dauern, bis die Registrierung abgeschlossen ist. Führen Sie Folgendes aus, um den Status zu überprüfen:
Get-AzResourceProvider -ProviderNamespace Microsoft.EventGrid

Wenn RegistrationStatusRegistered ist, können Sie den Vorgang fortsetzen.

Erstellen eines Ereignisabonnements

Installieren Sie zunächst das Azure Communication Services-Modul Az.EventGrid mithilfe des folgenden Befehls.

PS C:\> Install-Module Az.EventGrid
  1. Melden Sie sich mit dem Befehl Connect-AzAccount bei Ihrem Azure-Abonnement an, und folgen Sie den Anleitungen auf dem Bildschirm.
Connect-AzAccount
  1. Wenn Ihre Identität mehreren Abonnements zugeordnet ist, legen Sie das aktive Abonnement auf das Abonnement der Web PubSub-Ressource fest, die Sie verschieben möchten.
$context = Get-AzSubscription -SubscriptionId <subscription-id>
Set-AzContext $context

Verwenden Sie den Befehl , um ein Ereignisabonnement mithilfe von New-AzEventGridSubscription zu erstellen.

$includedEventTypes = "Microsoft.Communication.SMSReceived", "Microsoft.Communication.SMSDeliveryReportReceived"
New-AzEventGridSubscription 
    -EndpointType webhook
    -Endpoint https://azureeventgridviewer.azurewebsites.net/api/updates
    -EventSubscriptionName EventsWebhookSubscription 
    -IncludedEventType $includedEventTypes
    -ResourceId "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>"

Eine Liste der Communication Services-Ereignisse finden Sie unter Communication Services-Ereignisse.

Ereignisabonnements auflisten

Verwenden Sie den Befehl , um alle vorhandenen Ereignisabonnements aufzulisten, die für eine Azure Communication Services-Ressource eingerichtet wurden, indem Sie Get-AzEventGridSubscription verwenden.

Get-AzEventGridSubscription 
    -ResourceId "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>"

Ereignisabonnement aktualisieren

Verwenden Sie den Befehl , um ein vorhandenes Ereignisabonnement mithilfe von Update-AzEventGridSubscription zu aktualisieren.

$includedEventTypes = "Microsoft.Communication.SMSReceived", "Microsoft.Communication.SMSDeliveryReportReceived", "Microsoft.Communication.ChatMessageReceived"
Update-AzEventGridSubscription 
    -EventSubscriptionName ES2 
    -IncludedEventType $includedEventTypes
    -ResourceId "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>" 
    -Endpoint https://azureeventgridviewer2.azurewebsites.net/api/updates
    -SubjectEndsWith "phoneNumber"
 

Löschen eines Ereignisabonnements

Verwenden Sie den Befehl , um ein vorhandenes Ereignisabonnement mithilfe von Remove-AzEventGridSubscription zu löschen.

Get-AzResource 
    -ResourceId "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Communication/CommunicationServices/<acsResourceName>" | Remove-AzEventGridSubscription -EventSubscriptionName ES2

Nächste Schritte