Sdílet prostřednictvím


Nastavení volání 1:1 a nabízených oznámení v knihovně uživatelského rozhraní

Knihovna uživatelského rozhraní poskytuje připravenou podporu pro volání 1:1 pomocí identifikátorů účastníků služby Azure Communication Services. Pro podporu volání 1:1 poskytuje knihovna uživatelského rozhraní oznámení o příchozích hovorech. Azure Communication Services můžete také použít jako zdroj událostí Azure Event Gridu pro volání.

V tomto článku se dozvíte, jak správně volat 1:1 pomocí knihovny uživatelského rozhraní ve vaší aplikaci.

Požadavky

Nastavení funkcí

Další informace najdete v opensourcové knihovně uživatelského rozhraní Androidu a vzorovém kódu aplikace.

Nastavení oprávnění pro nabízená oznámení

K nastavení nabízených oznámení potřebujete účet Firebase s povolenou službou Firebase Cloud Messaging (FCM). Vaše služba FCM musí být připojená k instanci Azure Notification Hubs. Další informace najdete v tématu Oznámení komunikačních služeb. K sestavení aplikace musíte také použít Android Studio verze 3.6 nebo novější.

Aby aplikace pro Android přijímala zprávy s oznámeními z FCM, potřebuje sadu oprávnění. AndroidManifest.xml Do souboru přidejte následující sadu oprávnění za <manifest ...> značku nebo </application> značku.

<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" />

Přidání příchozích oznámení do mobilní aplikace

Služba Azure Communication Services se integruje se službou Azure Event Grid a Službou Azure Notification Hubs, takže můžete do svých aplikací v Azure přidávat nabízená oznámení .

Registrace nebo zrušení registrace nabízených oznámení centra oznámení

Aby se aplikace zaregistrovala k nabízeným oznámením, musí volat registerPushNotification() CallComposite instanci pomocí tokenu registrace zařízení.

Pokud chcete získat token registrace zařízení, přidejte do instance modulu build.gradle aplikace sadu Firebase SDK. Pokud chcete přijímat oznámení z Firebase, integrujte službu Azure Notification Hubs podle pokynů v oznámeních služby Communication Services.

    val deviceRegistrationToken = "" // From Firebase
    callComposite.registerPushNotification(deviceRegistrationToken).whenComplete { _, throwable ->
        if (throwable != null) {
            // Handle error
        }
    }

Zpracování nabízených oznámení přijatých z Event Gridu nebo centra oznámení

Pokud chcete přijímat nabízená oznámení pro příchozí hovory, zavolejte handlePushNotification instanci CallComposite s datovou částí.

Pokud chcete získat datovou část z FCM, začněte vytvořením nové služby (File>New>Service Service>), která rozšiřuje FirebaseMessagingService třídu Firebase SDK a přepíše metodu.onMessageReceived Tato metoda je obslužná rutina události, která volala, když FCM doručí nabízené oznámení do aplikace.

    // On Firebase onMessageReceived
    val pushNotification = CallCompositePushNotification(remoteMessage.data)
    callComposite.handlePushNotification(pushNotification).whenComplete { _, throwable ->
        if (throwable != null) {
            // Handle error
        }
    }

Registrace oznámení o příchozích hovorech

Příjem oznámení o příchozích hovorech po handlePushNotificationpřihlášení k odběru CallCompositeIncomingCallEvent a CallCompositeIncomingCallCancelledEvent. CallCompositeIncomingCallEvent obsahuje příchozí ID volání a informace o volajícím. CallCompositeIncomingCallCancelledEvent obsahuje id volání a řešení potíží s kódem zrušení volání ve službě 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)

Zpracování volání

Pokud chcete přijímat hovory, zavolejte na accept. Chcete-li odmítnout volání, zavolejte na reject.

// Accept call
callComposite.accept(applicationContext, incomingCallId, localOptions)

// Decline call
callComposite.reject(incomingCallId)

Vytáčení dalších účastníků

Chcete-li zahájit hovory s dalšími účastníky, vytvořte CallCompositeStartCallOptions nezpracovaná ID účastníků z CommunicationIdentity a launch.

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

Další informace najdete v opensourcové knihovně uživatelského rozhraní iOS a ukázkovém kódu aplikace.

Nastavení nabízených oznámení

Mobilní nabízené oznámení je automaticky otevírané oznámení, které se zobrazí v mobilním zařízení. Tento článek se zaměřuje na nabízená oznámení protokolu VoIP (Voice over Internet Protocol).

Následující části popisují, jak se registrovat, zpracovávat a zrušit registraci nabízených oznámení. Před zahájením těchto úkolů proveďte tyto požadavky:

  1. V Xcode přejděte do možností podepisování a funkcí. Přidejte funkci tak , že vyberete + Schopnost a pak vyberete Nabízená oznámení.
  2. Přidejte další funkci výběrem + Možnosti a pak vyberte Režimy pozadí.
  3. V části Režimy pozadí zaškrtněte políčka Hlas přes IP adresu a vzdálená oznámení .

Přidání příchozích oznámení do mobilní aplikace

Služba Azure Communication Services se integruje se službou Azure Event Grid a Službou Azure Notification Hubs, takže můžete do svých aplikací v Azure přidávat nabízená oznámení .

Registrace nebo zrušení registrace nabízených oznámení centra oznámení

Aby se aplikace zaregistrovala k nabízeným oznámením, musí volat registerPushNotifications() CallComposite instanci pomocí tokenu registrace zařízení.

    // 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()

Zpracování nabízených oznámení přijatých z Event Gridu nebo centra oznámení

Pokud chcete přijímat nabízená oznámení pro příchozí hovory, zavolejte handlePushNotification() instanci CallComposite s datovou částí slovníku.

Při použití handlePushNotification() a nastavení možností CallKit se zobrazí oznámení CallKitu pro příjem nebo odmítnutí hovorů.

    // 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
        }
    }

Registrace pro oznámení příchozích hovorů při zpracování nabízených oznámení

Příjem oznámení o příchozích hovorech po handlePushNotificationpřihlášení k odběru onIncomingCall a onIncomingCallCancelled. IncomingCall obsahuje příchozí ID volání a informace o volajícím. IncomingCallCancelled obsahuje id volání a řešení potíží s kódem zrušení volání ve službě 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

Zakázání interního nabízení příchozích hovorů

Chcete-li přijímat nabízená oznámení pouze z EventGrid a nastavena disableInternalPushForIncomingCall na hodnotu true in CallCompositeOptionsAPNS . Pokud disableInternalPushForIncomingCall je true, událost nabízených oznámení z knihovny uživatelského rozhraní přijata pouze v případě, že handlePushNotification bude volána. Tato možnost disableInternalPushForIncomingCall pomáhá zastavit příjem oznámení v CallComposite režimu popředí. Toto nastavení neřídí EventGrid a NotificationHub nastavení.

    let options = CallCompositeOptions(disableInternalPushForIncomingCall: true)

Spuštění složeného při příchozím hovoru přijatém z volání sady SDK CallKit

Sada Azure Communication Services Volající iOS SDK podporuje integraci CallKitu. Tuto integraci můžete povolit v knihovně uživatelského rozhraní konfigurací instance CallCompositeCallKitOption. Další informace naleznete v tématu Integrace s CallKit.

Přihlaste se k odběru onIncomingCallAcceptedFromCallKit , pokud je povolená sada CallKit z volající sady SDK. Při přijetí hovoru spusťte callComposite id hovoru.

    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)

Zpracování hovorů pomocí CallComposite

Pokud chcete přijímat hovory, zavolejte na accept. Chcete-li odmítnout volání, zavolejte na reject.

// Accept call
callComposite.accept(incomingCallId, 
                     ... // CallKit and local options
                     )

// Decline call
callComposite.reject(incomingCallId)

Vytáčení dalších účastníků

Chcete-li zahájit hovory s ostatními účastníky, spusťte callComposite seznam CommunicationIdentifierúčastníků .

    // [CommunicationIdentifier]
    // use createCommunicationIdentifier(fromRawId: "raw id")
    callComposite.launch(participants: <list of CommunicationIdentifier>,
                         localOptions: localOptions)

Další kroky