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
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Üzembe helyezett Communication Services-erőforrás. Hozzon létre egy Communication Services-erőforrást.
- Felhasználói hozzáférési jogkivonat a hívó ügyfél engedélyezéséhez. További információ: Hozzáférési jogkivonatok létrehozása és kezelése.
- Nem kötelező: Végezze el a rövid útmutatót a hanghívás alkalmazáshoz való hozzáadásához
Telepítse a SDK-t
Keresse meg a projektszintű build.gradle fájlt, és adja hozzá mavenCentral()
a következő alatt és allprojects
alatt 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 DeviceManager
elő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 isTranscriptionActive
addOnIsTranscriptionActiveChangedListener
Call
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.
A csomag és a függőségek telepítése a CocoaPods használatával
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
Futtassa az
pod install
parancsot.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 AVFoundation
is. 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 CallAgent
CallClient
olyan 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:
- Nyissa meg a NuGet-Csomagkezelő az Tools>NuGet Csomagkezelő> Manage NuGet Packages for Solution lehetőséget választva.
- Válassza a Tallózás lehetőséget, majd írja be
Azure.Communication.Calling.WindowsClient
a keresőmezőbe. - Győződjön meg arról, hogy be van jelölve az Előzetes belefoglalás jelölőnégyzet.
- Jelölje ki a
Azure.Communication.Calling.WindowsClient
csomagot, majd válassza azAzure.Communication.Calling.WindowsClient
1.4.0-beta.1 vagy egy újabb verziót. - Jelölje be a jobb oldali lapon a Communication Services projektnek megfelelő jelölőnégyzetet.
- 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;