Mengelola rekaman panggilan pada klien
Penting
Fungsionalitas yang dijelaskan dalam artikel ini saat ini dalam pratinjau publik. Versi pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.
Perekaman panggilan memungkinkan pengguna Anda merekam panggilan yang mereka lakukan dengan Azure Communication Services. Dalam artikel ini, Anda mempelajari cara mengelola rekaman di sisi klien. Sebelum memulai, Anda perlu menyiapkan perekaman di sisi server.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Sumber daya Communication Services yang disebarkan. Buat sumber daya Azure Communication Services.
- Token akses pengguna untuk mengaktifkan klien panggilan. Untuk informasi selengkapnya, lihat Membuat dan mengelola token akses.
- Opsional: Penyelesaian mulai cepat untuk menambahkan panggilan suara ke aplikasi Anda.
Pasang SDK
npm install
Gunakan perintah untuk menginstal SDK Umum dan Panggilan Azure Communication Services untuk JavaScript:
npm install @azure/communication-common --save
npm install @azure/communication-calling --save
Menginisialisasi objek yang diperlukan
Instans CallClient
diperlukan untuk sebagian besar operasi panggilan. Saat membuat instans baru CallClient
, Anda dapat mengonfigurasinya dengan opsi kustom seperti Logger
instans.
CallClient
Dengan instans, Anda dapat membuat CallAgent
instans dengan memanggil createCallAgent
. Metode ini secara asinkron mengembalikan objek instans CallAgent
.
Metode createCallAgent
menggunakan CommunicationTokenCredential
sebagai argumen. Hal ini menerima token akses pengguna.
Anda dapat menggunakan metode getDeviceManager
pada instans CallClient
untuk mengakses deviceManager
.
const { CallClient } = require('@azure/communication-calling');
const { AzureCommunicationTokenCredential} = require('@azure/communication-common');
const { AzureLogger, setLogLevel } = require("@azure/logger");
// Set the logger's log level
setLogLevel('verbose');
// Redirect log output to console, file, buffer, REST API, or whatever location you want
AzureLogger.log = (...args) => {
console.log(...args); // Redirect log output to console
};
const userToken = '<USER_TOKEN>';
callClient = new CallClient(options);
const tokenCredential = new AzureCommunicationTokenCredential(userToken);
const callAgent = await callClient.createCallAgent(tokenCredential, {displayName: 'optional Azure Communication Services user name'});
const deviceManager = await callClient.getDeviceManager()
Cara terbaik mengelola konektivitas SDK ke infrastruktur Microsoft
Call Agent
Instans ini membantu Anda mengelola panggilan (untuk bergabung atau memulai panggilan). Untuk bekerja, SDK panggilan Anda perlu tersambung ke infrastruktur Microsoft untuk mendapatkan pemberitahuan panggilan masuk dan mengoordinasikan detail panggilan lainnya. Anda Call Agent
memiliki dua kemungkinan status:
Tersambung - Nilai Call Agent
Connected
connectionStatue berarti SDK klien terhubung dan mampu menerima pemberitahuan dari infrastruktur Microsoft.
Terputus - Nilai Call Agent
Disconnected
status connectionStatue ada masalah yang mencegah SDK menyambungkannya dengan benar. Call Agent
harus dibuat ulang.
invalidToken
: Jika token kedaluwarsa atau instans tidak validCall Agent
terputus dengan kesalahan ini.connectionIssue
: Jika ada masalah dengan klien yang terhubung ke microsoft infrascture, setelah banyak percobaanCall Agent
ulang mengeksposconnectionIssue
kesalahan.
Anda dapat memeriksa apakah lokal Call Agent
Anda tersambung ke infrastruktur Microsoft dengan memeriksa nilai connectionState
properti saat ini. Selama panggilan aktif, Anda dapat mendengarkan connectionStateChanged
acara untuk menentukan apakah Call Agent
perubahan dari status Tersambung ke Terputus .
const connectionState = callAgentInstance.connectionState;
console.log(connectionState); // it may return either of 'Connected' | 'Disconnected'
const connectionStateCallback = (args) => {
console.log(args); // it will return an object with oldState and newState, each of having a value of either of 'Connected' | 'Disconnected'
// it will also return reason, either of 'invalidToken' | 'connectionIssue'
}
callAgentInstance.on('connectionStateChanged', connectionStateCallback);
Catatan
API ini disediakan sebagai pratinjau untuk pengembang dan mungkin berubah berdasarkan umpan balik yang kami terima. Jangan gunakan API ini di lingkungan produksi. Untuk menggunakan API ini, gunakan rilis beta azure Communication Services Calling Web SDK.
Perekaman cloud
Perekaman panggilan adalah fitur tambahan dari API Panggilan inti. Pertama-tama Anda perlu mengimpor fitur panggilan dari SDK Panggilan:
import { Features} from "@azure/communication-calling";
Kemudian Anda bisa mendapatkan objek API fitur perekaman dari instans panggilan:
const callRecordingApi = call.feature(Features.Recording);
Untuk memeriksa apakah panggilan sedang direkam, periksa isRecordingActive
properti .callRecordingApi
Hal ini mengembalikan Boolean
.
const isRecordingActive = callRecordingApi.isRecordingActive;
Anda juga dapat berlangganan perubahan rekaman:
const isRecordingActiveChangedHandler = () => {
console.log(callRecordingApi.isRecordingActive);
};
callRecordingApi.on('isRecordingActiveChanged', isRecordingActiveChangedHandler);
Anda bisa mendapatkan daftar rekaman dengan menggunakan recordings
properti .callRecordingApi
Ini mengembalikan RecordingInfo[]
, yang memiliki status rekaman cloud saat ini.
const recordings = callRecordingApi.recordings;
recordings.forEach(r => {
console.log("State: ${r.state}");
Anda juga dapat berlangganan recordingsUpdated
dan mendapatkan kumpulan rekaman yang diperbarui. Kejadian ini dipicu setiap kali ada pembaruan rekaman.
const cloudRecordingsUpdatedHandler = (args: { added: SDK.RecordingInfo[], removed: SDK.RecordingInfo[]}) => {
console.log('Recording started by: ');
args.added?.forEach(a => {
console.log('State: ${a.state}');
});
console.log('Recording stopped by: ');
args.removed?.forEach(r => {
console.log('State: ${r.state}');
});
};
callRecordingApi.on('recordingsUpdated', cloudRecordingsUpdatedHandler );
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();
Merekam panggilan
Catatan
API ini disediakan sebagai pratinjau untuk pengembang dan mungkin berubah berdasarkan umpan balik yang kami terima. Jangan gunakan API ini di lingkungan produksi. Untuk menggunakan API ini, gunakan rilis beta Azure Communication Services Memanggil Android SDK.
Perekaman panggilan adalah fitur yang diperluas dari objek inti Call
.
Peringatan
Hingga versi 1.1.0 dan rilis beta versi 1.1.0-beta.1 dari Azure Communication Services Memanggil Android SDK, isRecordingActive
dan addOnIsRecordingActiveChangedListener
merupakan bagian Call
dari objek. Untuk rilis beta baru, API tersebut dipindahkan sebagai fitur yang diperluas dari Call
.
Anda harus terlebih dahulu mendapatkan objek fitur perekaman:
RecordingCallFeature callRecordingFeature = call.feature(Features.RECORDING);
Kemudian, untuk memeriksa apakah panggilan sedang direkam, periksa properti isRecordingActive
dari callRecordingFeature
. Hal ini mengembalikan boolean
.
boolean isRecordingActive = callRecordingFeature.isRecordingActive();
Anda juga dapat berlangganan perubahan rekaman:
private void handleCallOnIsRecordingChanged(PropertyChangedEvent args) {
boolean isRecordingActive = callRecordingFeature.isRecordingActive();
}
callRecordingFeature.addOnIsRecordingActiveChangedListener(handleCallOnIsRecordingChanged);
Jika Anda ingin mulai merekam dari aplikasi, pertama-tama ikuti Gambaran umum perekaman panggilan untuk langkah-langkah menyiapkan perekaman panggilan.
Setelah menyiapkan perekaman panggilan di server, dari aplikasi Android, Anda perlu mendapatkan ServerCallId
nilai dari panggilan lalu mengirimkannya ke server Anda untuk memulai proses perekaman. Anda dapat menemukan nilai dengan ServerCallId
menggunakan getServerCallId()
dari CallInfo
kelas . Anda dapat menemukan CallInfo
kelas di objek kelas dengan menggunakan getInfo()
.
try {
String serverCallId = call.getInfo().getServerCallId().get();
// Send serverCallId to your recording server to start the call recording.
} catch (ExecutionException | InterruptedException e) {
} catch (UnsupportedOperationException unsupportedOperationException) {
}
Saat Anda mulai merekam dari server, peristiwa handleCallOnIsRecordingChanged
dipicu dan nilainya callRecordingFeature.isRecordingActive()
adalah true
.
Sama seperti memulai perekaman panggilan, jika Anda ingin menghentikan perekaman panggilan, Anda perlu mendapatkan ServerCallId
dan mengirimnya ke server perekaman Anda sehingga dapat menghentikan perekaman:
try {
String serverCallId = call.getInfo().getServerCallId().get();
// Send serverCallId to your recording server to stop the call recording.
} catch (ExecutionException | InterruptedException e) {
} catch (UnsupportedOperationException unsupportedOperationException) {
}
Ketika Anda berhenti merekam dari server, peristiwa handleCallOnIsRecordingChanged
dipicu dan nilainya callRecordingFeature.isRecordingActive()
adalah false
.
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.
Pasang paket dan dependensi dengan menggunakan CocoaPods
Buat Podfile untuk aplikasi Anda, seperti contoh ini:
platform :ios, '13.0' use_frameworks! target 'AzureCommunicationCallingSample' do pod 'AzureCommunicationCalling', '~> 1.0.0' end
Jalankan
pod install
.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")
}
})
Merekam panggilan
Catatan
API ini disediakan sebagai pratinjau untuk pengembang dan mungkin berubah berdasarkan umpan balik yang kami terima. Jangan gunakan API ini di lingkungan produksi. Untuk menggunakan API ini, gunakan rilis beta Azure Communication Services Calling iOS SDK.
Perekaman panggilan adalah fitur yang diperluas dari objek inti Call
.
Peringatan
Hingga versi 1.1.0 dan rilis beta versi 1.1.0-beta.1 dari Azure Communication Services Calling iOS SDK, isRecordingActive
adalah bagian Call
dari objek dan didChangeRecordingState
merupakan bagian CallDelegate
dari delegasi. Untuk rilis beta baru, API tersebut dipindahkan sebagai fitur yang diperluas dari Call
.
Anda harus terlebih dahulu mendapatkan objek fitur perekaman:
let callRecordingFeature = call.feature(Features.recording)
Kemudian, untuk memeriksa apakah panggilan sedang direkam, periksa properti isRecordingActive
dari callRecordingFeature
. Hal ini mengembalikan Bool
.
let isRecordingActive = callRecordingFeature.isRecordingActive;
Anda juga dapat berlangganan untuk merekam perubahan dengan menerapkan RecordingCallFeatureDelegate
delegasi di kelas Anda dengan peristiwa didChangeRecordingState
:
callRecordingFeature.delegate = self
// didChangeRecordingState is a member of RecordingCallFeatureDelegate
public func recordingCallFeature(_ recordingCallFeature: RecordingCallFeature, didChangeRecordingState args: PropertyChangedEventArgs) {
let isRecordingActive = recordingFeature.isRecordingActive
}
Jika Anda ingin mulai merekam dari aplikasi, pertama-tama ikuti Gambaran umum perekaman panggilan untuk langkah-langkah menyiapkan perekaman panggilan.
Setelah menyiapkan perekaman panggilan di server, dari aplikasi iOS, Anda perlu mendapatkan ServerCallId
nilai dari panggilan lalu mengirimkannya ke server Anda untuk memulai proses perekaman. Anda dapat menemukan nilai dengan ServerCallId
menggunakan getServerCallId()
dari CallInfo
kelas . Anda dapat menemukan CallInfo
kelas di objek kelas dengan menggunakan getInfo()
.
// Send serverCallId to your recording server to start the call recording.
let serverCallId = call.info.getServerCallId(){ (serverId, error) in }
Saat Anda mulai merekam dari server, peristiwa didChangeRecordingState
dipicu dan nilainya recordingFeature.isRecordingActive
adalah true
.
Sama seperti memulai perekaman panggilan, jika Anda ingin menghentikan perekaman panggilan, Anda perlu mendapatkan ServerCallId
dan mengirimnya ke server perekaman Anda sehingga dapat menghentikan perekaman:
// Send serverCallId to your recording server to stop the call recording.
let serverCallId = call.info.getServerCallId(){ (serverId, error) in }
Ketika Anda berhenti merekam dari server, peristiwa didChangeRecordingState
dipicu dan nilainya recordingFeature.isRecordingActive
adalah false
.
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:
- Buka Manajer Paket NuGet dengan memilih Alat>Pengelola>Paket NuGet Kelola Paket NuGet untuk Solusi.
- Pilih Telusuri, lalu masukkan
Azure.Communication.Calling.WindowsClient
di kotak pencarian. - Pastikan bahwa kotak centang Sertakan prarilis dipilih.
Azure.Communication.Calling.WindowsClient
Pilih paket, lalu pilihAzure.Communication.Calling.WindowsClient
1.4.0-beta.1 atau versi yang lebih baru.- Pilih kotak centang yang sesuai dengan proyek Communication Services di tab sisi kanan.
- Pilih tombol Instal.
Merekam panggilan
Perekaman panggilan adalah fitur yang diperluas dari objek inti Call
. Anda harus terlebih dahulu mendapatkan objek fitur perekaman:
RecordingCallFeature recordingFeature = call.Features.Recording;
Kemudian, untuk memeriksa apakah panggilan sedang direkam, periksa properti IsRecordingActive
dari recordingFeature
. Hal ini mengembalikan boolean
.
boolean isRecordingActive = recordingFeature.IsRecordingActive;
Anda juga dapat berlangganan perubahan rekaman:
private async void Call__OnIsRecordingActiveChanged(object sender, PropertyChangedEventArgs args)
boolean isRecordingActive = recordingFeature.IsRecordingActive;
}
recordingFeature.IsRecordingActiveChanged += Call__OnIsRecordingActiveChanged;
Perekaman kepatuhan
Perekaman kepatuhan adalah perekaman yang didasarkan pada kebijakan Microsoft Teams. Anda dapat mengaktifkannya dengan menggunakan tutorial ini: Pengenalan rekaman berbasis kebijakan Teams untuk panggilan.
Perekaman berbasis kebijakan dimulai secara otomatis saat pengguna yang memiliki kebijakan bergabung dalam panggilan. Untuk mendapatkan pemberitahuan dari Azure Communication Services tentang perekaman, gunakan kode berikut:
const callRecordingApi = call.feature(Features.Recording);
const isComplianceRecordingActive = callRecordingApi.isRecordingActive;
const isComplianceRecordingActiveChangedHandler = () => {
console.log(callRecordingApi.isRecordingActive);
};
callRecordingApi.on('isRecordingActiveChanged', isComplianceRecordingActiveChangedHandler);
Anda juga dapat menerapkan perekaman kepatuhan dengan menggunakan bot perekaman kustom. Lihat contoh GitHub.
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk