Menampilkan status transkripsi panggilan pada klien

Catatan

Status transkripsi panggilan hanya tersedia dari rapat Teams. Saat ini tidak ada dukungan untuk status transkripsi panggilan untuk panggilan Azure Communication Services ke Azure Communication Services.

Saat menggunakan transkripsi panggilan, Anda mungkin ingin memberi tahu pengguna bahwa panggilan sedang ditranskripsi. Berikut caranya.

Prasyarat

Pasang SDK

Temukan file build.gradle tingkat proyek Anda dan tambahkan mavenCentral() ke daftar repositori di bawah buildscript dan allprojects:

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

Kemudian, di file build.gradle tingkat modul Anda, tambahkan baris berikut ke bagian dependencies :

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

Menginisialisasi objek yang diperlukan

Untuk membuat CallAgent instans, Anda harus memanggil createCallAgent metode pada CallClient instans. Panggilan ini secara asinkron mengembalikan objek instans CallAgent .

Metode ini createCallAgent mengambil CommunicationUserCredential sebagai argumen, yang merangkum token akses.

Untuk mengakses DeviceManager, Anda harus membuat instans terlebih callAgent dahulu. Kemudian Anda dapat menggunakan CallClient.getDeviceManager metode untuk mendapatkan 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();

Untuk mengatur nama tampilan penelepon, gunakan metode alternatif ini:

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

Peringatan

Hingga versi 1.1.0 dan rilis beta versi 1.1.0-beta.1 dari Azure Communication Services Calling Android SDK memiliki isTranscriptionActive dan addOnIsTranscriptionActiveChangedListener merupakan bagian Call dari objek. Untuk rilis beta baru, API tersebut telah dipindahkan sebagai fitur tambahan dari Call seperti yang dijelaskan di bawah ini.

Transkripsi panggilan adalah fitur yang diperluas dari objek inti Call . Anda harus terlebih dahulu mendapatkan objek fitur transkripsi:

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

Kemudian, untuk memeriksa apakah panggilan sedang ditranskripsi, periksa properti isTranscriptionActive dari callTranscriptionFeature. Hal ini mengembalikan boolean.

boolean isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive();

Anda juga dapat berlangganan perubahan transkripsi:

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

callTranscriptionFeature.addOnIsTranscriptionActiveChangedListener(handleCallOnIsTranscriptionChanged);

Siapkan sistem Anda

Buat proyek Xcode

Di Xcode, buat proyek iOS baru dan pilih templat Aplikasi Tampilan Tunggal. Mulai cepat ini menggunakan kerangka kerja SwiftUI, jadi Anda harus mengatur Bahasa ke Swift dan mengatur Antarmuka ke SwiftUI.

Anda tidak akan membuat pengujian selama mulai cepat ini. Jangan ragu untuk menghapus kotak centang Sertakan Pengujian.

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

Pasang paket dan dependensi dengan menggunakan CocoaPods

  1. Buat Podfile untuk aplikasi Anda, seperti contoh ini:

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

  3. Buka .xcworkspace dengan menggunakan Xcode.

Minta akses ke mikrofon

Untuk mengakses mikrofon perangkat, Anda perlu memperbarui daftar properti informasi aplikasi dengan menggunakan NSMicrophoneUsageDescription. Anda mengatur nilai terkait ke string yang akan disertakan dalam dialog yang digunakan sistem untuk meminta akses dari pengguna.

Klik kanan entri Info.plist dari pohon proyek, lalu pilih Buka Sebagai>Kode Sumber. Tambahkan baris berikut ke bagian <dict> tingkat atas, lalu simpan file.

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

Menyiapkan kerangka kerja aplikasi

Buka file ContentView.swift proyek Anda. import Tambahkan deklarasi ke bagian atas file untuk mengimpor AzureCommunicationCalling pustaka. Selain itu, impor AVFoundation. Anda akan memerlukannya untuk permintaan izin audio dalam kode.

import AzureCommunicationCalling
import AVFoundation

Inisialisasi CallAgent

Untuk membuat CallAgent instans dari CallClient, Anda harus menggunakan callClient.createCallAgent metode yang secara asinkron mengembalikan CallAgent objek setelah diinisialisasi.

Untuk membuat klien panggilan, berikan CommunicationTokenCredential objek:

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

Teruskan CommunicationTokenCredential objek yang Anda buat ke CallClient, dan atur nama tampilan:

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

Peringatan

Hingga versi 1.1.0 dan rilis beta versi 1.1.0-beta.1 dari Azure Communication Services Calling iOS SDK memiliki isTranscriptionActive sebagai bagian Call dari objek dan didChangeTranscriptionState merupakan bagian CallDelegate dari delegasi. Untuk rilis beta baru, API tersebut telah dipindahkan sebagai fitur tambahan dari Call seperti yang dijelaskan di bawah ini.

Transkripsi panggilan adalah fitur yang diperluas dari objek inti Call . Anda harus terlebih dahulu mendapatkan objek fitur transkripsi:

let callTranscriptionFeature = call.feature(Features.transcription)

Kemudian, untuk memeriksa apakah panggilan ditranskrip, periksa properti isTranscriptionActivecallTranscriptionFeature. Hal ini mengembalikan Bool.

let isTranscriptionActive = callTranscriptionFeature.isTranscriptionActive;

Anda juga dapat berlangganan perubahan transkripsi dengan menerapkan delegasi TranscriptionCallFeatureDelegate di kelas Anda dengan peristiwa didChangeTranscriptionState:

callTranscriptionFeature.delegate = self

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

Siapkan sistem Anda

Membuat proyek Visual Studio

Untuk aplikasi UWP, di Visual Studio 2022, buat proyek Aplikasi Kosong (Universal Windows) baru. Setelah Anda memasukkan nama proyek, jangan ragu untuk memilih Windows SDK apa pun yang lebih baru dari 10.0.17763.0.

Untuk aplikasi WinUI 3, buat proyek baru dengan templat Aplikasi Kosong, Dipaketkan (WinUI 3 di Desktop) untuk menyiapkan aplikasi WinUI 3 satu halaman. SDK Aplikasi Windows versi 1.3 atau yang lebih baru diperlukan.

Instal paket dan dependensi dengan menggunakan NuGet Package Manager

API dan pustaka SDK Panggilan tersedia untuk umum melalui paket NuGet.

Langkah-langkah berikut ini mencontohkan cara menemukan, mengunduh, dan menginstal paket NuGet SDK Panggilan:

  1. Buka Manajer Paket NuGet dengan memilih Alat>Pengelola>Paket NuGet Kelola Paket NuGet untuk Solusi.
  2. Pilih Telusuri, lalu masukkan Azure.Communication.Calling.WindowsClient di kotak pencarian.
  3. Pastikan bahwa kotak centang Sertakan prarilis dipilih.
  4. Azure.Communication.Calling.WindowsClient Pilih paket, lalu pilih Azure.Communication.Calling.WindowsClient1.4.0-beta.1 atau versi yang lebih baru.
  5. Pilih kotak centang yang sesuai dengan proyek Communication Services di tab sisi kanan.
  6. Pilih tombol Instal.

Transkripsi panggilan adalah fitur yang diperluas dari objek inti Call . Anda harus terlebih dahulu mendapatkan objek fitur transkripsi:

TranscriptionCallFeature transcriptionFeature = call.Features.Transcription;

Kemudian, untuk memeriksa apakah panggilan sedang ditranskripsi, periksa properti IsTranscriptionActive dari transcriptionFeature. Hal ini mengembalikan boolean.

boolean isTranscriptionActive = transcriptionFeature.isTranscriptionActive;

Anda juga dapat berlangganan perubahan transkripsi:

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

transcriptionFeature.IsTranscriptionActiveChanged += Call__OnIsTranscriptionActiveChanged;

Langkah berikutnya