你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 JavaScript 的 Azure 通信呼叫自动化客户端库 - 版本 1.2.0

此包包含适用于 Azure 通信呼叫自动化的 JavaScript SDK。 呼叫自动化使开发人员能够构建基于服务器的智能呼叫工作流,以及语音和 PSTN 通道的呼叫录制。

呼叫自动化 | 概述产品文档

入门

先决条件

安装

npm install @azure/communication-call-automation

浏览器支持

JavaScript 捆绑包

若要在浏览器中使用此客户端库,首先需要使用捆绑程序。 有关如何执行此操作的详细信息,请参阅捆绑 文档

关键概念

名称 说明
CallAutomationClient CallAutomationClient 是使用此客户端库的开发人员的主要接口。 它可用于通过 createCallanswerCall发起调用。
CallConnection CallConnection 表示正在进行的调用。 使用 createCallanswerCall建立调用后,可以对调用执行进一步的操作,例如 transferaddParticipant
CallMedia CallMedia 可用于执行与媒体相关的操作,例如 play,以播放媒体文件。 这可以从已建立 CallConnection的 中检索。
CallRecording CallRecording 可用于记录相关操作,例如 startRecording。 这可以从 中检索 CallAutomationClient
回调事件 回调事件是在调用期间发送回的事件。 它提供调用的信息和状态,例如 CallConnectedCallbackUrl必须在 和 answerCall期间createCall提供 ,并且回调事件将发送到此 URL。 可以使用 callAutomationEventParser 在事件到达时分析这些事件。
传入呼叫事件 当传入呼叫发生 (可以使用) 应答 answerCall 时,将发送传入呼叫 eventgrid 事件。 这与上述回调事件不同,应在Azure 门户上进行设置。 有关详细信息 ,请参阅传入呼叫
CallAutomationEventProcessor CallAutomationEventProcessor 是处理中间调用回调事件的一种方便方法,例如 CallConnected。 这可以更轻松地确保调用和事件之间的关联。 请参阅以下示例,了解其用法。

示例

初始化 CallAutomationClient

import { CallAutomationClient } from '@azure/communication-call-automation';
import { DefaultAzureCredential } from "@azure/identity"; 

// Your unique Azure Communication service endpoint
const credential = new DefaultAzureCredential(); 
const endpointUrl = '<ENDPOINT>' 
const callAutomationClient = new CallAutomationClient(endpointUrl, credential); 

Create呼叫

import { CommunicationUserIdentifier } from "@azure/communication-common";
import { CallAutomationClient, CallInvite } from '@azure/communication-call-automation';

// target endpoint for ACS User
const target: CommunicationUserIdentifier = {
  communicationUserId:
    "8:acs:...",
}

// make invitation
const callInvite: CallInvite = {
   targetParticipant:target
};

// callback url to recieve callback events
const callbackUrl = "https://<MY-EVENT-HANDLER-URL>/events";

// send out the invitation, creating call
const response = callAutomationClient.createCall(callInvite, callbackUrl);

播放媒体

// from callconnection of response above, play media of media file
const myFile: FileSource = { uri: "https://<FILE-SOURCE>/<SOME-FILE>.wav" }
const response = callConnection.getCallMedia().playToAll(myFile);

处理 Mid-Connection 回调事件

为了轻松处理中间连接事件,调用自动化的 SDK 提供了处理这些事件的更简单方法。 查看 CallAutomationEventProcessor。 这可以更轻松地确保调用和事件之间的关联。

const eventProcessor: CallAutomationEventProcessor = await callAutomationClient.getEventProcessor();
eventProcessor.processEvents(incomingEvent);

EventProcessor 需要 ProcessEvents 才能正常工作。 EventProcessor 使用事件后,可以开始使用其功能。

请参阅以下示例:使用 CreateCall 进行呼叫,并等待呼叫的 CallConnected 事件。

// send out the invitation, creating call
const callInvite = new CallInvite(target);
const callbackUrl = "https://<MY-EVENT-HANDLER-URL>/events";
const callResult = callAutomationClient.createCall(callInvite, callbackUrl);

// giving 30 seconds timeout for waiting on createCall's event, 'CallConnected'
const createCallEventResult : CreateCallEventResult = await callResult.waitForEventProcessor(undefined, 30000);
// once this returns, call is now established!

// check if it was successful
if (createCallEventResult.isSuccess)
{
  // work with callConnected event
  const callConnectedEvent : CallConnected = createCallEventResult.successResult!;
}

故障排除

后续步骤

贡献

若要为此库做出贡献,请阅读贡献指南,详细了解如何生成和测试代码。