Delen via


Gesprektranscriptiestatus op de client weergeven

U moet toestemming verzamelen van alle deelnemers aan het gesprek voordat u ze kunt transcriberen. Met Microsoft Teams kunnen gebruikers transcriptie starten in de vergaderingen of gesprekken. U ontvangt een gebeurtenis wanneer transcriptie is gestart. U kunt de transcriptiestatus controleren als de transcriptie is gestart voordat u deelneemt aan het gesprek of de vergadering. U kunt expliciet toestemming geven voor transcriptie als een vergadering of gesprek dit vereist en u hebt deze al verzameld.

Vereisten

Ondersteuning

De volgende tabellen definiëren ondersteuning voor gesprektranscriptie in Azure Communication Services.

Identiteiten en oproeptypen

In de volgende tabellen ziet u de ondersteuning van transcriptie voor specifiek gesprekstype en specifieke identiteit.

Identiteiten Teams-vergadering Ruimte 1:1 oproep Groepsgesprek 1:1 Teams-interopgesprek Gesprek tussen Teams groeperen
Communication Services-gebruiker ✔️ ✔️ ✔️
Microsoft 365-gebruiker ✔️ ✔️ ✔️

Operations

In de volgende tabellen ziet u de ondersteuning van afzonderlijke API's bij het aanroepen van SDK naar afzonderlijke identiteitstypen.

Operations Communication Services-gebruiker Microsoft 365-gebruiker
Gebeurtenis ophalen die transcriptie is gestart ✔️ ✔️
Transcriptiestatus ophalen ✔️ ✔️
Transcriptie starten of stoppen
Meer informatie over of expliciete toestemming is vereist ✔️ [1] ✔️ [1]
Expliciete toestemming geven voor transcriberen ✔️ [1] ✔️ [1]

[1] Deze functionaliteit is alleen beschikbaar in Teams-vergaderingen en groepsinteroperabiliteitsgesprekken van Teams.

SDK's

In de volgende tabellen ziet u de ondersteuning van transcriptie in afzonderlijke Azure Communication Services-SDK's.

Platformen Web Webgebruikersinterface iOS iOS-gebruikersinterface Android Android-gebruikersinterface Windows
Wordt ondersteund ✔️ ✔️ [1] ✔️ [1] ✔️ [1] ✔️ [1] ✔️ [1] ✔️ [1]

[1] Deze SDK's bieden geen ondersteuning voor expliciete toestemming.

Installeer de SDK

Gebruik de npm install opdracht om de Common and Calling SDK voor Azure Communication Services voor JavaScript te installeren:

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

Vereiste objecten initialiseren

Een CallClient exemplaar is vereist voor de meeste aanroepbewerkingen. Wanneer u een nieuw CallClient exemplaar maakt, kunt u deze configureren met aangepaste opties, zoals een Logger exemplaar.

Met het CallClient exemplaar kunt u een CallAgent exemplaar maken door het createCallAgentaan te roepen. Deze methode retourneert asynchroon een CallAgent exemplaarobject.

De createCallAgent methode gebruikt CommunicationTokenCredential als argument. Het accepteert een toegangstoken van een gebruiker.

U kunt de getDeviceManager methode op het CallClient exemplaar gebruiken om toegang te krijgen tot 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()

Sdk-connectiviteit met Microsoft-infrastructuur het beste beheren

Het Call Agent exemplaar helpt u bij het beheren van gesprekken (om aanroepen deel te nemen of te starten). Als u wilt werken met uw aanroepende SDK, moet u verbinding maken met de Microsoft-infrastructuur om meldingen van binnenkomende oproepen te ontvangen en andere gespreksgegevens te coördineren. Uw Call Agent heeft twee mogelijke statussen:

Verbonden : een Call Agent connectionStatue-waarde van Connected het middel dat de client-SDK is verbonden en meldingen van de Microsoft-infrastructuur kan ontvangen.

Verbinding verbroken - Een Call Agent connectionStatue-waarde van Disconnected statussen is er een probleem dat verhindert dat de SDK verbinding maakt. Call Agent moet opnieuw worden gemaakt.

  • invalidToken: Als een token is verlopen of een ongeldig exemplaar Call Agent wordt verbroken met deze fout.
  • connectionIssue: Als er een probleem is met de client die verbinding maakt met Microsoft infrascture, wordt de connectionIssue fout na veel nieuwe pogingen Call Agent weergegeven.

U kunt controleren of uw lokale Call Agent verbinding heeft met de Microsoft-infrastructuur door de huidige waarde van connectionState de eigenschap te controleren. Tijdens een actieve oproep kunt u naar de connectionStateChanged gebeurtenis luisteren om te bepalen of Call Agent de status Verbonden naar Verbroken is gewijzigd.

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

Waarschuwing

Als gevolg van wijzigingen in Microsoft Teams, javaScript aanroepen van SDK's met versie 1.21 en lager stopt teamstranscriptie en blokkeert Teams-gebruikers om transcriptie te starten. Als u teamstranscriptie wilt gebruiken in de gesprekken en vergaderingen, moet u uw aanroepende SDK upgraden naar ten minste versie 1.22.

Oproeptranscriptie

Transcription is een uitgebreide functie van de klasse Call. U moet eerst het API-object voor de transcriptiefunctie verkrijgen

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

U kunt de status van de transcriptie in de eigenschap isTranscriptionActivecontroleren. Als de waarde is ingesteld op true, is transcriptie actief.

const isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

U kunt zich abonneren op gebeurtenissen die worden geactiveerd wanneer de status van transcriptie verandert:

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

U kunt zich afmelden voor de gebeurtenis met de volgende code:

callTranscriptionFeature.off('isTranscriptionActiveChanged', isTranscriptionActiveChangedHandler);

Wanneer uw Teams-vergadering of -oproep is geconfigureerd om expliciete toestemming te vereisen voor opname of transcriptie, moet u expliciete toestemming van uw gebruikers verzamelen om gebruikers toe te staan te transcriberen of opgenomen. U kunt proactief toestemming geven wanneer u deelneemt aan de vergadering of reactief wanneer de opname of transcriptie wordt gestart. Totdat expliciete toestemming wordt gegeven, worden de audio, video en het delen van het scherm uitgeschakeld tijdens transcriptie van deelnemers.

U kunt controleren of voor de transcriptie van de vergadering expliciete toestemming per eigenschap isTeamsConsentRequiredis vereist. Als de waarde is ingesteld op true, is expliciete toestemming vereist voor de call.

const isTranscriptionConsentRequired = callTranscriptionFeature.isTeamsConsentRequired;

Als u de toestemming van de gebruiker al hebt verkregen voor transcriptie, kunt u de grantTeamsConsent() methode aanroepen om expliciete toestemming voor de service aan te geven. Deze toestemming is alleen geldig voor één call sessie en gebruikers moeten opnieuw toestemming geven als ze opnieuw deelnemen aan de vergadering.

callTranscriptionFeature.grantTeamsConsent();

Pogingen om audio, video of scherm delen in te schakelen mislukken wanneer transcriptie actief is, is expliciete toestemming vereist, maar wordt nog niet gegeven. U kunt deze situatie herkennen door de eigenschap reason van klasse ParticipantCapabilities te controleren op mogelijkheden unmuteMic turnVideoOnen shareScreen. U vindt deze mogelijkheden in de functie call.feature(Features.Capabilities). Deze mogelijkheden retourneren reden ExplicitConsentRequired omdat gebruikers expliciete toestemming moeten geven.

Installeer de SDK

Zoek het bestand op projectniveau build.gradle en voeg deze toe aan mavenCentral() de lijst met opslagplaatsen onder buildscript en allprojects:

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

Voeg vervolgens in het bestand op moduleniveau build.gradle de volgende regels toe aan de dependencies sectie:

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

De vereiste objecten initialiseren

Als u een CallAgent exemplaar wilt maken, moet u de createCallAgent methode voor een CallClient exemplaar aanroepen. Hiermee wordt asynchroon een CallAgent exemplaarobject geretourneerd.

De createCallAgent methode wordt CommunicationUserCredential gebruikt als een argument, dat een toegangstoken inkapselt.

Als u toegang DeviceManagerwilt krijgen, moet u eerst een callAgent exemplaar maken. Vervolgens kunt u de CallClient.getDeviceManager methode gebruiken om op te halen 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();

Als u een weergavenaam voor de aanroeper wilt instellen, gebruikt u deze alternatieve methode:

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

Waarschuwing

Tot versie 1.1.0 en bètaversie 1.1.0-beta.1 van de Azure Communication Services Calling Android SDK heeft het isTranscriptionActive en addOnIsTranscriptionActiveChangedListener maken deel uit van het Call object. Voor nieuwe bètaversies zijn deze API's verplaatst als een uitgebreide functie, Call zoals hieronder wordt beschreven.

Gesprektranscriptie is een uitgebreide functie van het kernobject Call . U moet eerst het object van de transcriptiefunctie verkrijgen:

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

Als u vervolgens wilt controleren of de aanroep wordt getranscribeerd, inspecteert u de isTranscriptionActive eigenschap van callTranscriptionFeature. Het retourneert boolean.

boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();

U kunt zich ook abonneren op wijzigingen in transcriptie:

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

callTranscriptionFeature.addOnIsTranscriptionActiveChangedListener(handleCallOnIsTranscriptionChanged);

Uw systeem instellen

Volg deze stappen om uw systeem in te stellen.

Het Xcode-project maken

Maak in Xcode een nieuw iOS-project en selecteer de sjabloon Single View-app (Toepassing met één weergave). In dit artikel wordt het SwiftUI-framework gebruikt, dus u moet taal instellen op Swift en interface instellen op SwiftUI.

U gaat geen tests maken in dit artikel. Schakel het selectievakje Inclusief tests uit.

Schermopname van het venster voor het maken van een project in Xcode.

Het pakket en afhankelijkheden installeren met CocoaPods

  1. Maak een Podfile voor uw toepassing, zoals in dit voorbeeld:

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

  3. Open .xcworkspace met behulp van Xcode.

Toegang tot de microfoon aanvragen

Voor toegang tot de microfoon van het apparaat moet u de lijst met gegevenseigenschappen van uw app bijwerken met behulp van NSMicrophoneUsageDescription. Stel de gekoppelde waarde in op een tekenreeks die is opgenomen in het dialoogvenster dat het systeem gebruikt om toegang van de gebruiker aan te vragen.

Klik met de rechtermuisknop op de vermelding Info.plist van de projectstructuur en selecteer Open As>Source Code. Voeg de volgende regels toe in de sectie op het hoogste niveau <dict> en sla het bestand op.

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

Stel het app-framework in

Open het projectbestand ContentView.swift . Voeg een import declaratie toe aan het begin van het bestand om de AzureCommunicationCalling bibliotheek te importeren. Daarnaast importeert u AVFoundation. U hebt deze nodig voor audiomachtigingsaanvragen in de code.

import AzureCommunicationCalling
import AVFoundation

CallAgent initialiseren

Als u een CallAgent exemplaar CallClientwilt maken, moet u een callClient.createCallAgent methode gebruiken die asynchroon een CallAgent object retourneert nadat het is geïnitialiseerd.

Als u een aanroepclient wilt maken, geeft u een CommunicationTokenCredential object door:

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

Geef het CommunicationTokenCredential object door waarnaar u hebt gemaakt CallClienten stel de weergavenaam in:

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

Waarschuwing

Tot versie 1.1.0 en bètaversie 1.1.0-beta.1 van de Azure Communication Services-aanroepende iOS SDK heeft het isTranscriptionActive als onderdeel van het Call object en didChangeTranscriptionState maakt deel uit van CallDelegate gemachtigde. Voor nieuwe bètaversies zijn deze API's verplaatst als een uitgebreide functie, Call zoals hieronder wordt beschreven.

Gesprektranscriptie is een uitgebreide functie van het kernobject Call . U moet eerst het object van de transcriptiefunctie verkrijgen:

let callTranscriptionFeature = call.feature(Features.transcription)

Als u vervolgens wilt controleren of de aanroep is getranscribeerd, inspecteert u de isTranscriptionActive eigenschap van callTranscriptionFeature. Het retourneert Bool.

let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

U kunt zich ook abonneren op transcriptiewijzigingen door gemachtigde in uw klas te implementeren TranscriptionCallFeatureDelegate met de gebeurtenis didChangeTranscriptionState:

callTranscriptionFeature.delegate = self

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

Uw systeem instellen

Volg deze stappen om uw systeem in te stellen.

Het Visual Studio-project maken

Voor een Universeel Windows-platform-app maakt u in Visual Studio 2022 een nieuw leeg app-project (Universal Windows). Nadat u de projectnaam hebt ingevoerd, kunt u een Windows SDK kiezen die hoger is dan 10.0.17763.0.

Maak voor een WinUI 3-app een nieuw project met de sjabloon Blank App, Packaged (WinUI 3 in Desktop) om een WinUI 3-app met één pagina in te stellen. Windows-app SDK versie 1.3 of hoger is vereist.

Installeer het pakket en afhankelijkheden met behulp van NuGet Pakketbeheer

De Aanroepende SDK-API's en -bibliotheken zijn openbaar beschikbaar via een NuGet-pakket.

Het NuGet-pakket voor aanroepende SDK zoeken, downloaden en installeren:

  1. Open NuGet Pakketbeheer door Tools>NuGet Pakketbeheer> Manage NuGet Packages for Solution te selecteren.
  2. Selecteer Bladeren en voer vervolgens Azure.Communication.Calling.WindowsClient in het zoekvak in.
  3. Zorg ervoor dat het selectievakje Voorlopige versie opnemen is ingeschakeld.
  4. Selecteer het pakket Azure.Communication.Calling.WindowsClient en selecteer vervolgens Azure.Communication.Calling.WindowsClient 1.4.0-beta.1 of een nieuwere versie.
  5. Schakel het selectievakje in dat overeenkomt met het Azure Communication Services-project in het rechterdeelvenster.
  6. Selecteer Installeren.

Gesprektranscriptie is een uitgebreide functie van het kernobject Call . U moet eerst het object van de transcriptiefunctie verkrijgen:

TranscriptionCallFeature transcriptionFeature = call.Features.Transcription;

Als u vervolgens wilt controleren of de aanroep wordt getranscribeerd, inspecteert u de IsTranscriptionActive eigenschap van transcriptionFeature. Het retourneert boolean.

boolean isTranscriptionActive = transcriptionFeature.isTranscriptionActive;

U kunt zich ook abonneren op wijzigingen in transcriptie:

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

transcriptionFeature.IsTranscriptionActiveChanged += Call__OnIsTranscriptionActiveChanged;

Volgende stappen