Durchstellen von Anrufen

Wichtig

Die in diesem Dokument beschriebenen Funktionen befinden sich derzeit in der öffentlichen Vorschauphase. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Während eines aktiven Anrufs können Sie den Anruf an eine andere Person oder Nummer durchstellen. Hier erfahren Sie, wie Sie dazu vorgehen.

Voraussetzungen

Installieren des SDK

Verwenden Sie den Befehl npm install, um das Azure Communication Services Calling SDK sowie allgemeine SDKs für JavaScript zu installieren.

npm install @azure/communication-common --save
npm install @azure/communication-calling --save

Initialisieren erforderlicher Objekte

Eine CallClient-Instanz ist für die meisten Anrufvorgänge erforderlich. Lassen Sie uns eine neue CallClient-Instanz erstellen. Sie können sie mit benutzerdefinierten Optionen wie eine Protokollierungsinstanz konfigurieren.

Wenn Sie eine CallClient-Instanz verwenden, können Sie eine CallAgent-Instanz erstellen, indem Sie die Methode createCallAgent für die CallClient-Instanz aufrufen. Durch diese Methode wird ein CallAgent-Instanzobjekt asynchron zurückgegeben.

Die Methode createCallAgent verwendet CommunicationTokenCredential als Argument, welches ein Benutzerzugriffstoken akzeptiert.

Sie können die Methode getDeviceManager für die Instanz CallClient verwenden, um auf deviceManager zuzugreifen.

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()

Hinweis

Diese API wird als Vorschau für Entwickler bereitgestellt. Je nachdem, welches Feedback wir dazu erhalten, werden möglicherweise Änderungen vorgenommen. Verwenden Sie diese API nicht in einer Produktionsumgebung. Verwenden Sie zum Verwenden dieser API die Betaversion des Azure Communication Services Calling Web SDK.

Die Anrufdurchstellung ist ein erweitertes Feature der zentralen Call-API. Sie müssen zunächst aufrufende Features aus dem aufrufenden SDK importieren:

import { Features} from "@azure/communication-calling";

Anschließend können Sie das API-Objekt für das Übertragungsfeature aus der Aufrufinstanz abrufen:

const callTransferApi = call.feature(Features.Transfer);

Am Durchstellen von Anrufen sind drei Parteien beteiligt:

  • Durchsteller: die Person, die die Durchstellungsanforderung auslöst.
  • Durchgestellter: die Person, deren Anruf durchgestellt wird.
  • Durchstellungsziel: die Person, an die der Anruf durchgestellt wird.

Übertragung an Teilnehmer*in:

  1. Es besteht bereits eine Anrufverbindung zwischen dem Durchsteller und dem Durchgestellten. Der Durchsteller beschließt, den Anruf vom Durchgestellten an das Durchstellungsziel zu übertragen.
  2. Der Durchsteller ruft die transfer-API auf.
  3. Der Durchgestellte entscheidet bei einem transferRequested-Ereignis mithilfe von accept oder reject, ob er die Durchstellungsanforderung an das Durchstellungsziel annimmt oder ablehnt.
  4. Das Durchstellungsziel empfängt nur dann einen eingehenden Anruf, wenn der Durchgestellte die Durchstellungsanforderung akzeptiert.

Zum Durchstellen eines aktuellen Anrufs können Sie die transfer-API verwenden. transfer verwendet die optionalen transferCallOptions, mit denen Sie ein Flag disableForwardingAndUnanswered festlegen können:

  • disableForwardingAndUnanswered = false: Wenn das Durchstellungsziel den durchgestellten Anruf nicht annimmt, werden die Einstellungen für Weiterleitung und Nichtannahme des Durchstellungsziels befolgt.
  • disableForwardingAndUnanswered = true: Wenn das Durchstellungsziel den durchgestellten Anruf nicht annimmt, wird der Durchstellungsversuch beendet.
// transfer target can be an Azure Communication Services user
const id = { communicationUserId: <ACS_USER_ID> };
// call transfer API
const transfer = callTransferApi.transfer({targetParticipant: id});

Übertragung an Anruf:

  1. Es besteht bereits eine Anrufverbindung zwischen dem Durchsteller und dem Durchgestellten.
  2. Es besteht bereits eine Anrufverbindung zwischen Durchsteller*innen und dem Durchstellungsziel.
  3. Die Durchsteller*innen beschließen, den Anruf mit den Durchgestellten an den Anruf mit dem Durchstellungsziel zu übertragen.
  4. Der Durchsteller ruft die transfer-API auf.
  5. Der Durchgestellte entscheidet bei einem transferRequested-Ereignis mithilfe von accept oder reject, ob er die Durchstellungsanforderung an das Durchstellungsziel annimmt oder ablehnt.
  6. Das Durchstellungsziel empfängt nur dann einen eingehenden Anruf, wenn der Durchgestellte die Durchstellungsanforderung akzeptiert.

Zum Durchstellen eines aktuellen Anrufs können Sie die transfer-API verwenden.

// transfer to the target call specifying the call id
const id = { targetCallId: <CALL_ID> };
// call transfer API
const transfer = callTransferApi.transfer({ targetCallId: <CALL_ID> });

Die transferRequested-API erlaubt Ihnen das Abonnieren der Ereignisse transfer und transferStateChanged. Ein transferRequested-Ereignis stammt aus einer call-Instanz. Ein transferStateChanged-Ereignis sowie state und error des Durchstellungsvorgangs stammen aus einer transfer-Instanz.

// 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

Der Durchgestellte kann die vom Durchsteller ausgelöste Durchstellungsanforderung im Ereignis transferRequested über accept() oder reject() in transferRequestedEventArgs annehmen oder ablehnen. Sie können auf targetParticipant-Informationen und auf die Methoden accept und reject in transferRequestedEventArgs zugreifen.

// Transferee to accept the transfer request
callTransferApi.on('transferRequested', args => {
    args.accept();
});

// Transferee to reject the transfer request
callTransferApi.on('transferRequested', args => {
    args.reject();
});

Die Durchsteller*innen können Ereignisse abonnieren, um den Status der Übertragung zu ändern. Wenn der Anruf an die Durchgestellten erfolgreich mit dem Übertragungsziel verbunden wurde, können die Durchsteller*innen den ursprünglichen Anruf mit den Durchgestellten beenden.

transfer.on('stateChanged', () => {
   if (transfer.state === 'Transferred') {
       call.hangUp();
   }
});

Nächste Schritte