Hívások átvitele
Aktív hívás során előfordulhat, hogy át szeretné vinni a hívást egy másik személynek, számnak vagy hangpostának. Tanuljuk meg, hogyan.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Üzembe helyezett Communication Services-erőforrás. Hozzon létre egy Communication Services-erőforrást.
- Felhasználói hozzáférési jogkivonat a hívó ügyfél engedélyezéséhez. További információ: Hozzáférési jogkivonatok létrehozása és kezelése.
- Nem kötelező: Végezze el a rövid útmutatót a hanghívás alkalmazáshoz való hozzáadásához
Telepítse a SDK-t
npm install
A parancs használatával telepítse az Azure Communication Services Common and Calling SDK for JavaScriptet:
npm install @azure/communication-common --save
npm install @azure/communication-calling --save
Szükséges objektumok inicializálása
A CallClient
legtöbb hívási művelethez szükség van egy példányra. Új CallClient
példány létrehozásakor konfigurálhatja egyéni beállításokkal, például egy példánysal Logger
.
CallClient
A példánnyal létrehozhat egy példányt CallAgent
a createCallAgent
. Ez a metódus aszinkron módon egy CallAgent
példányobjektumot ad vissza.
A createCallAgent
metódus argumentumként használható CommunicationTokenCredential
. Elfogad egy felhasználói hozzáférési jogkivonatot.
A példányon található getDeviceManager
metódust használhatja a CallClient
hozzáféréshez 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()
A Microsoft-infrastruktúra SDK-kapcsolatának legjobb kezelése
A Call Agent
példány segít a hívások kezelésében (a hívásokhoz való csatlakozáshoz vagy a hívások indításához). A hívó SDK működéséhez csatlakoznia kell a Microsoft infrastruktúrájához, hogy értesítést kapjon a bejövő hívásokról, és koordinálja az egyéb hívásadatokat. Két Call Agent
lehetséges állapota van:
Csatlakoztatott – A Call Agent
connectionStatue érték azt Connected
jelenti, hogy az ügyfél SDK csatlakoztatva van, és képes értesítéseket fogadni a Microsoft-infrastruktúrából.
Leválasztva – Az Call Agent
állapotok connectionStatue értéke Disconnected
olyan probléma, amely miatt az SDK nem tud megfelelően csatlakozni. Call Agent
újra létre kell hozni.
invalidToken
: Ha egy jogkivonat lejárt, vagy érvénytelenCall Agent
, a példány ezzel a hibával megszakad.connectionIssue
: Ha probléma merül fel azzal kapcsolatban, hogy az ügyfél csatlakozik a Microsoft-infrastruktúrához, miután sok újrapróbálkozásCall Agent
felfedi aconnectionIssue
hibát.
A tulajdonság aktuális értékének connectionState
vizsgálatával ellenőrizheti, hogy a helyi Call Agent
csatlakozik-e a Microsoft-infrastruktúrához. Egy aktív hívás során meghallgathatja az connectionStateChanged
eseményt, és megállapíthatja, hogy a kapcsolat megszakadt állapotban van-e.Call Agent
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);
A hívásátvitel az alapvető Call
API kiterjesztett funkciója. Először importálnia kell a hívási funkciókat a Hívó SDK-ból:
import { Features} from "@azure/communication-calling";
Ezután lekérheti az átviteli funkció API-objektumát a híváspéldányból:
const callTransferApi = call.feature(Features.Transfer);
A hívásátadás három fél bevonásával történik:
- Átadó: Az a személy, aki kezdeményezi az átadási kérelmet.
- Átvevő: Az átvitt személy.
- Átviteli cél: Az a személy, akinek átviszik.
Átvitel a résztvevőnek:
- Már van egy csatlakoztatott hívás az átadó és az átvevő között. Az átvevő úgy dönt, hogy a hívást az átvevőtől az átadási célhoz továbbítja.
- Az átadó meghívja az API-t
transfer
. - Az átviteli cél csak akkor fogad bejövő hívást, ha a címzett elfogadja az átadási kérelmet.
Az aktuális hívás átviteléhez használhatja az transfer
API-t. transfer
a választható transferCallOptions
értéket veszi fel, amely lehetővé teszi a jelölő beállítását disableForwardingAndUnanswered
:
disableForwardingAndUnanswered = false
: Ha az átviteli cél nem fogadja az átadási hívást, az átvitel az átviteli cél továbbítási és megválaszolatlan beállításait követi.disableForwardingAndUnanswered = true
: Ha az átviteli cél nem fogadja az átadási hívást, az átviteli kísérlet véget ér.
// transfer target can be an Azure Communication Services user
const id = { communicationUserId: <ACS_USER_ID> };
// call transfer API
const transfer = callTransferApi.transfer({targetParticipant: id});
Átvitel hívásra:
- Már van egy csatlakoztatott hívás az átadó és az átvevő között.
- Már van csatlakoztatott hívás az átadó és az átviteli cél között.
- Az átvevő úgy dönt, hogy a hívást átviszi az átvevővel az átadási céllal rendelkező hívásra.
- Az átadó meghívja az API-t
transfer
. - Az átviteli cél csak akkor fogad bejövő hívást, ha a címzett elfogadja az átadási kérelmet.
Az aktuális hívás átviteléhez használhatja az transfer
API-t.
// transfer to the target call specifying the call id
const id = { targetCallId: <CALL_ID> };
// call transfer API
const transfer = callTransferApi.transfer({ targetCallId: <CALL_ID> });
Az transfer
API-val feliratkozhat a következőre stateChanged
: . Emellett átadással state
és error
tulajdonságokkal is rendelkezik
// 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
Az átvevő meghallgathat egy eseményt transferAccepted
. Az esemény figyelője rendelkezik egy TransferEventArgs
olyan figyelővel, amely tartalmazza az új átviteli hívás hívásobjektumát a címzett és az átviteli cél között.
// Transferee can subscribe to the transferAccepted event
callTransferApi.on('transferAccepted', args => {
const newTransferCall = args.targetCall;
});
Az átadó előfizethet az eseményekre az átvitel állapotának módosításához. Ha az átvevő hívása sikeresen kapcsolódott az átadási célhoz, az átvevő lekötheti az eredeti hívást az átvevővel.
transfer.on('stateChanged', () => {
if (transfer.state === 'Transferred') {
call.hangUp();
}
});
Átvitel hangpostára:
- Már van egy csatlakoztatott hívás az átadó és az átvevő között.
- A cél résztvevő hangpostaüzenetének Teams-felhasználói azonosítója ismert.
- Az átvevő úgy dönt, hogy a hívást a címzettel a hangposta-azonosítóval ellátott hangpostára továbbítja.
- Az átadó meghívja az API-t
transfer
. - Az átvevő megkapja az átadási kérelmet.
Az aktuális hívás átviteléhez használhatja az transfer
API-t.
// transfer to the target call specifying the call id
const id = { targetParticipantVoicemail: <TEAMS_USER_ID> };
// call transfer API
const transfer = callTransferApi.transfer({ target: id });
Az transfer
API-val feliratkozhat a következőre stateChanged
: . Emellett átadással state
és error
tulajdonságokkal is rendelkezik
// 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
Az átvevő meghallgathat egy eseményt transferAccepted
. Az esemény figyelője rendelkezik egy TransferEventArgs
olyan figyelővel, amely tartalmazza az új átviteli hívás hívásobjektumát a címzett és a cél résztvevő hangpostája között.
// Transferee can subscribe to the transferAccepted event
callTransferApi.on('transferAccepted', args => {
const newTransferCall = args.targetCall;
});
Az átadó előfizethet az eseményekre az átvitel állapotának módosításához. Ha a címzett hívása sikeresen kapcsolódott a cél résztvevő hangpostához, az átvevő lekötheti az eredeti hívást a címzettel.
transfer.on('stateChanged', () => {
if (transfer.state === 'Transferred') {
call.hangUp();
}
});
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: