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

Důležité

Funkce popsané v tomto dokumentu jsou aktuálně ve verzi Public Preview. Tato verze Preview se poskytuje bez smlouvy o úrovni služeb a nedoporučuje se pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Při použití přepisu volání můžete chtít uživatelům dát vědět, že se hovor přepisuje. Jak na to:

Požadavky

Instalace sady SDK

Vyhledejte build.gradle na úrovni projektu a nezapomeňte přidat mavenCentral() do seznamu úložišť v části buildscript a allprojects

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

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

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

Inicializace požadovaných objektů

Chcete-li vytvořit CallAgent instanci, musíte volat metodu createCallAgent instance CallClient . Tím se asynchronně vrátí CallAgent objekt instance. Metoda createCallAgent přebírá CommunicationUserCredential jako argument, který zapouzdřuje přístupový token. Pro přístup k DeviceManagerinstanci callAgent musí být nejprve vytvořena a pak můžete použít metodu CallClient.getDeviceManager k získání 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();

Upozornění

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

Poznámka

Toto rozhraní API se poskytuje jako verze Preview pro vývojáře a může se změnit na základě zpětné vazby, kterou dostaneme. Nepoužívejte toto rozhraní API v produkčním prostředí. Pokud chcete toto rozhraní API použít, použijte beta verzi sady Azure Communication Services Volání sady Android SDK.

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

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

Pak zkontrolujte, jestli se hovor přepisuje, zkontrolujte isTranscriptionActive vlastnost callTranscriptionFeature. Vrátí boolean.

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

Vytvoření projektu Xcode

V Xcode vytvořte nový projekt pro iOS a vyberte šablonu aplikace s jedním zobrazením . Tento rychlý start používá architekturu SwiftUI, takže byste měli nastavit jazyk na Swiftu a uživatelské rozhraní na SwiftUI.

Během tohoto rychlého startu nebudete vytvářet testy jednotek ani testy uživatelského rozhraní. Můžete vymazat textové pole Zahrnout testy jednotek a Zahrnout testy uživatelského rozhraní .

Screenshot that shows the window for creating a project within Xcode.

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

  1. Vytvořte pro svou aplikaci soubor Podfile, například takto:

    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 .NSMicrophoneUsageDescription Nastavíte přidruženou hodnotu na string hodnotu, která bude zahrnuta v dialogovém okně, které systém používá k vyžádání přístupu od uživatele.

Klikněte pravým tlačítkem myši na Info.plist položku stromu projektu a vyberte Otevřít kód AsSource>. 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 ContentView.swift vašeho projektu a přidejte import deklaraci do horní části souboru pro import AzureCommunicationCalling knihovny. Kromě toho import AVFoundation. Budete ho potřebovat pro žádosti o zvuková oprávnění v kódu.

import AzureCommunicationCalling
import AVFoundation

Inicializace CallAgentu

Pokud chcete 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í, musíte předat 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")
        }
})

Upozornění

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

Poznámka

Toto rozhraní API se poskytuje jako verze Preview pro vývojáře a může se změnit na základě zpětné vazby, kterou dostaneme. Nepoužívejte toto rozhraní API v produkčním prostředí. Pokud chcete toto rozhraní API použít, použijte beta verzi sady Azure Communication Services Volání sady iOS SDK.

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

let callTranscriptionFeature = call.feature(Features.transcription)

Pak zkontrolujte, jestli je hovor přepsaný, zkontrolujte isTranscriptionActive vlastnost callTranscriptionFeature. Vrátí Bool.

let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

Změny přepisu můžete také přihlásit k odběru 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
}

Další kroky