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.
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
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Eine bereitgestellte Communication Services-Ressource. Erstellen Sie eine Communication Services-Ressource.
- Ein
User Access Token
, um den Anrufclient zu aktivieren. Weitere Informationen zum Abrufen einesUser Access Token
- Das Azure Event Grid-Thema: Erstellen Sie ein Azure Event Grid-Thema in Ihrem Azure-Abonnement, das zum Senden von Ereignissen verwendet wird, wenn eingehende Anrufe auftreten.
- Optional: Führen Sie den Schnellstart für Erste Schritte für das Hinzufügen von Anrufen zu Ihrer Anwendung durch
- Die optionale Azure Functions-Erweiterung zum Entwickeln Ihrer eigenen serverlosen Anwendungen. Beispielsweise können Sie Ihre Authentifizierungsanwendung in Azure Functions hosten.
- Optional finden Sie in der Schnellstartanleitung Informationen zum Umgang mit Sprach- und Videoanrufereignissen.
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
- 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. - Die Azure-Funktion ruft die Gerätetokeninformationen aus der Datenbank ab.
- Für die Konvertierung der Nutzdaten in die Nutzdaten der VOIP-Pushbenachrichtigung ist
PushNotificationInfo.fromDictionary
erforderlich (iOS SDK). - Die Azure-Funktion sendet die Pushnutzdaten mithilfe der REST-API, die von Azure Notification Hub bereitgestellt wird.
- 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
- Weitere Informationen finden Sie unter Ereignisbehandlung in Azure Communication Services.
- Weitere Informationen finden Sie unter Benachrichtigungsalternativen in Azure Communication Services.
- Weitere Informationen finden Sie unter Hinzufügen von herkömmlichen Pushbenachrichtigungen in Azure Communication Services.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für