Gesprekken doorschakelen
Tijdens een actief gesprek kunt u de oproep doorschakelen naar een andere persoon, nummer of voicemail. Laten we eens leren hoe.
Vereisten
- Een Azure-account met een actief abonnement. Gratis een account maken
- Een geïmplementeerde Communication Services-resource. Een Communication Services-resource maken.
- Een gebruikerstoegangstoken om de aanroepende client in te schakelen. Zie Toegangstokens maken en beheren voor meer informatie.
- Optioneel: Voltooi de quickstart om spraakgesprekken toe te voegen aan uw toepassing
Installeer de SDK
Gebruik de npm install
opdracht om de Common and Calling SDK voor Azure Communication Services voor JavaScript te installeren:
npm install @azure/communication-common --save
npm install @azure/communication-calling --save
Vereiste objecten initialiseren
Een CallClient
exemplaar is vereist voor de meeste aanroepbewerkingen. Wanneer u een nieuw CallClient
exemplaar maakt, kunt u deze configureren met aangepaste opties, zoals een Logger
exemplaar.
Met het CallClient
exemplaar kunt u een CallAgent
exemplaar maken door het createCallAgent
aan te roepen. Deze methode retourneert asynchroon een CallAgent
exemplaarobject.
De createCallAgent
methode gebruikt CommunicationTokenCredential
als argument. Het accepteert een toegangstoken van een gebruiker.
U kunt de getDeviceManager
methode op het CallClient
exemplaar gebruiken om toegang te krijgen tot 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()
Sdk-connectiviteit met Microsoft-infrastructuur het beste beheren
Het Call Agent
exemplaar helpt u bij het beheren van gesprekken (om aanroepen deel te nemen of te starten). Als u wilt werken met uw aanroepende SDK, moet u verbinding maken met de Microsoft-infrastructuur om meldingen van binnenkomende oproepen te ontvangen en andere gespreksgegevens te coördineren. Uw Call Agent
heeft twee mogelijke statussen:
Verbonden : een Call Agent
connectionStatue-waarde van Connected
het middel dat de client-SDK is verbonden en meldingen van de Microsoft-infrastructuur kan ontvangen.
Verbinding verbroken - Een Call Agent
connectionStatue-waarde van Disconnected
statussen is er een probleem dat verhindert dat de SDK verbinding maakt. Call Agent
moet opnieuw worden gemaakt.
invalidToken
: Als een token is verlopen of een ongeldig exemplaarCall Agent
wordt verbroken met deze fout.connectionIssue
: Als er een probleem is met de client die verbinding maakt met Microsoft infrascture, wordt deconnectionIssue
fout na veel nieuwe pogingenCall Agent
weergegeven.
U kunt controleren of uw lokale Call Agent
verbinding heeft met de Microsoft-infrastructuur door de huidige waarde van connectionState
de eigenschap te controleren. Tijdens een actieve oproep kunt u naar de connectionStateChanged
gebeurtenis luisteren om te bepalen of Call Agent
de status Verbonden naar Verbroken is gewijzigd.
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);
Oproepoverdracht is een uitgebreide functie van de kern-API Call
. U moet eerst aanroepende functies importeren uit de Calling SDK:
import { Features} from "@azure/communication-calling";
Vervolgens kunt u het API-object voor de overdrachtsfunctie ophalen uit het aanroepexemplaren:
const callTransferApi = call.feature(Features.Transfer);
Oproepoverdrachten omvatten drie partijen:
- Overboeking: de persoon die de overdrachtsaanvraag initieert.
- Overboeking: De persoon die wordt overgedragen.
- Overdrachtsdoel: de persoon aan wie wordt overgedragen.
Overdragen aan deelnemer:
- Er is al een verbonden oproep tussen de overboeker en de overboeking. De overboeker besluit de oproep van de overboeking over te dragen naar het overdrachtsdoel.
- De overdrachtsor roept de
transfer
API aan. - Het overdrachtsdoel ontvangt alleen een inkomende oproep als de overboekingsaanvraag accepteert.
Als u een huidige aanroep wilt overdragen, kunt u de transfer
API gebruiken. transfer
neemt de optionele transferCallOptions
, waarmee u een disableForwardingAndUnanswered
vlag kunt instellen:
disableForwardingAndUnanswered = false
: Als het overdrachtsdoel de overdrachtsoproep niet beantwoordt, volgt de overdracht de doorsturen van het doel en onbeantwoorde instellingen.disableForwardingAndUnanswered = true
: Als het overdrachtsdoel de overdrachtsoproep niet beantwoordt, eindigt de overdrachtspoging.
// transfer target can be an Azure Communication Services user
const id = { communicationUserId: <ACS_USER_ID> };
// call transfer API
const transfer = callTransferApi.transfer({targetParticipant: id});
Doorschakelen naar gesprek:
- Er is al een verbonden oproep tussen de overboeker en de overboeking.
- Er is al een verbonden oproep tussen de overboeker en het overdrachtsdoel.
- De overboeker besluit de oproep over te dragen met de overboeking naar de oproep met een overdrachtsdoel.
- De overdrachtsor roept de
transfer
API aan. - Het overdrachtsdoel ontvangt alleen een inkomende oproep als de overboekingsaanvraag accepteert.
Als u een huidige aanroep wilt overdragen, kunt u de transfer
API gebruiken.
// transfer to the target call specifying the call id
const id = { targetCallId: <CALL_ID> };
// call transfer API
const transfer = callTransferApi.transfer({ targetCallId: <CALL_ID> });
Met de transfer
API kunt u zich abonneren op stateChanged
. Het wordt ook geleverd met een overdracht state
en error
eigenschappen
// 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
De overboeking kan luisteren naar een transferAccepted
gebeurtenis. De listener voor deze gebeurtenis bevat TransferEventArgs
het aanroepobject van de nieuwe overdrachtsaanroep tussen de overboeking en het overdrachtsdoel.
// Transferee can subscribe to the transferAccepted event
callTransferApi.on('transferAccepted', args => {
const newTransferCall = args.targetCall;
});
De overdrachtsor kan zich abonneren op gebeurtenissen om de status van de overdracht te wijzigen. Als de aanroep naar de overboeking is verbonden met het overdrachtsdoel, kan de overboeker de oorspronkelijke oproep met doorgeschakelde ophangen.
transfer.on('stateChanged', () => {
if (transfer.state === 'Transferred') {
call.hangUp();
}
});
Doorschakelen naar voicemail:
- Er is een verbonden oproep tussen de overboeker en de overboeking.
- De Gebruikers-id van Teams van de voicemail van de doeldeelnemer is bekend.
- De overnemer besluit de oproep door te zetten met de overnemer naar de voicemail van de doeldeelnemer met behulp van de Gebruikers-id van de doeldeelnemer.
- De overdrachtsor roept de
transfer
API aan. - De overboeking ontvangt de overdrachtsaanvraag.
Als u een huidige aanroep wilt overdragen, kunt u de transfer
API gebruiken.
// transfer to the target participant voicemail specified by their Teams User Identifier
const id: MicrosoftTeamsUserIdentifier = { microsoftTeamsUserId: userId}
// call transfer API
const transfer = callTransferApi.transfer({ targetParticipantVoicemail: id });
Met de transfer
API kunt u zich abonneren op stateChanged
. Het wordt ook geleverd met een overdracht state
en error
eigenschappen
// 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
De overboeking kan luisteren naar een transferAccepted
gebeurtenis. De listener voor deze gebeurtenis bevat TransferEventArgs
het oproepobject van de nieuwe overdrachtsoproep tussen de doorverbinden en de voicemail van de doeldeelnemer.
// Transferee can subscribe to the transferAccepted event
callTransferApi.on('transferAccepted', args => {
const newTransferCall = args.targetCall;
});
De overdrachtsor kan zich abonneren op gebeurtenissen om de status van de overdracht te wijzigen. Als de oproep naar de overnemer is verbonden met de voicemail van de doeldeelnemer, kan de overnemer de oorspronkelijke oproep met de overboeking ophangen.
transfer.on('stateChanged', () => {
if (transfer.state === 'Transferred') {
call.hangUp();
}
});