Partager via


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

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.

    val participants: List<CommunicationIdentifier> // participants to dial
    callComposite.launch(context, participants, localOptions)

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 :

  1. Dans Xcode, accédez à Signing & Capabilities (Signature et fonctionnalités). Ajoutez une fonctionnalité en sélectionnant + Capability (Fonctionnalité), puis Push Notifications (Notifications Push).
  2. Ajoutez une autre fonctionnalité en sélectionnant + Capability, puis Background Modes (Modes d’arrière-plan).
  3. 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)

Étapes suivantes