Configurer des notifications d’appel un-à-un et push dans la bibliothèque d’interface utilisateur
La bibliothèque d’interface utilisateur fournit une prise en charge prête à l’emploi pour passer un appel par des identificateurs de participants Azure Communication Services. Pour prendre en charge les appels un-à-un, la bibliothèque d’interface utilisateur fournit des notifications d’appel entrantes. Vous pouvez également utiliser Azure Communication Services comme source d’événements Azure Event Grid pour les appels.
Dans cet article, vous apprendrez à effectuer correctement des appels un à un en utilisant la bibliothèque d'interface utilisateur dans votre application.
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Une ressource Communication Services déployée. Créez une ressource Communication Services.
- Un jeton d’accès utilisateur pour activer le client d’appel. Obtenez un jeton d’accès utilisateur.
- Facultatif : complétion du guide de démarrage rapide pour prendre en main les composites de la bibliothèque d’interface utilisateur.
Configurer les fonctionnalités
Pour plus d’informations, consultez la bibliothèque d’interface utilisateur Android open source et l’exemple de code d’application.
Configurer des autorisations pour les notifications Push
Pour configurer des notifications Push, vous avez besoin d’un compte Firebase avec Firebase Cloud Messaging (FCM) activé. Votre service FCM doit être connecté à une instance Azure Notification Hubs. Pour plus d’informations, consultez Notifications Communication Services. Vous devez également utiliser Android Studio version 3.6 ou ultérieure pour générer votre application.
Pour que l’application Android reçoive des messages de notification de FCM, elle a besoin d’un ensemble d’autorisations. Dans votre fichier AndroidManifest.xml
, ajoutez le jeu d’autorisations suivant juste après la balise <manifest ...>
ou </application>
.
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
Ajouter des notifications entrantes à votre application mobile
Azure Communication Services s’intègre à Azure Event Grid et à Azure Notification Hubs. Vous pouvez ainsi ajouter des notifications Push à vos applications dans Azure.
Inscrire/Annuler l’inscription pour les notifications Push du hub de notification
Pour vous inscrire aux notifications Push, l’application doit appeler registerPushNotification()
sur une instance de CallComposite
avec un jeton d’inscription d’appareil.
Pour obtenir le jeton d’inscription de l’appareil, ajoutez le Kit de développement logiciel (SDK) Firebase à votre instance du module d’application build.gradle
. Pour recevoir des notifications de Firebase, intégrez Azure Notification Hubs en suivant les instructions des notifications Communication Services.
val deviceRegistrationToken = "" // From Firebase
callComposite.registerPushNotification(deviceRegistrationToken).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Gérer les notifications Push reçues à partir d’Event Grid ou du hub de notification
Pour recevoir les notifications Push relatives aux appels entrants, appelez handlePushNotification
sur une instance CallComposite
avec une charge utile.
Pour obtenir la charge utile à partir de FCM, commencez par créer un service (Fichier>Nouveau>Service>Service) qui étend la classe du Kit de développement logiciel (SDK) Firebase FirebaseMessagingService
et remplace la méthode onMessageReceived
. Cette méthode est le gestionnaire d’événements appelé lorsque FCM remet la notification Push à l’application.
// On Firebase onMessageReceived
val pushNotification = CallCompositePushNotification(remoteMessage.data)
callComposite.handlePushNotification(pushNotification).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
S’inscrire à des notifications d’appel entrant
Pour recevoir une notification d’appel entrant après handlePushNotification
s’être abonné à CallCompositeIncomingCallEvent
et CallCompositeIncomingCallCancelledEvent
. CallCompositeIncomingCallEvent
contient les informations callId et appelant entrantes. CallCompositeIncomingCallCancelledEvent
contient callId et le code d’annulation d’appel résolution des problèmes dans Azure Communication Services.
private var incomingCallEvent: IncomingCallEvent? = null
private var incomingCallCancelledEvent: IncomingCallCancelledEvent? = null
class IncomingCallEvent : CallCompositeEventHandler<CallCompositeIncomingCallEvent> {
override fun handle(eventArgs: CallCompositeIncomingCallEvent?) {
// Display incoming call UI to accept/decline a call
// CallCompositeIncomingCallEvent contains call id and caller information
}
}
class IncomingCallCancelledEvent : CallCompositeEventHandler<CallCompositeIncomingCallCancelledEvent> {
override fun handle(eventArgs: CallCompositeIncomingCallCancelledEvent?) {
// Call-ended event when a call is declined or not accepted
}
}
// Event subscription
incomingCallEvent = IncomingCallEvent()
callComposite.addOnIncomingCallEventHandler(incomingCallEvent)
incomingCallCancelledEvent = IncomingCallCancelledEvent()
callComposite.addOnIncomingCallCancelledEventHandler(incomingCallEndEvent)
// Event unsubscribe
callComposite.removeOnIncomingCallEventHandler(incomingCallEvent)
callComposite.removeOnIncomingCallCancelledEventHandler(incomingCallEndEvent)
Gérer les appels
Pour accepter les appels, passez un appel à accept
. Pour refuser les appels, effectuez un appel à reject
.
// Accept call
callComposite.accept(applicationContext, incomingCallId, localOptions)
// Decline call
callComposite.reject(incomingCallId)
Composer d’autres participants
Pour commencer l’appel avec d’autres participants, créez des CallCompositeStartCallOptions
avec les ID bruts des participants à partir de CommunicationIdentity
et de launch
.
Pour plus d’informations, consultez la bibliothèque d’interface utilisateur iOS open source et l’exemple de code d’application.
Configurer des notifications Push
Une notification Push mobile est la notification contextuelle que vous recevez sur un appareil mobile. Cet article se concentre sur les notifications Push voice over Internet Protocol (VoIP).
Les sections suivantes expliquent comment s’inscrire à des notifications Push, les gérer et annuler cette inscription. Avant de démarrer ces tâches, effectuez les prérequis suivants :
- Dans Xcode, accédez à Signing & Capabilities (Signature et fonctionnalités). Ajoutez une fonctionnalité en sélectionnant + Capability (Fonctionnalité), puis Push Notifications (Notifications Push).
- Ajoutez une autre fonctionnalité en sélectionnant + Capability, puis Background Modes (Modes d’arrière-plan).
- Sous Background Modes, cochez les cases Voice over IP (Voix sur IP) et Remote notifications (Notifications distantes).
Ajouter des notifications entrantes à votre application mobile
Azure Communication Services s’intègre à Azure Event Grid et à Azure Notification Hubs. Vous pouvez ainsi ajouter des notifications Push à vos applications dans Azure.
Inscrire/annuler l’inscription pour les notifications Push du hub de notification
Pour vous inscrire aux notifications Push, l’application doit appeler registerPushNotifications()
sur une instance de CallComposite
avec un jeton d’inscription d’appareil.
// to register
let deviceToken: Data = pushRegistry?.pushToken(for: PKPushType.voIP)
callComposite.registerPushNotifications(
deviceRegistrationToken: deviceToken) { result in
switch result {
case .success:
// success
case .failure(let error):
// failure
}
}
// to unregister
callComposite.unregisterPushNotification()
Gérer les notifications Push reçues à partir d’Event Grid ou du hub de notification
Pour recevoir les notifications Push relatives aux appels entrants, appelez handlePushNotification()
sur une instance CallComposite
avec une charge utile de dictionnaire.
Lorsque vous utilisez handlePushNotification()
et que les options CallKit sont définies, vous recevez une notification CallKit pour accepter ou refuser les appels.
// App is in the background
// push notification contains from/to communication identifiers and event type
let pushNotification = PushNotification(data: payload.dictionaryPayload)
let callKitOptions = CallKitOptions(...//CallKit options)
CallComposite.reportIncomingCall(pushNotification: pushNotification,
callKitOptions: callKitOptions) { result in
if case .success() = result {
DispatchQueue.global().async {
// You don't need to wait for a Communication Services token to handle the push because
// Communication Services common receives a callback function to get the token with refresh options
// create call composite and handle push notification
callComposite.handlePushNotification(pushNotification: pushNotification)
}
}
}
// App is in the foreground
let pushNotification = PushNotification(data: dictionaryPayload)
callComposite.handlePushNotification(pushNotification: pushNotification) { result in
switch result {
case .success:
// success
case .failure(let error):
// failure
}
}
S’inscrire aux notifications d’appel entrantes sur le handle push
Pour recevoir une notification d’appel entrant après handlePushNotification
s’être abonné à onIncomingCall
et onIncomingCallCancelled
. IncomingCall
contient les informations callId et appelant entrantes. IncomingCallCancelled
contient callId et le code d’annulation d’appel résolution des problèmes dans Azure Communication Services.
let onIncomingCall: (IncomingCall) -> Void = { [] incomingCall in
// Incoming call id and caller info
}
let onIncomingCallEnded: (IncomingCallCancelled) -> Void = { [] incomingCallCancelled in
// Incoming call cancelled code with callId
}
callComposite.events.onIncomingCall = onIncomingCall
callComposite.events.onIncomingCallEnded = onIncomingCallEnded
Désactiver l’envoi (push) interne pour l’appel entrant
Pour recevoir des notifications Push uniquement depuis EventGrid
et APNS
définie disableInternalPushForIncomingCall
sur true dans CallCompositeOptions
. Si la valeur disableInternalPushForIncomingCall
est true, l’événement de notification Push de la bibliothèque d’interface utilisateur a été reçu uniquement lorsque handlePushNotification
sera appelé. L’option disableInternalPushForIncomingCall
permet d’arrêter la réception de notifications de CallComposite
en mode premier plan. Ce paramètre ne contrôle pas EventGrid
et ne définit pas les paramètres NotificationHub
.
let options = CallCompositeOptions(disableInternalPushForIncomingCall: true)
Lancer le composite sur l’appel entrant accepté à partir de l’appel du Kit de développement logiciel (SDK) CallKit
Le Kit de développement logiciel (SDK) iOS d’appel Azure Communication Services prend en charge l’intégration de CallKit. Vous pouvez activer cette intégration dans la bibliothèque d’interface utilisateur en configurant une instance de CallCompositeCallKitOption
. Pour plus d’informations, consultez Intégrer à CallKit.
Abonnez-vous si onIncomingCallAcceptedFromCallKit
CallKit à partir du Kit de développement logiciel (SDK) appelant est activé. Lors de l’appel accepté, lancez callComposite
avec l’ID d’appel.
let onIncomingCallAcceptedFromCallKit: (callId) -> Void = { [] callId in
// Incoming call accepted call id
}
callComposite.events.onIncomingCallAcceptedFromCallKit = onIncomingCallAcceptedFromCallKit
// launch composite with/without local options
// Note: as call is already accepted, setup screen will not be displayed
callComposite.launch(callIdAcceptedFromCallKit: callId)
Gérer les appels avec CallComposite
Pour accepter les appels, passez un appel à accept
. Pour refuser les appels, effectuez un appel à reject
.
// Accept call
callComposite.accept(incomingCallId,
... // CallKit and local options
)
// Decline call
callComposite.reject(incomingCallId)
Composer d’autres participants
Pour démarrer des appels avec d’autres participants, lancez callComposite
avec la liste des participants de CommunicationIdentifier
.
// [CommunicationIdentifier]
// use createCommunicationIdentifier(fromRawId: "raw id")
callComposite.launch(participants: <list of CommunicationIdentifier>,
localOptions: localOptions)