Freigeben über


Integrieren von Pushbenachrichtigungen mithilfe von Azure Event Grid in Ihre Android-, iOS- und Windows-Anwendungen

Mit Azure Communication Services können Sie Echtzeitereignisbenachrichtigungen zuverlässig, erweiterbar und sicher empfangen, indem Sie sie mit Azure Event Grid integrieren. Diese Integration kann verwendet werden, um ein Benachrichtigungssystem zu erstellen, das Pushbenachrichtigungen auf mobilen Geräten an Ihre Benutzer*innen sendet. Erstellen Sie dazu ein Event Grid-Abonnement, das eine Azure-Funktion oder einen Webhook auslöst.

Diagramm, das die Integration von Communication Services in Event Grid zeigt

In diesem Tutorial erfahren Sie, wie Sie Azure Communication Services-Anrufe mit Azure Event Grid implementieren, um Pushbenachrichtigungen auf nativen Plattformen zu empfangen. Azure Event Grid ist ein serverloser Ereignisroutingdienst, der das Erstellen ereignisgesteuerter Anwendungen vereinfacht. In diesem Tutorial erfahren Sie, wie Sie Pushbenachrichtigungen für eingehende Anrufe empfangen.

Sie können einen Blick auf Sprach- und Videoanrufereignisse werfen, die mit Event Grid verfügbar sind.

Aktuelle Einschränkungen mit dem Pushbenachrichtigungsmodell

Die aktuellen Einschränkungen bei der Verwendung des SDK für native Anrufe und Pushbenachrichtigungen lauten wie folgt:

  • Der maximale TTL-Wert beträgt 180 Tage (15.552.000 Sekunden) und der Mindestwert ist 5 Minuten (300 Sekunden). Für CTE (Custom Teams Endpoint) beträgt der maximale TTL-Wert 24 Stunden (86.400 Sekunden).
  • Pushbenachrichtigungen können nicht mit Baidu oder anderen Benachrichtigungstypen übermittelt werden, die von Azure Notification Hub, aber noch nicht im Anruf-SDK unterstützt werden.

Voraussetzungen

Betrachten wir ein Szenario, in dem Sie Benutzer*innen auf ihren mobilen Geräten (iOS und Android) benachrichtigen möchten, wenn sie einen eingehenden Anruf über Azure Communication Services erhalten. Wir verwenden Azure Event Grid, um dies zu erreichen.

Implementierungsschritte

Setup für die Registrierung von Ereignissen in Event Grid

Azure-Funktionen zum Verarbeiten von Geräteinformationen

Die Azure-Funktionen sollten zum Verarbeiten von Geräteregistrierungsdaten verwendet werden. Erstellen Sie drei separate Webhookendpunkte für jeden Registrierungstask.

  • Speichern Sie die Geräteendpunktinformationen.
  • Löschen Sie die Geräteendpunktinformationen.
  • Rufen Sie Geräteendpunktinformationen für einen angegebenen Kommunikationsbezeichner (CommunicationIdentifier) ab.

Sie sollten eine Datenbank verwenden, um Geräteinformationen zu speichern. In diesem Beispiel verwenden wir MongoDB aus Gründen der Einfachheit. Sie können jedoch jede andere beliebige Datenbank verwenden.

Sie können den Code aus dieser Klasse verwenden.

Azure-Funktion zum Übermitteln der Benachrichtigungen

      // Read all the required settings.
      var anhHubConnectionString = Environment.GetEnvironmentVariable("ANH_Hub_Connection_String");
      var anhHubName = Environment.GetEnvironmentVariable("ANH_Hub_Name");
      var anhHubUrl = Environment.GetEnvironmentVariable("ANH_Hub_URL");
      var anhHubApiVersion = Environment.GetEnvironmentVariable("ANH_Hub_Api_Version") ?? Defaults.ANH_DEFAULT_REST_API_VERSION;


      // Generate the SAS token for making the REST API to Azure Notification Hub
      var authorization = GenerateToken(anhHubConnectionString, anhHubName);

      // Create the payload to sent to ANH.
      PushNotificationInfo? pushNotificationInfo = Helpers.ConvertToPNInfo(input, logger) ?? throw new Exception("Could not extract PN info");
      var body = new RootPayloadBody(pushNotificationInfo);

      // Send the payload to all the devices registered.
      // You can get the device info data from the database

      using var client = new HttpClient();
      client.DefaultRequestHeaders.Add("Accept", "application/json");
      client.DefaultRequestHeaders.Add("Authorization", authorization);
      client.DefaultRequestHeaders.Add("ServiceBusNotification-Format", deviceInfo.platform);
      client.DefaultRequestHeaders.Add("ServiceBusNotification-Type", deviceInfo.platform);
      client.DefaultRequestHeaders.Add("ServiceBusNotification-DeviceHandle", deviceInfo.deviceToken);
      if (deviceInfo.platform.Equals(Platform.apple.ToString()))
      {
          client.DefaultRequestHeaders.Add("ServiceBusNotification-Apns-Push-Type", "voip");
      }

      var payload = JsonConvert.SerializeObject(The Event Grid payload model);
  
      using var httpContent = new StringContent(payload, Encoding.UTF8, "application/json");
      var httpResponse = await client.PostAsync(new Uri(anhHubUrl), httpContent).ConfigureAwait(false);
                

Sie können den Code aus dieser Klasse verwenden.

Azure-Funktion zum Verarbeiten des Event Grid-Triggers

Konfigurieren Sie nach der Bereitstellung der Azure-Funktionen die Event Grid- und Azure Communication Services-Ressource, um auf das Ereignis IncomingCall zu lauschen. Befolgen Sie diese Schritte, um Ihre Ressourcen einfach zu konfigurieren.

Registrieren der Pushbenachrichtigungen

In Ihrer nativen Anruf-App: Anstatt beim Starten der Anwendung die API CallAgent.registerPushNotifications (iOS SDK) mit Gerätetoken aufzurufen, senden Sie das Gerätetoken an die Azure-Funktions-App, und senden Sie dann eine POST-Anforderung an die AddDeviceToken-Funktion (Registrieren von Endpunkt 1).

Testen Ihrer Implementierung

Testen Sie Ihre Implementierung, indem Sie Aufrufe an Ihre Azure Communication Services-Anwendung tätigen. Stellen Sie sicher, dass Ihre iOS- und Android-Geräte Pushbenachrichtigungen empfangen können, wenn eingehende Anrufe auftreten.

Zusammenfassung des Workflows

  1. Wenn ein Anruf für eine*n Azure Communication Services-Benutzer*in eingeht: Die Azure Communication-Anrufressource löst EventGridTrigger und die Azure-Funktion aus, und die Nutzdaten des eingehenden Anrufs wird ausgeführt.
  2. Die Azure-Funktion ruft die Gerätetokeninformationen aus der Datenbank ab.
  3. Für die Konvertierung der Nutzdaten in die Nutzdaten der VOIP-Pushbenachrichtigung ist PushNotificationInfo.fromDictionary erforderlich (iOS SDK).
  4. Die Azure-Funktion sendet die Pushnutzdaten mithilfe der REST-API, die von Azure Notification Hub bereitgestellt wird.
  5. Der Push wird erfolgreich an das Gerät übermittelt, und die API CallAgent.handlePush sollte aufgerufen werden.

Im Tutorial haben Sie gelernt, wie Sie Azure Communication Services Calling mit Azure Event Grid für Pushbenachrichtigungen implementieren. Wenn Sie Anrufe mit Event Grid integrieren und Ereignisse in Ihren nativen Plattform-Apps verarbeiten, können Sie Benutzer*innen in Echtzeit über eingehende Anrufe benachrichtigen. Azure Event Grid kann die Benutzerfreundlichkeit sowie die Kommunikation innerhalb Ihrer Anwendung verbessern.

Beispiel

Das folgende Beispiel funktioniert für alle nativen Plattformen (iOS, Android, Windows). Ein Codebeispiel finden Sie hier.

Nächste Schritte