你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 JavaScript 的 Azure 通信电话号码客户端库 - 版本 1.0.0
电话号码库提供电话号码管理功能。
购买的电话号码可以附带许多功能,具体取决于国家/地区、号码类型和分配类型。 功能示例包括短信入站和出站用法、PSTN 入站和出站用法。 电话号码也可以通过 Webhook URL 分配给机器人。
入门
先决条件
- 一个 Azure 订阅。
- 现有的通信服务资源。 如果需要创建资源,可以使用 Azure 门户、Azure PowerShell 或 Azure CLI。
安装
npm install @azure/communication-phone-numbers
浏览器支持
JavaScript 捆绑包
若要在浏览器中使用此客户端库,首先需要使用捆绑程序。 有关如何执行此操作的详细信息,请参阅捆绑 文档。
关键概念
电话号码包公开 , PhoneNumbersClient
它提供管理电话号码的方法。
电话号码类型
电话号码有两种类型:地理和免费电话。 地理电话号码是与某个位置关联的电话号码,其区号与地理位置的区号相关联。 Toll-Free电话号码不与某个位置关联。 例如,在美国,免费号码可以附带区号,如 800 或 888。
同一国家/地区中的所有地理电话号码都分组到具有“地理电话号码”类型的电话套餐组中。 同一国家/地区中的所有Toll-Free电话号码都分组到一个电话计划组中。
搜索和获取数字
可以通过搜索创建 API 搜索电话号码,方法是提供电话号码类型 (地理或免费) 、分配类型 (人员或应用程序) 、呼叫和短信功能、区号和电话号码数量。 提供的电话号码数量将保留 15 分钟。 此电话号码搜索可以取消或购买。 如果取消搜索,则其他人可以使用电话号码。 如果搜索已购买,则会获取 Azure 资源的电话号码。
配置电话号码
电话号码可以具有多种功能的组合。 可以将其配置为支持入站和/或出站呼叫;如果不使用电话号码进行呼叫,则两者均不支持。 这同样适用于短信功能。
请务必考虑电话号码的分配类型。 某些功能仅限于特定分配类型。
示例
身份验证
若要创建客户端对象来访问通信服务 API,需要 connection string
通信服务资源的 或 endpoint
和 credential
。 电话号码客户端可以使用 Azure Active Directory 凭据或 API 密钥凭据进行身份验证。
可以从 Azure 门户中的通信服务资源获取密钥和/或连接字符串。 还可以在 Azure 门户中找到通信服务资源的终结点。
获得密钥后,可以使用以下任一方法对 进行身份验证 PhoneNumbersClient
:
使用连接字符串
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const connectionString = "endpoint=<endpoint>;accessKey=<accessKey>";
const client = new PhoneNumbersClient(connectionString);
将访问密钥与 AzureKeyCredential
如果使用密钥初始化客户端,则还需要提供相应的终结点。 可以从 Azure 门户中的通信服务资源获取此终结点。 获得密钥和终结点后,可以使用以下代码进行身份验证:
import { AzureKeyCredential } from "@azure/core-auth";
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const credential = new AzureKeyCredential("<key-from-resource>");
const client = new PhoneNumbersClient("<endpoint-from-resource>", credential);
使用 Azure Active Directory 凭据
大多数示例都使用连接字符串身份验证,但也可以使用 Azure 标识库通过 Azure Active Directory 进行身份验证。 若要使用如下所示的 DefaultAzureCredential 提供程序或 Azure SDK 提供的其他凭据提供程序,请安装包 @azure/identity
:
npm install @azure/identity
该 @azure/identity
包提供了应用程序可用于执行此操作的各种凭据类型。 的 自述文件 @azure/identity
提供了更多详细信息和示例来帮助你入门。
import { DefaultAzureCredential } from "@azure/identity";
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
let credential = new DefaultAzureCredential();
const client = new PhoneNumbersClient("<endpoint-from-resource>", credential);
使用情况
以下部分提供代码片段,这些代码片段涵盖使用 Azure 通信服务 电话号码客户端的一些常见任务。 此处介绍的方案包括:
搜索可用的电话号码
beginSearchAvailablePhoneNumbers
使用 方法搜索并保留电话号码。 返回的电话号码保留 15 分钟,在此期间可以通过向 方法提供 searchId
beginPurchasePhoneNumbers
来购买。
beginSearchAvailablePhoneNumbers
是一个长时间运行的操作,并返回一个轮询器。
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const connectionString = "endpoint=<endpoint>;accessKey=<accessKey>";
const client = new PhoneNumbersClient(connectionString);
async function main() {
const searchRequest = {
countryCode: "US",
phoneNumberType: "tollFree",
assignmentType: "application",
capabilities: {
sms: "outbound",
calling: "none"
},
quantity: 1
};
const searchPoller = await client.beginSearchAvailablePhoneNumbers(searchRequest);
// The search is underway. Wait to receive searchId.
const searchResults = searchPoller.pollUntilDone();
console.log(`Found phone number: ${searchResults.phoneNumbers[0]}`);
console.log(`searchId: ${searchResults.searchId}`);
}
main();
从搜索购买电话号码
beginPurchasePhoneNumbers
使用 方法从搜索中购买电话号码。 购买的电话号码将分配给启动客户端时使用的通信服务资源。
searchId
从 beginSearchAvailablePhoneNumbers
返回的 是必需的。
beginPurchasePhoneNumbers
是一个长时间运行的操作,并返回一个轮询器。
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const connectionString = "endpoint=<endpoint>;accessKey=<accessKey>";
const client = new PhoneNumbersClient(connectionString);
async function main() {
const searchRequest = {
countryCode: "US",
phoneNumberType: "tollFree",
assignmentType: "application",
capabilities: {
sms: "outbound",
calling: "none"
},
quantity: 1
};
const searchPoller = await client.beginSearchAvailablePhoneNumbers(searchRequest);
// The search is underway. Wait to receive searchId.
const { searchId, phoneNumbers } = searchPoller.pollUntilDone();
const purchasePoller = await client.beginPurchasePhoneNumbers(searchId);
// Purchase is underway.
await purchasePoller.pollUntilDone();
console.log(`Successfully purchased ${phoneNumbers[0]}`);
}
main();
释放购买的电话号码
beginReleasePhoneNumber
使用 方法释放以前购买的电话号码。 已发布的电话号码将不再与通信服务资源相关联,并且不能用于其他操作 (例如。资源的短信) 。 需要释放的电话号码。
beginReleasePhoneNumber
是一个长时间运行的操作,并返回一个轮询器。
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const connectionString = "endpoint=<endpoint>;accessKey=<accessKey>";
const client = new PhoneNumbersClient(connectionString);
async function main() {
const phoneNumberToRelease = "<phone-number-to-release>";
const releasePoller = await client.beginReleasePhoneNumber(phoneNumberToRelease);
// Release is underway.
await releasePoller.pollUntilDone();
console.log("Successfully release phone number.");
}
main();
更新电话号码功能
beginUpdatePhoneNumberCapabilities
使用 方法更新购买的电话号码的功能。 电话号码可以配置为支持入站和/或出站呼叫和短信,或者两者均不支持。
beginUpdatePhoneNumberCapabilities
是一个长时间运行的操作,并返回一个轮询器。
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const connectionString = "endpoint=<endpoint>;accessKey=<accessKey>";
const client = new PhoneNumbersClient(connectionString);
async function main() {
const phoneNumberToUpdate = "<phone-number-to-update>";
// This will update phone number to send and receive sms, but only send calls.
const updateRequest = {
sms: "inbound+outbound",
calling: "outbound"
};
const updatePoller = await client.beginUpdatePhoneNumberCapabilities(
phoneNumberToUpdate,
updateRequest
);
// Update is underway.
const { capabilities } = await updatePoller.pollUntilDone();
console.log(`These are the update capabilities: ${capabilities}`);
}
main();
获取购买的电话号码
getPurchasedPhoneNumber
使用 方法获取有关购买的电话号码的信息。 此信息包括电话号码的类型、功能、成本和购买日期。
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const connectionString = "endpoint=<endpoint>;accessKey=<accessKey>";
const client = new PhoneNumbersClient(connectionString);
async main function() {
const phoneNumberToGet = "<phone-number-to-get>";
const phoneNumber = await client.getPurchasedPhoneNumber(phoneNumberToGet);
console.log(`The id is the same as the phone number: ${phoneNumber.id}`);
console.log(`Phone number type is ${phoneNumber.phoneNumberType}`);
}
main();
列出购买的电话号码
listPurchasedPhoneNumbers
使用 方法可分页查看所有购买的电话号码。
import { PhoneNumbersClient } from "@azure/communication-phone-numbers";
const connectionString = "endpoint=<endpoint>;accessKey=<accessKey>";
const client = new PhoneNumbersClient(connectionString);
async main function() {
const phoneNumbers = await client.listPurchasedPhoneNumbers();
for await (const phoneNumber of phoneNumbers) {
console.log(`The id is the same as the phone number: ${phoneNumber.id}`);
console.log(`Phone number type is ${phoneNumber.phoneNumberType}`);
}
}
main();
疑难解答
后续步骤
请查看 示例 目录,获取有关如何使用此库的详细示例。
贡献
若要为此库做出贡献,请阅读贡献指南,详细了解如何生成和测试代码。
相关项目