Hívásátírási állapot megjelenítése az ügyfélen

Feljegyzés

A hívásátírás állapota csak Teams-értekezleteken érhető el. Jelenleg nem támogatott az Azure Communication Services és az Azure Communication Services hívásainak átírási állapota.

A hívásátírás használatakor érdemes lehet tudatni a felhasználókat, hogy a hívás átírása folyamatban van. Megmutatjuk, hogy hogyan.

Előfeltételek

Telepítse a SDK-t

Keresse meg a projektszintű build.gradle fájlt, és adja hozzá mavenCentral() a következő alatt és allprojectsalatt található buildscript adattárak listájához:

buildscript {
    repositories {
    ...
        mavenCentral()
    ...
    }
}
allprojects {
    repositories {
    ...
        mavenCentral()
    ...
    }
}

Ezután a modulszintű build.gradle fájlban adja hozzá a következő sorokat a dependencies szakaszhoz:

dependencies {
    ...
    implementation 'com.azure.android:azure-communication-calling:1.0.0'
    ...
}

A szükséges objektumok inicializálása

Példány létrehozásához CallAgent meg kell hívnia a createCallAgent metódust egy CallClient példányon. Ez a hívás aszinkron módon egy CallAgent példányobjektumot ad vissza.

A createCallAgent metódus argumentumként veszi fel CommunicationUserCredential a metódust, amely egy hozzáférési jogkivonatot foglal magában.

A hozzáféréshez DeviceManagerelőször létre kell hoznia egy példányt callAgent . Ezután használhatja a metódust a CallClient.getDeviceManager lekéréshez DeviceManager.

String userToken = '<user token>';
CallClient callClient = new CallClient();
CommunicationTokenCredential tokenCredential = new CommunicationTokenCredential(userToken);
android.content.Context appContext = this.getApplicationContext(); // From within an activity, for instance
CallAgent callAgent = callClient.createCallAgent(appContext, tokenCredential).get();
DeviceManager deviceManager = callClient.getDeviceManager(appContext).get();

A hívó megjelenítendő nevének beállításához használja az alábbi alternatív módszert:

String userToken = '<user token>';
CallClient callClient = new CallClient();
CommunicationTokenCredential tokenCredential = new CommunicationTokenCredential(userToken);
android.content.Context appContext = this.getApplicationContext(); // From within an activity, for instance
CallAgentOptions callAgentOptions = new CallAgentOptions();
callAgentOptions.setDisplayName("Alice Bob");
DeviceManager deviceManager = callClient.getDeviceManager(appContext).get();
CallAgent callAgent = callClient.createCallAgent(appContext, tokenCredential, callAgentOptions).get();

Figyelmeztetés

Az Android SDK-t hívó Azure Communication Services 1.1.0-beta.1-es és 1.1.0-s bétaverziójáig az isTranscriptionActiveaddOnIsTranscriptionActiveChangedListenerCall objektum része. Az új bétaverziók esetében ezeket az API-kat az alábbiakhoz hasonlóan kiterjesztett funkcióként Call helyeztük át.

A hívásátírás az alapvető Call objektum kiterjesztett funkciója. Először be kell szereznie az átírási funkció objektumát:

TranscriptionCallFeature callTranscriptionFeature = call.feature(Features.TRANSCRIPTION);

Ezután annak ellenőrzéséhez, hogy a hívás át van-e írva, vizsgálja meg a isTranscriptionActive következő tulajdonságát callTranscriptionFeature: . A visszaadott érték boolean.

boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();

Az átiratok módosításaira is feliratkozhat:

private void handleCallOnIsTranscriptionChanged(PropertyChangedEvent args) {
    boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();
}

callTranscriptionFeature.addOnIsTranscriptionActiveChangedListener(handleCallOnIsTranscriptionChanged);

A rendszer beállítása

Az Xcode-projekt létrehozása

Az Xcode-ban hozzon létre egy új iOS-projektet, és válassza ki az egynézetes alkalmazássablont . Ez a rövid útmutató a SwiftUI-keretrendszert használja, ezért a Nyelvet Swiftrekell állítania, az interfészt pedig SwiftUI-ra.

Ebben a rövid útmutatóban nem fog teszteket létrehozni. Nyugodtan törölje a Belefoglalási tesztek jelölőnégyzet jelölését.

Screenshot that shows the window for creating a project within Xcode.

A csomag és a függőségek telepítése a CocoaPods használatával

  1. Hozzon létre egy Podfile-t az alkalmazáshoz, például:

    platform :ios, '13.0'
    use_frameworks!
    target 'AzureCommunicationCallingSample' do
        pod 'AzureCommunicationCalling', '~> 1.0.0'
    end
    
  2. Futtassa az pod install parancsot.

  3. Megnyitás .xcworkspace Xcode használatával.

Hozzáférés kérése a mikrofonhoz

Az eszköz mikrofonjának eléréséhez frissítenie kell az alkalmazás információs tulajdonságlistáját a használatával NSMicrophoneUsageDescription. A társított értéket egy sztringre állítja, amely szerepelni fog abban a párbeszédpanelben, amellyel a rendszer hozzáférést kér a felhasználótól.

Kattintson a jobb gombbal a projektfa Info.plist bejegyzésére, majd válassza a Megnyitás forráskódként>lehetőséget. Adja hozzá a következő sorokat a legfelső szintű <dict> szakaszhoz, majd mentse a fájlt.

<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for VOIP calling.</string>

Az alkalmazás-keretrendszer beállítása

Nyissa meg a projekt ContentView.swift fájlját. Adjon hozzá egy deklarációt import a fájl tetejére a AzureCommunicationCalling tár importálásához. Ezenkívül importálja az importálást AVFoundationis. Szüksége lesz rá a kódban található hangengedély-kérelmekhez.

import AzureCommunicationCalling
import AVFoundation

A CallAgent inicializálása

Egy példány létrehozásához CallAgentCallClientolyan metódust callClient.createCallAgent kell használnia, amely aszinkron módon ad vissza egy CallAgent objektumot az inicializálás után.

Hívásügyfél létrehozásához adjon át egy objektumot CommunicationTokenCredential :

import AzureCommunication

let tokenString = "token_string"
var userCredential: CommunicationTokenCredential?
do {
    let options = CommunicationTokenRefreshOptions(initialToken: token, refreshProactively: true, tokenRefresher: self.fetchTokenSync)
    userCredential = try CommunicationTokenCredential(withOptions: options)
} catch {
    updates("Couldn't created Credential object", false)
    initializationDispatchGroup!.leave()
    return
}

// tokenProvider needs to be implemented by Contoso, which fetches a new token
public func fetchTokenSync(then onCompletion: TokenRefreshOnCompletion) {
    let newToken = self.tokenProvider!.fetchNewToken()
    onCompletion(newToken, nil)
}

Adja át a CommunicationTokenCredential létrehozott objektumot CallClient, és állítsa be a megjelenítendő nevet:

self.callClient = CallClient()
let callAgentOptions = CallAgentOptions()
options.displayName = " iOS Azure Communication Services User"

self.callClient!.createCallAgent(userCredential: userCredential!,
    options: callAgentOptions) { (callAgent, error) in
        if error == nil {
            print("Create agent succeeded")
            self.callAgent = callAgent
        } else {
            print("Create agent failed")
        }
})

Figyelmeztetés

Az Azure Communication Services Calling iOS SDK 1.1.0-s és bétaverziójának 1.1.0-beta.1-es verziójáig az isTranscriptionActive objektum része Call , és didChangeTranscriptionState a delegálás része CallDelegate . Az új bétaverziók esetében ezeket az API-kat az alábbiakhoz hasonlóan kiterjesztett funkcióként Call helyeztük át.

A hívásátírás az alapvető Call objektum kiterjesztett funkciója. Először be kell szereznie az átírási funkció objektumát:

let callTranscriptionFeature = call.feature(Features.transcription)

Ezután annak ellenőrzéséhez, hogy a hívás át van-e írva, vizsgálja meg a isTranscriptionActive következő tulajdonságát callTranscriptionFeature: . A visszaadott érték Bool.

let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

Az átírási módosításokra úgy is előfizethet, ha megvalósítja TranscriptionCallFeatureDelegate az osztály delegáltját az eseményhez didChangeTranscriptionState:

callTranscriptionFeature.delegate = self

// didChangeTranscriptionState is a member of TranscriptionCallFeatureDelegate
public func transcriptionCallFeature(_ transcriptionCallFeature: TranscriptionCallFeature, didChangeTranscriptionState args: PropertyChangedEventArgs) {
    let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive
}

A rendszer beállítása

A Visual Studio-projekt létrehozása

UWP-alkalmazások esetén a Visual Studio 2022-ben hozzon létre egy új Üres alkalmazás (Univerzális Windows) projektet. Miután megadta a projekt nevét, nyugodtan válasszon bármelyik Windows SDK-t a 10.0.17763.0-s verziónál később.

WinUI 3-alkalmazások esetén hozzon létre egy új projektet az Üres alkalmazás, csomagolt (WinUI 3 in Desktop) sablonnal egy egyoldalas WinUI 3-alkalmazás beállításához. Windows-alkalmazás SDK 1.3-es vagy újabb verzió szükséges.

Telepítse a csomagot és a függőségeket a NuGet Csomagkezelő

A hívó SDK API-k és kódtárak nyilvánosan elérhetők NuGet-csomagon keresztül.

Az alábbi lépések szemléltetik a hívó SDK NuGet-csomag megkeresését, letöltését és telepítését:

  1. Nyissa meg a NuGet-Csomagkezelő az Tools>NuGet Csomagkezelő> Manage NuGet Packages for Solution lehetőséget választva.
  2. Válassza a Tallózás lehetőséget, majd írja be Azure.Communication.Calling.WindowsClient a keresőmezőbe.
  3. Győződjön meg arról, hogy be van jelölve az Előzetes belefoglalás jelölőnégyzet.
  4. Jelölje ki a Azure.Communication.Calling.WindowsClient csomagot, majd válassza az Azure.Communication.Calling.WindowsClient1.4.0-beta.1 vagy egy újabb verziót.
  5. Jelölje be a jobb oldali lapon a Communication Services projektnek megfelelő jelölőnégyzetet.
  6. Válassza a Telepítés gombot.

A hívásátírás az alapvető Call objektum kiterjesztett funkciója. Először be kell szereznie az átírási funkció objektumát:

TranscriptionCallFeature transcriptionFeature = call.Features.Transcription;

Ezután annak ellenőrzéséhez, hogy a hívás át van-e írva, vizsgálja meg a IsTranscriptionActive következő tulajdonságát transcriptionFeature: . A visszaadott érték boolean.

boolean isTranscriptionActive = transcriptionFeature.isTranscriptionActive;

Az átiratok módosításaira is feliratkozhat:

private async void Call__OnIsTranscriptionActiveChanged(object sender, PropertyChangedEventArgs args)
    boolean isTranscriptionActive = transcriptionFeature.IsTranscriptionActive();
}

transcriptionFeature.IsTranscriptionActiveChanged += Call__OnIsTranscriptionActiveChanged;

Következő lépések