Sdílet prostřednictvím


Zobrazení stavu přepisu volání v klientovi

Před tím, než je budete moct přepisovat, musíte shromáždit souhlas všech účastníků hovoru. Microsoft Teams umožňuje uživatelům zahájit přepis schůzek nebo hovorů. Při spuštění přepisu by se zobrazila událost. Stav přepisu můžete zkontrolovat, pokud se přepis spustil před tím, než jste se připojili k hovoru nebo schůzce. Pokud schůzka nebo hovor vyžadují, můžete explicitně vyjádřit souhlas s přepisem a už jste ho shromáždili.

Požadavky

Technická podpora

Následující tabulky definují podporu přepisu volání ve službě Azure Communication Services.

Identity a typy volání

Následující tabulky ukazují podporu přepisu pro konkrétní typ volání a identitu.

Identity Schůzka v Teams Místnost 1:1 hovor Skupinový hovor 1:1 Zprostředkovatele spolupráce v Teams Skupinový interopový hovor v Teams
Uživatel komunikačních služeb ✔️ ✔️ ✔️
Uživatel Microsoftu 365 ✔️ ✔️ ✔️

Operace

Následující tabulky ukazují podporu jednotlivých rozhraní API při volání sady SDK k jednotlivým typům identit.

Operace Uživatel komunikačních služeb Uživatel Microsoftu 365
Získání události, která se spustila při přepisu ✔️ ✔️
Získání stavu přepisu ✔️ ✔️
Spuštění nebo zastavení přepisu
Informace o tom, jestli je vyžadován explicitní souhlas ✔️ [1] ✔️ [1]
Udělení výslovného souhlasu s přepisem ✔️ [1] ✔️ [1]

[1] Tato funkce je dostupná jenom na schůzkách Teams a skupinových voláních interoperability Teams.

Sady SDK

Následující tabulky ukazují podporu přepisu v jednotlivých sadách SDK služeb Azure Communication Services.

Platformy Web Webové uživatelské rozhraní iOS Uživatelské rozhraní iOS Android Uživatelské rozhraní Androidu Windows
Je podporováno. ✔️ ✔️ [1] ✔️ [1] ✔️ [1] ✔️ [1] ✔️ [1] ✔️ [1]

[1] Tyto sady SDK nepodporují explicitní souhlas.

Nainstalujte sadu SDK .

npm install Pomocí příkazu nainstalujte sadu AZURE Communication Services Common and Calling SDK pro JavaScript:

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

Inicializace požadovaných objektů

Pro CallClient většinu operací volání se vyžaduje instance. Když vytvoříte novou CallClient instanci, můžete ji nakonfigurovat s vlastními možnostmi, jako je Logger instance.

CallClient S instancí můžete vytvořit CallAgent instanci voláním createCallAgent. Tato metoda asynchronně vrátí CallAgent objekt instance.

Metoda createCallAgent se používá CommunicationTokenCredential jako argument. Přijímá přístupový token uživatele.

K přístupu deviceManagermůžete použít metodu getDeviceManager v CallClient instanci .

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

Jak nejlépe spravovat připojení sady SDK k infrastruktuře Microsoftu

Tato Call Agent instance vám pomůže spravovat hovory (pro připojení nebo zahájení hovorů). Aby bylo možné pracovat s vaší sadou SDK volání, musí se připojit k infrastruktuře Microsoftu, aby bylo možné dostávat oznámení o příchozích hovorech a koordinovat další podrobnosti volání. Máte Call Agent dva možné stavy:

PřipojenoCall Agent Hodnota connectionStatue znamená, Connected že klientská sada SDK je připojená a dokáže přijímat oznámení z infrastruktury Microsoftu.

OdpojenoCall Agent Hodnota Disconnected connectionStatue stavů existuje problém, který brání sadě SDK, aby se správně připojil. Call Agent by se mělo znovu vytvořit.

  • invalidToken: Pokud vypršela platnost tokenu nebo je neplatná Call Agent instance, odpojí se s touto chybou.
  • connectionIssue: Pokud došlo k problému s klientem, který se připojuje k infrascture Microsoftu, po mnoha opakovaných pokusech Call Agent connectionIssue se zobrazí chyba.

Zkontrolujte, jestli je vaše místní Call Agent infrastruktura připojená k infrastruktuře Microsoftu, a to kontrolou aktuální hodnoty connectionState vlastnosti. Během aktivního volání můžete naslouchat connectionStateChanged události a zjistit, jestli Call Agent se změny ze stavu Připojeno k Odpojeno .

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);

Upozorňující

Kvůli změnám v Microsoft Teams zastaví javascriptové volání sad SDK s verzemi 1.21 a nižšími verzemi přepis teams a zablokuje uživatelům Teams spuštění přepisu. Pokud chcete využít přepis Teams při hovorech a schůzkách, musíte upgradovat svou volající sadu SDK na minimálně verzi 1.22.

Přepis hovoru

Transcription je rozšířená funkce třídy Call. Nejprve potřebujete získat objekt rozhraní API pro přepis funkcí.

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

Můžete zkontrolovat stav přepisu ve vlastnosti isTranscriptionActive. Pokud je hodnota nastavená na true, je přepis aktivní.

const isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

Můžete se přihlásit k odběru události, která se aktivuje při změně stavu přepisu:

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

Od odběru události se můžete odhlásit následujícím kódem:

callTranscriptionFeature.off('isTranscriptionActiveChanged', isTranscriptionActiveChangedHandler);

Pokud je schůzka nebo hovor v Teams nakonfigurovaný tak, aby vyžadoval explicitní souhlas se záznamem nebo přepisem, musíte od uživatelů shromáždit explicitní souhlas, aby bylo možné uživatele přepisovat nebo zaznamenávat. Souhlas můžete poskytnout aktivně při připojování ke schůzce nebo k reaktivnímu spuštění záznamu nebo přepisu. Dokud neudělíte explicitní souhlas, během přepisu se zakáže zvuk, video a sdílení obrazovky účastníků.

Můžete zkontrolovat, jestli přepis schůzky vyžaduje explicitní souhlas podle vlastnosti isTeamsConsentRequired. Pokud je hodnota nastavena na true, pak explicitní souhlas je vyžadován pro call.

const isTranscriptionConsentRequired = callTranscriptionFeature.isTeamsConsentRequired;

Pokud jste již získali souhlas uživatele s přepisem, můžete volat metodu grantTeamsConsent() , která označuje explicitní souhlas se službou. Tento souhlas platí jenom pro jednu call relaci a uživatelé musí znovu poskytnout souhlas, pokud se znovu připojí ke schůzce.

callTranscriptionFeature.grantTeamsConsent();

Pokusy o povolení sdílení zvuku, videa nebo obrazovky selžou, když je přepis aktivní, vyžaduje se explicitní souhlas, ale ještě není zadaný. Tuto situaci můžete rozpoznat tak, že zkontrolujete vlastnost třídy reason ParticipantCapabilities schopností unmuteMic turnVideoOna shareScreen. Tyto funkce najdete v této funkci call.feature(Features.Capabilities). Tyto funkce by vrátily důvod ExplicitConsentRequired , protože uživatelé potřebují poskytnout explicitní souhlas.

Nainstalujte sadu SDK .

Vyhledejte soubor na úrovni build.gradle projektu a přidejte mavenCentral() ho do seznamu úložišť v části buildscript a allprojects:

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

Potom do souboru na úrovni build.gradle modulu přidejte do oddílu dependencies následující řádky:

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

Inicializace požadovaných objektů

Pokud chcete vytvořit CallAgent instanci, musíte metodu createCallAgent CallClient volat v instanci. Toto volání asynchronně vrátí CallAgent objekt instance.

Metoda createCallAgent přebírá CommunicationUserCredential jako argument, který zapouzdřuje přístupový token.

Pokud chcete získat přístup DeviceManager, musíte nejprve vytvořit callAgent instanci. Pak můžete použít metodu CallClient.getDeviceManager získat 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();

Pokud chcete nastavit zobrazovaný název volajícího, použijte tuto alternativní metodu:

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

Upozorňující

Až do verze 1.1.0 a beta verze 1.1.0-beta.1 sady Azure Communication Services Volání sady Android SDK má isTranscriptionActive a addOnIsTranscriptionActiveChangedListener jsou součástí objektu Call . U nových beta verzí se tato rozhraní API přesunula jako rozšířená funkce Call stejně jako níže popsaná níže.

Přepis volání je rozšířená funkce základního Call objektu. Nejprve musíte získat objekt funkce přepisu:

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

Potom zkontrolujte, jestli se hovor přepisuje, zkontrolujte isTranscriptionActive vlastnost callTranscriptionFeature. booleanVrátí .

boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();

Můžete se také přihlásit k odběru změn v přepisu:

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

callTranscriptionFeature.addOnIsTranscriptionActiveChangedListener(handleCallOnIsTranscriptionChanged);

Nastavení systému

Podle těchto kroků nastavte systém.

Vytvoření projektu Xcode

V Xcode vytvořte nový projekt pro iOS a vyberte šablonu aplikace s jedním zobrazením . Tento článek používá architekturu SwiftUI, takže byste měli nastavit jazyk na Swift a nastavit rozhraní na SwiftUI.

V tomto článku nebudete vytvářet testy. Zrušte zaškrtnutí políčka Zahrnout testy .

Snímek obrazovky znázorňující okno pro vytvoření projektu v Xcode

Instalace balíčku a závislostí pomocí CocoaPods

  1. Vytvořte pro aplikaci soubor Podfile, například v tomto příkladu:

    platform :ios, '13.0'
    use_frameworks!
    target 'AzureCommunicationCallingSample' do
        pod 'AzureCommunicationCalling', '~> 1.0.0'
    end
    
  2. Spusťte pod install.

  3. Otevřete .xcworkspace pomocí Xcode.

Vyžádání přístupu k mikrofonu

Pokud chcete získat přístup k mikrofonu zařízení, musíte aktualizovat seznam vlastností informací aplikace pomocí NSMicrophoneUsageDescription. Nastavte přidruženou hodnotu na řetězec, který je součástí dialogového okna, který systém používá k vyžádání přístupu od uživatele.

Klikněte pravým tlačítkem myši na položku Info.plist stromu projektu a pak vyberte Open As>Source Code. Do oddílu nejvyšší úrovně <dict> přidejte následující řádky a pak soubor uložte.

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

Nastavení architektury aplikace

Otevřete soubor projektu ContentView.swift . import Přidejte deklaraci do horní části souboru pro import AzureCommunicationCalling knihovny. Kromě toho import AVFoundation. Potřebujete ho pro žádosti o zvuková oprávnění v kódu.

import AzureCommunicationCalling
import AVFoundation

Inicializace callagentu

Chcete-li vytvořit CallAgent instanci z CallClient, musíte použít metodu callClient.createCallAgent , která asynchronně vrátí CallAgent objekt po inicializaci.

Pokud chcete vytvořit klienta volání, předejte CommunicationTokenCredential objekt:

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

CommunicationTokenCredential Předejte objekt, který jste vytvořiliCallClient, a nastavte zobrazovaný název:

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")
        }
})

Upozorňující

Až do verze 1.1.0 a beta verze 1.1.0-beta.1 sady Sdk pro volání iOS služby Azure Communication Services má isTranscriptionActive jako součást objektu Call a didChangeTranscriptionState je součástí delegáta CallDelegate . U nových beta verzí se tato rozhraní API přesunula jako rozšířená funkce Call stejně jako níže popsaná níže.

Přepis volání je rozšířená funkce základního Call objektu. Nejprve musíte získat objekt funkce přepisu:

let callTranscriptionFeature = call.feature(Features.transcription)

Pokud chcete zkontrolovat, jestli je hovor přepsán, zkontrolujte isTranscriptionActive vlastnost callTranscriptionFeature. BoolVrátí .

let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

Můžete se také přihlásit k odběru změn přepisu implementací TranscriptionCallFeatureDelegate delegáta ve třídě s událostí didChangeTranscriptionState:

callTranscriptionFeature.delegate = self

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

Nastavení systému

Podle těchto kroků nastavte systém.

Vytvoření projektu sady Visual Studio

V případě Univerzální platforma Windows aplikace vytvořte v sadě Visual Studio 2022 nový projekt Prázdná aplikace (Universal Windows). Po zadání názvu projektu si můžete vybrat libovolnou sadu Windows SDK později než 10.0.17763.0.

V případě aplikace WinUI 3 vytvořte nový projekt pomocí šablony Prázdná aplikace zabalená (WinUI 3 v desktopové verzi) pro nastavení jednostráňové aplikace WinUI 3. Vyžaduje se sada Windows App SDK verze 1.3 nebo novější.

Instalace balíčku a závislostí pomocí Správce balíčků NuGet

Rozhraní API a knihovny volající sady SDK jsou veřejně dostupné prostřednictvím balíčku NuGet.

Vyhledání, stažení a instalace balíčku NuGet volající sady SDK:

  1. Otevřete Správce balíčků NuGet výběrem nástrojů>NuGet Správce balíčků> Nabídky NuGet pro řešení.
  2. Vyberte Procházet a do vyhledávacího pole zadejte Azure.Communication.Calling.WindowsClient .
  3. Ujistěte se, že je zaškrtnuté políčko Zahrnout předběžné verze .
  4. Vyberte balíček Azure.Communication.Calling.WindowsClient a pak vyberte Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 nebo novější verzi.
  5. Zaškrtněte políčko odpovídající projektu Azure Communication Services v pravém podokně.
  6. Vyberte volbu Instalovat.

Přepis volání je rozšířená funkce základního Call objektu. Nejprve musíte získat objekt funkce přepisu:

TranscriptionCallFeature transcriptionFeature = call.Features.Transcription;

Potom zkontrolujte, jestli se hovor přepisuje, zkontrolujte IsTranscriptionActive vlastnost transcriptionFeature. booleanVrátí .

boolean isTranscriptionActive = transcriptionFeature.isTranscriptionActive;

Můžete se také přihlásit k odběru změn v přepisu:

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

transcriptionFeature.IsTranscriptionActiveChanged += Call__OnIsTranscriptionActiveChanged;

Další kroky