Dela via


Visa samtalstranskriptionstillstånd på klienten

Du måste samla in medgivande från alla deltagare i samtalet innan du kan transkribera dem. Med Microsoft Teams kan användare starta transkription i möten eller samtal. Du får en händelse när transkriptionen har startat. Du kan kontrollera transkriptionstillståndet om transkriptionen startade innan du anslöt till samtalet eller mötet. Du kan ge uttryckligt medgivande till transkription om ett möte eller samtal kräver det, och du redan har samlat in det.

Förutsättningar

Support

Följande tabeller definierar stöd för samtalstranskription i Azure Communication Services.

Identiteter och anropstyper

Följande tabeller visar stöd för transkription för specifik anropstyp och identitet.

Identiteter Teams-möte Rum 1:1 samtal Gruppsamtal 1:1 Teams interop-samtal Grupp teams-interop-anrop
Communication Services-användare ✔️ ✔️ ✔️
Microsoft 365-användare ✔️ ✔️ ✔️

Operations

Följande tabeller visar stöd för enskilda API:er vid anrop av SDK till enskilda identitetstyper.

Operations Communication Services-användare Microsoft 365-användare
Hämta händelse som transkriptionen har startat ✔️ ✔️
Hämta transkriptionstillstånd ✔️ ✔️
Starta eller stoppa transkription
Lär dig om uttryckligt medgivande krävs ✔️ [1] ✔️ [1]
Ge uttryckligt medgivande för transkribering ✔️ [1] ✔️ [1]

[1] Den här funktionen är endast tillgänglig i Teams-möten och teamsamverkansanrop.

SDK:er

Följande tabeller visar stöd för transkription i enskilda Azure Communication Services-SDK:er.

Plattformar Webb Webbgränssnitt iOS iOS-användargränssnitt Android Android-användargränssnitt Windows
Stöds ✔️ ✔️ [1] ✔️ [1] ✔️ [1] ✔️ [1] ✔️ [1] ✔️ [1]

[1] Dessa SDK:er stöder inte uttryckligt medgivande.

Installera SDK:n

npm install Använd kommandot för att installera Azure Communication Services Common och Calling SDK för JavaScript:

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

Initiera nödvändiga objekt

En CallClient instans krävs för de flesta anropsåtgärder. När du skapar en ny CallClient instans kan du konfigurera den med anpassade alternativ som en Logger instans.

Med instansen CallClient kan du skapa en CallAgent instans genom att anropa createCallAgent. Den här metoden returnerar asynkront ett CallAgent instansobjekt.

Metoden createCallAgent använder CommunicationTokenCredential som argument. Den accepterar en användaråtkomsttoken.

Du kan använda getDeviceManager metoden på instansen CallClient för att få åtkomst deviceManagertill .

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

Så här hanterar du SDK-anslutning till Microsoft-infrastruktur på bästa sätt

Instansen Call Agent hjälper dig att hantera anrop (för att ansluta eller starta samtal). För att kunna arbeta måste din anropande SDK ansluta till Microsofts infrastruktur för att få meddelanden om inkommande samtal och samordna annan samtalsinformation. Du Call Agent har två möjliga tillstånd:

Ansluten – Ett Call Agent connectionStatue-värde Connected innebär att klient-SDK:t är anslutet och kan ta emot meddelanden från Microsofts infrastruktur.

Frånkopplad – Ett Call Agent connectionStatue-värde för Disconnected tillstånd det finns ett problem som hindrar SDK:n från att ansluta korrekt. Call Agent ska återskapas.

  • invalidToken: Om en token har upphört att gälla eller om en ogiltig Call Agent instans kopplas från med det här felet.
  • connectionIssue: Om det finns ett problem med att klienten ansluter till Microsoft-infrastrukturen, efter att många återförsök Call Agent har exponerat connectionIssue felet.

Du kan kontrollera om din lokala Call Agent är ansluten till Microsofts infrastruktur genom att granska det aktuella värdet för connectionState egenskapen. Under ett aktivt anrop kan du lyssna på connectionStateChanged händelsen för att avgöra om Call Agent det ändras från Anslutet till frånkopplat tillstånd.

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

Varning

På grund av ändringar i Microsoft Teams stoppar JavaScript-anropande SDK:er med version 1.21 och lägre Teams-transkription och blockerar Teams-användare att starta transkription. Om du vill använda Teams-transkription i samtal och möten måste du uppgradera din anropande SDK till minst version 1.22.

Transkription av samtal

Transcription är en utökad funktion i klassen Call. Du måste först hämta transkriptionsfunktionens API-objekt

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

Du kan kontrollera tillståndet för transkriptionen i egenskapen isTranscriptionActive. Om värdet är inställt på trueär transkriptionen aktiv.

const isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

Du kan prenumerera på en händelse som utlöses när transkriptionens tillstånd ändras:

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

Du kan avbryta prenumerationen på händelsen med följande kod:

callTranscriptionFeature.off('isTranscriptionActiveChanged', isTranscriptionActiveChangedHandler);

När ditt Teams-möte eller -samtal har konfigurerats för att kräva uttryckligt medgivande för inspelning eller transkription måste du samla in uttryckligt medgivande från dina användare så att användarna kan transkriberas eller spelas in. Du kan ge medgivande proaktivt när du ansluter till mötet eller reaktivt när inspelningen eller transkriptionen startar. Tills uttryckligt medgivande ges inaktiveras deltagarnas ljud-, video- och skärmdelning under transkriptionen.

Du kan kontrollera om mötestranskriptionen kräver uttryckligt medgivande per egenskap isTeamsConsentRequired. Om värdet är inställt på truekrävs uttryckligt medgivande för call.

const isTranscriptionConsentRequired = callTranscriptionFeature.isTeamsConsentRequired;

Om du redan har fått användarens medgivande för transkription kan du anropa grantTeamsConsent() metoden för att ange uttryckligt medgivande till tjänsten. Det här medgivandet är endast giltigt för en call session och användarna måste ge sitt medgivande igen om de ansluter till mötet igen.

callTranscriptionFeature.grantTeamsConsent();

Försök att aktivera ljud-, video- eller skärmdelning misslyckas när transkriptionen är aktiv, explicit medgivande krävs men ges ännu inte. Du kan identifiera den här situationen genom att kontrollera egenskapen reason för klassen ParticipantCapabilities för funktioner turnVideoOnoch shareScreenunmuteMic . Du hittar dessa funktioner i funktionen call.feature(Features.Capabilities). Dessa funktioner skulle returnera orsak ExplicitConsentRequired eftersom användarna behöver ge uttryckligt medgivande.

Installera SDK:n

Leta upp filen på projektnivå build.gradle och lägg till mavenCentral() i listan med lagringsplatser under buildscript och allprojects:

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

Lägg sedan till följande rader i modulnivåfilen build.gradle i dependencies avsnittet:

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

Initiera nödvändiga objekt

Om du vill skapa en CallAgent instans måste du anropa createCallAgent metoden på en CallClient instans. Det här anropet returnerar asynkront ett CallAgent instansobjekt.

Metoden createCallAgent tar CommunicationUserCredential som ett argument som kapslar in en åtkomsttoken.

Om du vill komma åt DeviceManagermåste du skapa en callAgent instans först. Sedan kan du använda CallClient.getDeviceManager metoden för att hämta 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();

Om du vill ange ett visningsnamn för anroparen använder du den här alternativa metoden:

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

Varning

Fram till version 1.1.0 och betaversionen version 1.1.0-beta.1 av Azure Communication Services Calling Android SDK har isTranscriptionActive och ingår Call i addOnIsTranscriptionActiveChangedListener objektet. För nya betaversioner har dessa API:er flyttats som en utökad funktion på Call samma sätt som beskrivs nedan.

Samtalstranskription är en utökad funktion i kärnobjektet Call . Du måste först hämta transkriptionsfunktionsobjektet:

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

Kontrollera sedan om anropet transkriberas genom att isTranscriptionActive granska egenskapen callTranscriptionFeatureför . Den returnerar boolean.

boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();

Du kan också prenumerera på ändringar i transkription:

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

callTranscriptionFeature.addOnIsTranscriptionActiveChangedListener(handleCallOnIsTranscriptionChanged);

Konfigurera systemet

Följ de här stegen för att konfigurera systemet.

Skapa Xcode-projektet

I Xcode skapar du ett nytt iOS-projekt och väljer mallen Enkel vyapp . Den här artikeln använder SwiftUI-ramverket, så du bör ange Language till Swift och ange Gränssnitt till SwiftUI.

Du kommer inte att skapa tester i den här artikeln. Avmarkera kryssrutan Inkludera tester .

Skärmbild som visar fönstret för att skapa ett projekt i Xcode.

Installera paketet och beroenden med hjälp av CocoaPods

  1. Skapa en Podfile för ditt program, som i det här exemplet:

    platform :ios, '13.0'
    use_frameworks!
    target 'AzureCommunicationCallingSample' do
        pod 'AzureCommunicationCalling', '~> 1.0.0'
    end
    
  2. Kör pod install.

  3. Öppna .xcworkspace med Xcode.

Begär åtkomst till mikrofonen

För att få åtkomst till enhetens mikrofon måste du uppdatera appens egenskapslista för information med hjälp NSMicrophoneUsageDescriptionav . Ange det associerade värdet till en sträng som ingår i dialogrutan som systemet använder för att begära åtkomst från användaren.

Högerklicka på posten Info.plist i projektträdet och välj sedan Öppna som>källkod. Lägg till följande rader i avsnittet på den översta nivån <dict> och spara sedan filen.

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

Konfigurera appramverket

Öppna projektets ContentView.swift fil. Lägg till en import deklaration överst i filen för att importera AzureCommunicationCalling biblioteket. Importera dessutom AVFoundation. Du behöver den för begäranden om ljudbehörighet i koden.

import AzureCommunicationCalling
import AVFoundation

Initiera CallAgent

Om du vill skapa en CallAgent instans från CallClientmåste du använda en callClient.createCallAgent metod som asynkront returnerar ett CallAgent objekt när det har initierats.

Skicka ett CommunicationTokenCredential objekt för att skapa en anropsklient:

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

Skicka objektet CommunicationTokenCredential som du skapade till CallClientoch ange visningsnamnet:

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

Varning

Fram till version 1.1.0 och betaversionen version 1.1.0-beta.1 av Azure Communication Services Calling iOS SDK har isTranscriptionActive som en del av objektet och didChangeTranscriptionState ingår CallDelegate i ombudetCall. För nya betaversioner har dessa API:er flyttats som en utökad funktion på Call samma sätt som beskrivs nedan.

Samtalstranskription är en utökad funktion i kärnobjektet Call . Du måste först hämta transkriptionsfunktionsobjektet:

let callTranscriptionFeature = call.feature(Features.transcription)

Kontrollera sedan om anropet transkriberas genom att isTranscriptionActive kontrollera egenskapen callTranscriptionFeatureför . Den returnerar Bool.

let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

Du kan också prenumerera på transkriptionsändringar genom att implementera TranscriptionCallFeatureDelegate ombud för din klass med händelsen didChangeTranscriptionState:

callTranscriptionFeature.delegate = self

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

Konfigurera systemet

Följ de här stegen för att konfigurera systemet.

Skapa Visual Studio-projektet

För en Universell Windows-plattform app skapar du i Visual Studio 2022 ett nytt projekt för Tom app (Universell Windows). När du har angett projektnamnet kan du välja valfri Windows SDK senare än 10.0.17763.0.

För en WinUI 3-app skapar du ett nytt projekt med mallen Tom app, Paketerad (WinUI 3 i Desktop) för att konfigurera en WinUI 3-app med en enda sida. SDK för Windows-appar version 1.3 eller senare krävs.

Installera paketet och beroendena med hjälp av NuGet Package Manager

Anropande SDK-API:er och bibliotek är offentligt tillgängliga via ett NuGet-paket.

Så här hittar du, laddar ned och installerar det anropande SDK NuGet-paketet:

  1. Öppna NuGet Package Manager genom att välja Verktyg>NuGet Package Manager>Hantera NuGet-paket för lösning.
  2. Välj Bläddra och ange sedan Azure.Communication.Calling.WindowsClient i sökrutan.
  3. Kontrollera att kryssrutan Inkludera förhandsversion är markerad.
  4. Välj paketet Azure.Communication.Calling.WindowsClient och välj sedan Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 eller en nyare version.
  5. Markera kryssrutan som motsvarar Azure Communication Services-projektet i den högra rutan.
  6. Välj Installera.

Samtalstranskription är en utökad funktion i kärnobjektet Call . Du måste först hämta transkriptionsfunktionsobjektet:

TranscriptionCallFeature transcriptionFeature = call.Features.Transcription;

Kontrollera sedan om anropet transkriberas genom att IsTranscriptionActive granska egenskapen transcriptionFeatureför . Den returnerar boolean.

boolean isTranscriptionActive = transcriptionFeature.isTranscriptionActive;

Du kan också prenumerera på ändringar i transkription:

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

transcriptionFeature.IsTranscriptionActiveChanged += Call__OnIsTranscriptionActiveChanged;

Nästa steg