在用戶端上顯示呼叫轉譯狀態

重要

本檔中所述的功能目前為公開預覽狀態。 此預覽版本是在沒有服務等級協定的情況下提供,不建議用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

使用呼叫轉譯時,您可能會想要讓使用者知道正在轉譯呼叫。 方法如下。

必要條件

安裝 SDK

找出您的專案層級 build.gradle,並務必將 mavenCentral() 新增至 buildscriptallprojects 下的存放庫清單

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

然後,在您的模組層級組建中,gradle 將下列幾行新增至 [相依性] 區段

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

初始化必要的物件

若要建立 CallAgent 實例,您必須 createCallAgent 在實例上呼叫方法 CallClient 。 這會以非同步方式傳回 CallAgent 實例物件。 createCallAgent方法會使用 CommunicationUserCredential 做為引數,它會封裝存取權杖。 若要存取 DeviceManager ,必須先建立 callAgent 實例,然後您可以使用 CallClient.getDeviceManager 方法來取得 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();

若要設定呼叫者的顯示名稱,請使用此替代方法:

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

警告

直到版本1.1.0 和搶鮮版(Beta)版本 1.1.0-Beta 版為止,呼叫 Android SDK 的 ACS 具有 isTranscriptionActiveaddOnIsTranscriptionActiveChangedListener 都是 Call 物件的一部分。 針對新的測試版,這些 Api 已移為的擴充功能, Call 就像下面所述。

注意

此 API 僅供開發人員預覽,而且可能會根據收到的意見反應變更。 請勿將此 API 用於生產環境。 若要使用此 api,請使用 ACS 呼叫 Android SDK 的「Beta」版本

呼叫轉譯是核心物件的擴充功能 Call 。 您必須先取得轉譯功能物件:

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

然後,若要檢查呼叫是否正在轉譯,請檢查的 isTranscriptionActive 屬性 callTranscriptionFeature 。 它會傳回 boolean

boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();

您也可以訂閱轉譯中的變更:

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

callTranscriptionFeature.addOnIsTranscriptionActiveChangedListener(handleCallOnIsTranscriptionChanged);

設定您的系統

建立 Xcode 專案

在 Xcode 中建立新的 iOS 專案,並選取 [單一檢視應用程式] 範本。 本快速入門使用 SwiftUI 架構,因此您應該將 語言 設定為 Swift ,並 消費者介面SwiftUI

在本快速入門中,您不會建立單元測試或 UI 測試。 您可以隨意清除 [ 包含單元測試 ] 和 [ 包含 UI 測試 ] 文字方塊。

顯示在 Xcode 內建立專案之視窗的螢幕擷取畫面。

使用 CocoaPods 安裝套件和相依性

  1. 為您的應用程式建立 Podfile,如下所示:

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

  3. .xcworkspace以 Xcode 開啟。

要求存取麥克風

若要存取裝置的麥克風,您需要以更新應用程式的資訊內容清單 NSMicrophoneUsageDescription 。 您將相關聯的值設定為 string ,將會包含在系統用來向使用者要求存取的對話方塊中。

以滑鼠右鍵按一下專案樹狀結構的 Info.plist 項目,然後選取 [開啟形式] > [原始程式碼]。 在最上層區段中新增下列幾行 <dict> ,然後儲存檔案。

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

設定應用程式架構

開啟專案的 ContentView 檔案,然後將宣告新增 import 至檔案頂端,以匯入連結 AzureCommunicationCalling 庫。 此外,匯入 AVFoundation 。 在程式碼中,您將需要它來進行音訊許可權要求。

import AzureCommunicationCalling
import AVFoundation

初始化 CallAgent

若要 CallAgent 從建立實例 CallClient ,您必須使用 callClient.createCallAgent 方法,以在初始化之後以非同步方式傳回 CallAgent 物件。

若要建立呼叫用戶端,您必須傳遞 CommunicationTokenCredential 物件。

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 您建立的物件 CallClient ,並設定顯示名稱。

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

警告

直到版本1.1.0 和搶鮮版(Beta)版本 1.1.0-Beta. 1 的 ACS 呼叫 iOS SDK 的是 isTranscriptionActive 物件的一部分 Call ,而且 didChangeTranscriptionState 是委派的一部分 CallDelegate 。 針對新的測試版,這些 Api 已移為的擴充功能, Call 就像下面所述。

注意

此 API 僅供開發人員預覽,而且可能會根據收到的意見反應變更。 請勿將此 API 用於生產環境。 若要使用此 api,請使用 ACS 呼叫 iOS SDK 的「搶鮮版(Beta)」版本

呼叫轉譯是核心物件的擴充功能 Call 。 您必須先取得轉譯功能物件:

let callTranscriptionFeature = call.feature(Features.transcription)

然後,若要檢查呼叫是否轉譯,請檢查的 isTranscriptionActive 屬性 callTranscriptionFeature 。 它會傳回 Bool

let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

您也可以透過在您的類別上執行委派來訂閱轉譯變更, TranscriptionCallFeatureDelegate 並提供 didChangeTranscriptionState 下列事件:

callTranscriptionFeature.delegate = self

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

下一步