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
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Eine bereitgestellte Communication Services-Ressource. Erstellen Sie eine Communication Services-Ressource.
- Ein Benutzerzugriffstoken zum Aktivieren des Anrufclients. Weitere Informationen finden Sie unter Erstellen und Verwalten von Zugriffstoken.
- Optional: Durchlaufen Sie den Schnellstart zum Hinzufügen von Sprachanrufen zu Ihrer Anwendung.
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:
- Es besteht bereits eine Anrufverbindung zwischen dem Durchsteller und dem Durchgestellten. Der Durchsteller beschließt, den Anruf vom Durchgestellten an das Durchstellungsziel zu übertragen.
- Der Durchsteller ruft die
transfer
-API auf. - Der Durchgestellte entscheidet bei einem
transferRequested
-Ereignis mithilfe vonaccept
oderreject
, ob er die Durchstellungsanforderung an das Durchstellungsziel annimmt oder ablehnt. - 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:
- Es besteht bereits eine Anrufverbindung zwischen dem Durchsteller und dem Durchgestellten.
- Es besteht bereits eine Anrufverbindung zwischen Durchsteller*innen und dem Durchstellungsziel.
- Die Durchsteller*innen beschließen, den Anruf mit den Durchgestellten an den Anruf mit dem Durchstellungsziel zu übertragen.
- Der Durchsteller ruft die
transfer
-API auf. - Der Durchgestellte entscheidet bei einem
transferRequested
-Ereignis mithilfe vonaccept
oderreject
, ob er die Durchstellungsanforderung an das Durchstellungsziel annimmt oder ablehnt. - 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();
}
});