Anzeige des Anruftranskriptionstatus auf dem Client

Wichtig

Die in diesem Dokument beschriebenen Funktionen befinden sich derzeit in der öffentlichen Vorschauphase. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Wenn Sie die Anruftranskription verwenden, möchten Sie Ihre Benutzer vielleicht wissen lassen, dass ein Anruf gerade transkribiert wird. Gehen Sie folgendermaßen vor:

Voraussetzungen

Installieren des SDKs

Wählen Sie Ihre Datei „build.gradle“ auf Projektebene aus, und stellen Sie sicher, dass Sie mavenCentral() zur Liste der Repositorys unter buildscript und allprojects hinzufügen.

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

Fügen Sie dann in der Datei „build.gradle“ auf Modulebene die folgenden Zeilen zum Abschnitt „dependencies“ hinzu.

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

Initialisieren der erforderlichen Objekte

Zum Erstellen einer CallAgent-Instanz müssen Sie die createCallAgent-Methode für eine CallClient-Instanz aufzurufen. Dadurch wird ein CallAgent-Instanzobjekt asynchron zurückgegeben. Die createCallAgent-Methode verwendet CommunicationUserCredential als Argument, womit ein Zugriffstoken gekapselt wird. Für den Zugriff auf DeviceManager muss zuerst eine CallAgent-Instanz erstellt werden. Anschließend können Sie mit der CallClient.getDeviceManager-Methode DeviceManager abrufen.

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

Zum Festlegen eines Anzeigenamens für den Anrufer verwenden Sie diese alternative 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();

Warnung

Bis zur Version 1.1.0 und der Betaversion 1.1.0-beta.1 des ACS Calling Android SDK wird isTranscriptionActive verwendet und addOnIsTranscriptionActiveChangedListener ist Teil des Call-Objekts. Für die neuen Betaversionen wurden diese APIs als erweitertes Feature von Call verschoben, wie unten beschrieben.

Hinweis

Diese API wird als Vorschau für Entwickler bereitgestellt. Je nachdem, welches Feedback wir dazu erhalten, werden möglicherweise Änderungen vorgenommen. Verwenden Sie diese API nicht in einer Produktionsumgebung. Um diese API einzusetzen, verwenden Sie das Beta-Release des ACS Calling Android SDK.

Die Anruftranskription ist ein erweitertes Feature der zentralen Call-API. Sie müssen zunächst das API-Objekt des Transkriptionsfeatures abrufen:

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

Um anschließend herauszufinden, ob der Anruf transkribiert wird, prüfen Sie die Eigenschaft isTranscriptionActive von callTranscriptionFeature. Er gibt boolean zurück.

boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();

Sie können auch Transkriptionsänderungen abonnieren:

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

callTranscriptionFeature.addOnIsTranscriptionActiveChangedListener(handleCallOnIsTranscriptionChanged);

Einrichten des Systems

Erstellen des Xcode-Projekts

Erstellen Sie in Xcode ein neues iOS-Projekt, und wählen Sie die Vorlage Single View App aus. In dieser Schnellstartanleitung wird das SwiftUI-Framework verwendet. Legen Sie daher Language (Sprache) auf Swift und User Interface (Benutzeroberfläche) auf SwiftUI fest.

Während dieses Schnellstarts werden keine Komponenten- oder Benutzeroberflächentests erstellt. Die Textfelder Include Unit Tests (Komponententests einbeziehen) und Include UI Tests (Benutzeroberflächentests einbeziehen) können daher geleert werden.

Screenshot: Fenster zum Erstellen eines Projekts in Xcode

Installieren des Pakets und der Abhängigkeiten mit CocoaPods

  1. Erstellen Sie wie folgt eine Podfile für die Anwendung:

    platform :ios, '13.0'
    use_frameworks!
    target 'AzureCommunicationCallingSample' do
        pod 'AzureCommunicationCalling', '~> 1.0.0'
    end
    
  2. Führen Sie pod install aus.

  3. Öffnen Sie .xcworkspace mit Xcode.

Anfordern des Zugriffs auf das Mikrofon

Um auf das Mikrofon des Geräts zugreifen zu können, müssen Sie die Liste der Informationseigenschaften Ihrer App mit NSMicrophoneUsageDescription aktualisieren. Legen Sie den zugehörigen Wert auf eine Zeichenfolge (string) fest. Diese wird in das Dialogfeld eingeschlossen, mit dem das System Zugriff vom Benutzer anfordert.

Klicken Sie mit der rechten Maustaste auf den Eintrag Info.plist der Projektstruktur, und wählen Sie anschließend Open As (Öffnen als) > Source Code (Quellcode) aus. Fügen Sie im Abschnitt <dict> der obersten Ebene die folgenden Zeilen hinzu, und speichern Sie dann die Datei.

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

Einrichten des App-Frameworks

Öffnen Sie die Datei ContentView.swift Ihres Projekts, und fügen Sie am Anfang der Datei eine Deklaration vom Typ import hinzu, um die Bibliothek AzureCommunicationCalling zu importieren. Importieren Sie außerdem AVFoundation. Dies ist für Audioberechtigungsanforderungen im Code erforderlich.

import AzureCommunicationCalling
import AVFoundation

Initialisieren von „CallAgent“

Um eine CallAgent-Instanz auf der Grundlage von CallClient zu erstellen, müssen Sie eine Methode vom Typ callClient.createCallAgent verwenden, die asynchron ein Objekt vom Typ CallAgent zurückgibt, nachdem es initialisiert wurde.

Für die Erstellung eines Anrufclients muss ein Objekt vom Typ CommunicationTokenCredential übergeben werden.

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

Übergeben Sie das von Ihnen erstellte Objekt vom Typ CommunicationTokenCredential an CallClient, und legen Sie den Anzeigenamen fest.

self.callClient = CallClient()
let callAgentOptions = CallAgentOptions()
options.displayName = " iOS ACS 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")
        }
})

Warnung

Bis zur Version 1.1.0 und der Betaversion 1.1.0-beta.1 des ACS Calling iOS SDK wird isTranscriptionActive als Teil des Call-Objekts verwendet und didChangeTranscriptionState ist Teil des CallDelegate-Delegaten. Für die neuen Betaversionen wurden diese APIs als erweitertes Feature von Call verschoben, wie unten beschrieben.

Hinweis

Diese API wird als Vorschau für Entwickler bereitgestellt. Je nachdem, welches Feedback wir dazu erhalten, werden möglicherweise Änderungen vorgenommen. Verwenden Sie diese API nicht in einer Produktionsumgebung. Um diese API einzusetzen, verwenden Sie das Beta-Release des ACS Calling iOS SDK.

Die Anruftranskription ist ein erweitertes Feature der zentralen Call-API. Sie müssen zunächst das API-Objekt des Transkriptionsfeatures abrufen:

let callTranscriptionFeature = call.api(Features.transcription)

Um anschließend herauszufinden, ob der Anruf transkribiert wird, prüfen Sie die Eigenschaft isTranscriptionActive von callTranscriptionFeature. Er gibt Bool zurück.

let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

Sie können die Transkriptionsänderungen auch abonnieren, indem Sie den TranscriptionCallFeatureDelegate-Delegaten für Ihre Klasse mit dem Ereignis didChangeTranscriptionState implementieren:

callTranscriptionFeature.delegate = self

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

Nächste Schritte