你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:拨出电话
通过使用通信服务呼叫 SDK 向应用添加 PSTN 呼叫,开启 Azure 通信服务使用旅程。
重要
Azure 通信服务仅支持拨打美国、波多黎各、加拿大、丹麦、英国和澳大利亚的紧急号码。
Azure 通信服务的语音呼叫 (PSTN) 功能可用于拨打美国、波多黎各和加拿大的紧急号码 911,丹麦的紧急号码 112,澳大利亚的紧急号码 000,以及英国的紧急号码 999 和 112。 Azure 通信服务目前不支持从这些国家或地区之外拨打这些紧急号码,也不支持拨打其他国家或地区的紧急服务。
代码示例
在 GitHub 上查找此快速入门的最终代码
注意
可以使用 Azure 通信服务 UI 库访问对电话号码的出站呼叫。 借助 UI 库,开发人员只需几行代码即可将启用了 PSTN 的呼叫客户端添加到其应用程序中。
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 已部署的通信服务资源。 创建通信服务资源。
- 在通信服务资源中获取的电话号码,或所配置的 Azure 通信服务直接路由。 如果拥有免费订阅,则可以获取一个试用电话号码。
- 用于启用呼叫客户端的
User Access Token
。 详细了解如何获取User Access Token
设置
创建新的 Node.js 应用程序
打开终端或命令窗口,为应用创建一个新目录,并导航到该目录。
mkdir calling-quickstart
cd calling-quickstart
运行 npm init -y
以使用默认设置创建 package.json 文件。
npm init -y
安装包
使用 npm install
命令安装适用于 JavaScript 的 Azure 通信服务通话 SDK。
npm install @azure/communication-common --save
npm install @azure/communication-calling --save
--save
选项将该库作为 package.json 文件中的依赖项列出。
设置应用框架
本快速入门使用 Parcel 捆绑应用程序资产。 运行以下命令以安装它,并将其列出为 package.json 中的开发依赖项:
npm install parcel --save-dev
在项目的根目录中创建一个 index.html 文件。 我们将使用此文件来配置基本布局,该布局允许用户拨打电话。
代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Communication Client - Calling Sample</title>
</head>
<body>
<h4>Azure Communication Services</h4>
<h1>Calling Quickstart</h1>
<input
id="callee-phone-input"
type="text"
placeholder="Who would you like to call?"
style="margin-bottom:1em; width: 230px;"
/>
<div>
<button id="call-phone-button" type="button">
Start Call
</button>
<button id="hang-up-phone-button" type="button" disabled="true">
Hang Up
</button>
</div>
<script src="./app.js" type="module"></script>
</body>
</html>
在名为 app.js 的项目的根目录中创建一个文件,以包含此快速入门的应用程序逻辑。 添加以下代码以导入呼叫客户端,并获取对 DOM 元素的引用,以便我们可以附加业务逻辑。
import { CallClient, CallAgent } from "@azure/communication-calling";
import { AzureCommunicationTokenCredential } from '@azure/communication-common';
let call;
let callAgent;
const calleePhoneInput = document.getElementById("callee-phone-input");
const callPhoneButton = document.getElementById("call-phone-button");
const hangUpPhoneButton = document.getElementById("hang-up-phone-button");
async function init() {
const callClient = new CallClient();
const tokenCredential = new AzureCommunicationTokenCredential('<USER ACCESS TOKEN with VoIP scope>');
callAgent = await callClient.createCallAgent(tokenCredential);
//callPhoneButton.disabled = false;
}
init();
发起电话呼叫
指定在通信服务资源中获取的电话号码,该号码将用于发起呼叫:
警告
电话号码应采用 E.164 国际标准格式。 (例如:+12223334444)
添加事件处理程序,以在单击 callPhoneButton
时向你提供的电话号码发起呼叫:
callPhoneButton.addEventListener("click", () => {
// start a call to phone
const phoneToCall = calleePhoneInput.value;
call = callAgent.startCall(
[{phoneNumber: phoneToCall}], { alternateCallerId: {phoneNumber: 'YOUR AZURE REGISTERED PHONE NUMBER HERE: +12223334444'}
});
// toggle button states
hangUpPhoneButton.disabled = false;
callPhoneButton.disabled = true;
});
结束电话呼叫
添加事件侦听器,以便在单击 hangUpPhoneButton
时结束当前呼叫:
hangUpPhoneButton.addEventListener("click", () => {
// end the current call
call.hangUp({
forEveryone: true
});
// toggle button states
hangUpPhoneButton.disabled = true;
callPhoneButton.disabled = false;
});
forEveryone
属性结束所有呼叫参与者的呼叫。
运行代码
使用命令 npx parcel index.html
生成并运行应用。
打开浏览器并导航到 http://localhost:1234/
。 你应该会看到以下 Web 应用程序:
可以通过在添加的文本字段中提供电话号码,然后单击“发起电话呼叫”按钮来呼叫真实电话号码。
重要
Azure 通信服务仅支持拨打美国、波多黎各、加拿大、丹麦、英国和澳大利亚的紧急号码。
Azure 通信服务的语音呼叫 (PSTN) 功能可用于拨打美国、波多黎各和加拿大的紧急号码 911,丹麦的紧急号码 112,澳大利亚的紧急号码 000,以及英国的紧急号码 999 和 112。 Azure 通信服务目前不支持从这些国家或地区之外拨打这些紧急号码,也不支持拨打其他国家或地区的紧急服务。
代码示例
在 GitHub 上查找此快速入门的最终代码
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 已部署的通信服务资源。 创建通信服务资源。
- 在通信服务资源中获取的电话号码,或所配置的 Azure 通信服务直接路由。 如果拥有免费订阅,则可以获取一个试用电话号码。
- 用于启用呼叫客户端的
User Access Token
。 详细了解如何获取User Access Token
- 完成开始向应用程序添加呼叫快速入门
先决条件检查
- 若要查看与通信服务资源关联的电话号码,请登录到 Azure 门户,找到通信服务资源,然后从左侧导航窗格中打开“电话号码”选项卡。
设置
向应用添加 PSTN 功能
通过修改 MainActivity.java,将 PhoneNumber
类型添加到应用中:
import com.azure.android.communication.common.PhoneNumberIdentifier;
发起电话呼叫
指定从通信服务资源中获取的电话号码。 此号码将用作呼叫方 ID 来发起呼叫:
警告
请注意,电话号码应采用 E.164 国际标准格式。 (例如:+12223334444)
修改 MainActivity.java 中的 startCall()
事件处理程序,使其处理电话呼叫:
private void startCall() {
EditText calleePhoneView = findViewById(R.id.callee_id);
String calleePhone = calleePhoneView.getText().toString();
PhoneNumberIdentifier callerPhone = new PhoneNumberIdentifier("+12223334444");
StartCallOptions options = new StartCallOptions();
options.setAlternateCallerId(callerPhone);
options.setVideoOptions(new VideoOptions(null));
call = agent.startCall(
getApplicationContext(),
new PhoneNumberIdentifier[] {new PhoneNumberIdentifier(calleePhone)},
options);
}
启动应用并呼叫回显机器人
现在可以使用工具栏上的“运行应用”按钮 (Shift+F10) 启动应用。 若要进行呼叫,请在添加的文本字段中提供电话号码,然后选择“呼叫”按钮。
警告
请注意,电话号码应采用 E.164 国际标准格式。 (例如:+12223334444)
重要
Azure 通信服务仅支持拨打美国、波多黎各、加拿大、丹麦、英国和澳大利亚的紧急号码。
Azure 通信服务的语音呼叫 (PSTN) 功能可用于拨打美国、波多黎各和加拿大的紧急号码 911,丹麦的紧急号码 112,澳大利亚的紧急号码 000,以及英国的紧急号码 999 和 112。 Azure 通信服务目前不支持从这些国家或地区之外拨打这些紧急号码,也不支持拨打其他国家或地区的紧急服务。
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 已部署的通信服务资源。 创建通信服务资源。
- 在通信服务资源中获取的电话号码,或所配置的 Azure 通信服务直接路由。 如果拥有免费订阅,则可以获取一个试用电话号码。
- 用于启用呼叫客户端的
User Access Token
。 详细了解如何获取User Access Token
- 完成开始向应用程序添加呼叫快速入门
先决条件检查
- 若要查看与通信服务资源关联的电话号码,请登录到 Azure 门户,找到通信服务资源,然后从左侧导航窗格中打开“电话号码”选项卡。
- 你可以通过适用于 iOS 的 Azure 通信服务通话 SDK 来生成和运行应用:
设置
发起电话呼叫
指定在通信服务资源中获取的电话号码,该号码将用于发起呼叫:
警告
请注意,电话号码应采用 E.164 国际标准格式。 (例如:+12223334444)
修改点击“开始呼叫”按钮时执行的 startCall
事件处理程序:
func startCall() {
// Ask permissions
AVAudioSession.sharedInstance().requestRecordPermission { (granted) in
if granted {
let startCallOptions = StartCallOptions()
startCallOptions.alternateCallerId = PhoneNumberIdentifier(phoneNumber: "<YOUR AZURE REGISTERED PHONE NUMBER>")
self.callAgent!.startCall(participants: [PhoneNumberIdentifier(phoneNumber: self.callee)], options: startCallOptions) { (call, error) in
if (error == nil) {
self.call = call
} else {
print("Failed to get call object")
}
}
}
}
}
运行代码
可以通过选择“产品”>“运行”或使用 (⌘-R) 键盘快捷方式,在 iOS 模拟器上生成并运行应用。
你可以通过在添加的文本字段中提供电话号码,然后单击“开始呼叫”按钮来拨打电话。
警告
请注意,电话号码应采用 E.164 国际标准格式。 (例如:+12223334444)
注意
首次发出呼叫时,系统将提示你提供麦克风访问权限。 在生产应用程序中,应使用 AVAudioSession
API 检查权限状态,并在未授予权限时正常更新应用程序的行为。
清理资源
如果想要清理并删除通信服务订阅,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。 了解有关清理资源的详细信息。
后续步骤
有关详细信息,请参阅以下文章: