Delen via


Gesprekken doorschakelen

Tijdens een actief gesprek kunt u de oproep doorschakelen naar een andere persoon, nummer of voicemail. Laten we eens leren hoe.

Vereisten

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 createCallAgentaan 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 exemplaar Call Agent wordt verbroken met deze fout.
  • connectionIssue: Als er een probleem is met de client die verbinding maakt met Microsoft infrascture, wordt de connectionIssue fout na veel nieuwe pogingen Call 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:

  1. 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.
  2. De overdrachtsor roept de transfer API aan.
  3. 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:

  1. Er is al een verbonden oproep tussen de overboeker en de overboeking.
  2. Er is al een verbonden oproep tussen de overboeker en het overdrachtsdoel.
  3. De overboeker besluit de oproep over te dragen met de overboeking naar de oproep met een overdrachtsdoel.
  4. De overdrachtsor roept de transfer API aan.
  5. 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:

  1. Er is een verbonden oproep tussen de overboeker en de overboeking.
  2. De Gebruikers-id van Teams van de voicemail van de doeldeelnemer is bekend.
  3. 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.
  4. De overdrachtsor roept de transfer API aan.
  5. 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();
   }
});

Volgende stappen