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
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- En distribuerad Communication Services-resurs. Skapa en Communication Services-resurs.
- En användaråtkomsttoken för att aktivera den anropande klienten. Mer information finns i Skapa och hantera åtkomsttoken.
- Valfritt: Slutför snabbstarten för att lägga till röstsamtal i ditt program
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 deviceManager
till .
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 ogiltigCall 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ökCall Agent
har exponeratconnectionIssue
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);
Uttryckligt medgivande
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å true
krä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 turnVideoOn
och shareScreen
unmuteMic
. 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 DeviceManager
må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 callTranscriptionFeature
fö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 .
Installera paketet och beroenden med hjälp av CocoaPods
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
Kör
pod install
.Ö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 NSMicrophoneUsageDescription
av . 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 CallClient
må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 CallClient
och 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 callTranscriptionFeature
fö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:
- Öppna NuGet Package Manager genom att välja Verktyg>NuGet Package Manager>Hantera NuGet-paket för lösning.
- Välj Bläddra och ange sedan Azure.Communication.Calling.WindowsClient i sökrutan.
- Kontrollera att kryssrutan Inkludera förhandsversion är markerad.
- Välj paketet Azure.Communication.Calling.WindowsClient och välj sedan Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 eller en nyare version.
- Markera kryssrutan som motsvarar Azure Communication Services-projektet i den högra rutan.
- 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 transcriptionFeature
fö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;