在用戶端上顯示通話謄寫狀態
注意
通話謄寫狀態僅適用於 Teams 會議。 目前不支援 Azure 通訊服務對 Azure 通訊服務通話的通話謄寫狀態。
使用通話謄寫時,您可能會想要讓使用者知道通話正在經過謄寫。 方法如下。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- 已部署通訊服務資源。 建立通訊服務資源。
- 用來啟用呼叫用戶端的使用者存取權杖。 如需詳細資訊,請參閱建立和管理存取權杖。
- 選擇性:完成快速入門以將語音通話新增至您的應用程式
安裝 SDK
找出您的專案層級 build.gradle 檔案,並將 mavenCentral()
新增至 buildscript
和 allprojects
下的存放庫清單:
buildscript {
repositories {
...
mavenCentral()
...
}
}
allprojects {
repositories {
...
mavenCentral()
...
}
}
然後,在您的模組層級 build.gradle 檔案中,將以下幾行新增至 dependencies
區段:
dependencies {
...
implementation 'com.azure.android:azure-communication-calling:1.0.0'
...
}
初始化必要的物件
若要建立 CallAgent
執行個體,您必須在 CallClient
執行個體上呼叫 createCallAgent
方法。 此呼叫會以非同步方式傳回 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();
警告
截至 Azure 通訊服務呼叫 Android SDK 的 1.1.0 版和 Beta 版本 1.1.0-Beta.1 為止,其中具有屬於 Call
物件一部分的 isTranscriptionActive
和 addOnIsTranscriptionActiveChangedListener
。 針對新的 Beta 版本,這些 API 已移動為 Call
的擴充功能,如下所示。
通話謄寫是核心 Call
物件的擴充功能。 您必須先取得謄寫功能物件:
TranscriptionCallFeature callTranscriptionFeature = call.feature(Features.TRANSCRIPTION);
然後,若要檢查是否正在謄寫通話,請檢查 callTranscriptionFeature
的 isTranscriptionActive
屬性。 它會傳回 boolean
。
boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();
您也可以訂閱謄寫的變更:
private void handleCallOnIsTranscriptionChanged(PropertyChangedEvent args) {
boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();
}
callTranscriptionFeature.addOnIsTranscriptionActiveChangedListener(handleCallOnIsTranscriptionChanged);
設定系統
建立 Xcode 專案
在 Xcode 中建立新的 iOS 專案,並選取 [單一檢視應用程式] 範本。 本快速入門使用 SwiftUI 架構,因此您應將 [語言] 設定為 [Swift],並將 [使用者介面] 設定為 [SwiftUI]。
進行本快速入門期間,您不會建立測試。 您可以隨意清除 [包含測試] 核取方塊。
使用 CocoaPods 安裝套件和相依性
為您的應用程式建立 Podfile,如以下範例所示:
platform :ios, '13.0' use_frameworks! target 'AzureCommunicationCallingSample' do pod 'AzureCommunicationCalling', '~> 1.0.0' end
執行
pod install
。使用 Xcode 開啟
.xcworkspace
。
要求存取麥克風
若要存取裝置的麥克風,您必須使用 NSMicrophoneUsageDescription
更新應用程式的資訊屬性清單。 您可以將相關聯的值設定為字串,此值會包含在系統用來向使用者要求存取權的對話中。
以滑鼠右鍵按一下專案樹狀結構的 Info.plist 項目,接著選取 [開啟形式]>[原始程式碼]。 將以下幾行新增至最上層 <dict>
區段中,然後儲存檔案。
<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for VOIP calling.</string>
設定應用程式架構
開啟專案的 ContentView.swift 檔案。 將 import
宣告新增至檔案頂端,以匯入 AzureCommunicationCalling
程式庫。 此外,匯入 AVFoundation
。 您將需要程式庫,才能在程式碼中要求音訊權限。
import AzureCommunicationCalling
import AVFoundation
初始化 CallAgent
若要從 CallClient
建立 CallAgent
執行個體,您必須使用 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 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")
}
})
警告
截至 Azure 通訊服務呼叫 iOS SDK 的 1.1.0 版和 Beta 版本 1.1.0-Beta.1 為止,其中具有屬於 Call
物件一部分的 isTranscriptionActive
以及 CallDelegate
委派一部分的 didChangeTranscriptionState
。 針對新的 Beta 版本,這些 API 已移動為 Call
的擴充功能,如下所示。
通話謄寫是核心 Call
物件的擴充功能。 您必須先取得謄寫功能物件:
let callTranscriptionFeature = call.feature(Features.transcription)
然後,若要檢查是否已謄寫通話,請檢查 callTranscriptionFeature
的 isTranscriptionActive
屬性。 它會傳回 Bool
。
let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;
您也可以使用事件 didChangeTranscriptionState
在類別上實作 TranscriptionCallFeatureDelegate
委派,來訂閱謄寫的變更:
callTranscriptionFeature.delegate = self
// didChangeTranscriptionState is a member of TranscriptionCallFeatureDelegate
public func transcriptionCallFeature(_ transcriptionCallFeature: TranscriptionCallFeature, didChangeTranscriptionState args: PropertyChangedEventArgs) {
let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive
}
設定系統
建立 Visual Studio 專案
針對 UWP 應用程式,在 Visual Studio 2022 中建立新的空白應用程式 (通用 Windows) 專案。 在輸入專案名稱之後,請隨意選擇高於 10.0.17763.0 的任何 Windows SDK。
針對 WinUI 3 應用程式,使用空白應用程式、封裝 (桌面中的 WinUI 3) 範本來建立新專案,以設定單頁 WinUI 3 應用程式。 需要 Windows App SDK 1.3 版或更新版本。
使用 NuGet 套件管理員來安裝套件和相依性
通話 SDK API 和程式庫可透過 NuGet 套件公開取得。
下列步驟示範如何尋找、下載及安裝通話 SDK NuGet 套件:
- 藉由選取 [工具]> [NuGet 套件管理員]> [管理解決方案的 NuGet 套件],開啟 NuGet 套件管理員。
- 選取 [瀏覽],然後在搜尋方塊中輸入
Azure.Communication.Calling.WindowsClient
。 - 確定已選取 [包含發行前版本] 核取方塊。
- 選取
Azure.Communication.Calling.WindowsClient
套件,然後選取Azure.Communication.Calling.WindowsClient
1.4.0-beta.1 或更新版本。 - 選取對應至右側索引標籤上「通訊服務」專案的核取方塊。
- 選取 [安裝] 按鈕。
通話謄寫是核心 Call
物件的擴充功能。 您必須先取得謄寫功能物件:
TranscriptionCallFeature transcriptionFeature = call.Features.Transcription;
然後,若要檢查是否正在謄寫通話,請檢查 transcriptionFeature
的 IsTranscriptionActive
屬性。 它會傳回 boolean
。
boolean isTranscriptionActive = transcriptionFeature.isTranscriptionActive;
您也可以訂閱謄寫的變更:
private async void Call__OnIsTranscriptionActiveChanged(object sender, PropertyChangedEventArgs args)
boolean isTranscriptionActive = transcriptionFeature.IsTranscriptionActive();
}
transcriptionFeature.IsTranscriptionActiveChanged += Call__OnIsTranscriptionActiveChanged;