Megosztás a következőn keresztül:


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

Ahhoz, hogy átírhassa őket, be kell gyűjtenie a hívás összes résztvevőjének hozzájárulását. A Microsoft Teams lehetővé teszi a felhasználók számára az átírás indítását az értekezleteken vagy hívásokon. Az átírás indításakor eseményt kap, ellenőrizheti az átírás állapotát, ha az átírás a híváshoz vagy értekezlethez való csatlakozás előtt kezdődött.

Előfeltételek

Támogatás

Az alábbi táblázatok határozzák meg a hívásátírás támogatását az Azure Communication Servicesben.

Identitások és hívástípusok

Az alábbi táblázatok az adott hívástípus és identitás átírásának támogatását mutatják be.

Identitások Teams-értekezlet Szoba 1:1 hívás Csoportos hívás 1:1 Teams interop hívás Csoportos Teams interop hívás
Communication Services-felhasználó ✔️ ✔️ ✔️
Microsoft 365-felhasználó ✔️ ✔️ ✔️

Üzemeltetés

Az alábbi táblázatok az egyes API-k támogatását mutatják be az SDK egyéni identitástípusokhoz való meghívásához.

Üzemeltetés Communication Services-felhasználó Microsoft 365-felhasználó
Az átírást megkezdő esemény lekérése ✔️ ✔️
Átírási állapot lekérése ✔️ ✔️
Átírás indítása vagy leállítása

SDK-k

Az alábbi táblázatok az egyes Azure Communication Services SDK-k átírásának támogatását mutatják be.

Platformok Webes Webes felhasználói felület iOS iOS felhasználói felület Android Android felhasználói felület Windows
Támogatott ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Telepítse a SDK-t

npm install A parancs használatával telepítse az Azure Communication Services Common and Calling SDK for JavaScriptet:

npm install @azure/communication-common --save
npm install @azure/communication-calling --save

Szükséges objektumok inicializálása

A CallClient legtöbb hívási művelethez szükség van egy példányra. Új CallClient példány létrehozásakor konfigurálhatja egyéni beállításokkal, például egy példánysal Logger .

CallClient A példánnyal létrehozhat egy példányt CallAgent a createCallAgent. Ez a metódus aszinkron módon egy CallAgent példányobjektumot ad vissza.

A createCallAgent metódus argumentumként használható CommunicationTokenCredential . Elfogad egy felhasználói hozzáférési jogkivonatot.

A példányon található getDeviceManager metódust használhatja a CallClient hozzáféréshez deviceManager.

const { CallClient } = require('@azure/communication-calling');
const { AzureCommunicationTokenCredential} = require('@azure/communication-common');
const { AzureLogger, setLogLevel } = require("@azure/logger");

// Set the logger's log level
setLogLevel('verbose');

// Redirect log output to console, file, buffer, REST API, or whatever location you want
AzureLogger.log = (...args) => {
    console.log(...args); // Redirect log output to console
};

const userToken = '<USER_TOKEN>';
callClient = new CallClient(options);
const tokenCredential = new AzureCommunicationTokenCredential(userToken);
const callAgent = await callClient.createCallAgent(tokenCredential, {displayName: 'optional Azure Communication Services user name'});
const deviceManager = await callClient.getDeviceManager()

A Microsoft-infrastruktúra SDK-kapcsolatának legjobb kezelése

A Call Agent példány segít a hívások kezelésében (a hívásokhoz való csatlakozáshoz vagy a hívások indításához). A hívó SDK működéséhez csatlakoznia kell a Microsoft infrastruktúrájához, hogy értesítést kapjon a bejövő hívásokról, és koordinálja az egyéb hívásadatokat. Két Call Agent lehetséges állapota van:

Csatlakoztatott – A Call Agent connectionStatue érték azt Connected jelenti, hogy az ügyfél SDK csatlakoztatva van, és képes értesítéseket fogadni a Microsoft-infrastruktúrából.

Leválasztva – Az Call Agent állapotok connectionStatue értéke Disconnected olyan probléma, amely miatt az SDK nem tud megfelelően csatlakozni. Call Agent újra létre kell hozni.

  • invalidToken: Ha egy jogkivonat lejárt, vagy érvénytelen Call Agent , a példány ezzel a hibával megszakad.
  • connectionIssue: Ha probléma merül fel azzal kapcsolatban, hogy az ügyfél csatlakozik a Microsoft-infrastruktúrához, miután sok újrapróbálkozás Call Agent felfedi a connectionIssue hibát.

A tulajdonság aktuális értékének connectionState vizsgálatával ellenőrizheti, hogy a helyi Call Agent csatlakozik-e a Microsoft-infrastruktúrához. Egy aktív hívás során meghallgathatja az connectionStateChanged eseményt, és megállapíthatja, hogy a kapcsolat megszakadt állapotban van-e.Call Agent

const connectionState = callAgentInstance.connectionState;
console.log(connectionState); // it may return either of 'Connected' | 'Disconnected'

const connectionStateCallback = (args) => {
    console.log(args); // it will return an object with oldState and newState, each of having a value of either of 'Connected' | 'Disconnected'
    // it will also return reason, either of 'invalidToken' | 'connectionIssue'
}
callAgentInstance.on('connectionStateChanged', connectionStateCallback);

Figyelmeztetés

A Microsoft Teams változásai miatt a JavaScript az 1.21-s és alacsonyabb verziójú SDK-k meghívásával leállítja a Teams átírását, és letiltja a Teams-felhasználókat az átírás elindításában. Ha a Teams átírását szeretné használni a hívásokban és értekezletekben, frissítenie kell a hívó SDK-t legalább 1.22-es verzióra.

Hívásátírás

Transcription az osztály Callkiterjesztett funkciója. Először be kell szereznie az átírási funkció API-objektumát

const callTranscriptionFeature = call.feature(Features.Transcription);

A tulajdonságban isTranscriptionActiveellenőrizheti az átírás állapotát. Ha az érték be truevan állítva, akkor az átírás aktív.

const isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

Feliratkozhat az átírás állapota megváltozásakor aktivált eseményre:

const isTranscriptionActiveChangedHandler = () => {
  console.log(callTranscriptionFeature.isTranscriptionActive);
};
callTranscriptionFeature.on('isTranscriptionActiveChanged', isTranscriptionActiveChangedHandler);

Az eseményről a következő kóddal iratkozhat le:

callTranscriptionFeature.off('isTranscriptionActiveChanged', isTranscriptionActiveChangedHandler);

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 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 Swiftre kell á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.

Képernyőkép a projekt Xcode-on belüli létrehozására szolgáló ablakról.

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 CallAgent CallClientolyan 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.WindowsClient 1.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