Mentransfer panggilan
Penting
Fungsionalitas yang dijelaskan dalam dokumen ini saat ini berada 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 yang dibatasi. Untuk informasi lebih lanjut, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.
Selama panggilan aktif, Anda mungkin ingin mentransfer panggilan ke orang atau nomor lain. Mari kita belajar bagaimana.
Prasyarat
- Akun Azure dengan langganan aktif. Membuat akun secara gratis.
- Sumber daya Communication Services yang disebarkan. Membuat sumber daya Azure Communication Services.
- Token akses pengguna untuk mengaktifkan klien panggilan. Untuk informasi selengkapnya, lihat Membuat dan mengelola token akses.
- Opsional: Selesaikan panduan memulai untuk menambahkan panggilan suara ke aplikasi Anda
Memasang SDK
Menggunakan perintah npm install
untuk memasang panggilan Azure Communication Services dan SDK umum untuk JavaScript.
npm install @azure/communication-common --save
npm install @azure/communication-calling --save
Menginisialisasi objek yang diperlukan
CallClient, instans diperlukan untuk sebagian besar operasi panggilan. Mari buat CallClient
instans baru. Anda dapat mengonfigurasinya dengan opsi khusus seperti Pencatat instans.
Bila Anda memiliki instans CallClient
, Anda dapat membuat instans CallAgent
dengan memanggil metode createCallAgent
pada instans CallClient
. 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 wherever desired. To console, file, buffer, REST API, etc...
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()
Catatan
API ini disediakan sebagai pratinjau untuk pengembang dan dapat berubah menurut umpan balik yang kami terima. Jangan gunakan API ini dalam lingkungan produksi. Untuk menggunakan api ini, silakan gunakan rilis 'beta' dari Azure Communication Services Calling Web SDK
Transfer panggilan adalah fitur tambahan dari Call
API inti. Pertama-tama Anda perlu mengimpor Fitur panggilan dari SDK Panggilan:
import { Features} from "@azure/communication-calling";
Kemudian Anda bisa mendapatkan objek API fitur transfer dari instans panggilan:
const callTransferApi = call.feature(Features.Transfer);
Transfer panggilan melibatkan tiga pihak:
- Transferor: Orang yang memulai permintaan transfer.
- Transferee: Orang yang sedang ditransfer.
- Target transfer: Orang yang menjadi tujuan transfer.
Transfer ke peserta:
- Sudah ada panggilan yang tersambung antara penerima transfer dan transferee. transferor memutuskan untuk mentransfer panggilan dari transferee ke target transfer.
- transferor memanggil
transfer
API. - transferee memutuskan apakah akan
accept
ataureject
permintaan transfer ke target transfer dengan menggunakan peristiwatransferRequested
. - Target transfer menerima panggilan masuk hanya jika transferee menerima permintaan transfer.
Untuk mentransfer panggilan saat ini, Anda dapat menggunakan transfer
API. transfer
menggunakan transferCallOptions
opsional, yang memungkinkan Anda mengatur bendera disableForwardingAndUnanswered
:
disableForwardingAndUnanswered = false
: Jika target transfer tidak menjawab panggilan transfer, transfer mengikuti setelan penerusan target transfer dan tidak dijawab.disableForwardingAndUnanswered = true
: Jika target transfer tidak menjawab panggilan transfer, upaya transfer akan berakhir.
// transfer target can be an Azure Communication Services user
const id = { communicationUserId: <ACS_USER_ID> };
// call transfer API
const transfer = callTransferApi.transfer({targetParticipant: id});
Transfer untuk memanggil:
- Sudah ada panggilan yang tersambung antara penerima transfer dan transferee.
- Sudah ada panggilan terhubung antara transferor dan target transfer.
- Transferor memutuskan untuk mentransfer panggilan dengan transferee ke panggilan dengan target transfer.
- transferor memanggil
transfer
API. - transferee memutuskan apakah akan
accept
ataureject
permintaan transfer ke target transfer dengan menggunakan peristiwatransferRequested
. - Target transfer menerima panggilan masuk hanya jika transferee menerima permintaan transfer.
Untuk mentransfer panggilan saat ini, Anda dapat menggunakan transfer
API.
// transfer to the target call specifying the call id
const id = { targetCallId: <CALL_ID> };
// call transfer API
const transfer = callTransferApi.transfer({ targetCallId: <CALL_ID> });
transfer
API memungkinkan Anda berlangganan acara transferStateChanged
dan transferRequested
. Peristiwa transferRequested
berasal dari instans call
; peristiwa transferStateChanged
dan transfer state
dan error
berasal dari instans transfer
.
// transfer state
const transferState = transfer.state; // None | Transferring | Transferred | Failed
// to check the transfer failure reason
const transferError = transfer.error; // transfer error code that describes the failure if a transfer request failed
Penerima transfer dapat menerima atau menolak permintaan transfer yang dimulai oleh penerima transfer dalam peristiwa transferRequested
dengan menggunakan accept()
atau reject()
di transferRequestedEventArgs
. Anda dapat mengakses targetParticipant
informasi dan accept
atau reject
metode di transferRequestedEventArgs
.
// Transferee to accept the transfer request
callTransferApi.on('transferRequested', args => {
args.accept();
});
// Transferee to reject the transfer request
callTransferApi.on('transferRequested', args => {
args.reject();
});
Transferor dapat berlangganan peristiwa untuk perubahan status transfer. Jika panggilan ke transferee berhasil terhubung dengan target Transfer, transferor dapat menutup panggilan asli dengan transferee.
transfer.on('stateChanged', () => {
if (transfer.state === 'Transferred') {
call.hangUp();
}
});