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

适用于 JavaScript 的 Azure 通信电话号码客户端库 - 版本 1.0.0

电话号码库提供电话号码管理功能。

购买的电话号码可以附带许多功能,具体取决于国家/地区、号码类型和分配类型。 功能示例包括短信入站和出站用法、PSTN 入站和出站用法。 电话号码也可以通过 Webhook URL 分配给机器人。

入门

先决条件

安装

npm install @azure/communication-phone-numbers

浏览器支持

JavaScript 捆绑包

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

关键概念

电话号码包公开 , PhoneNumbersClient 它提供管理电话号码的方法。

电话号码类型

电话号码有两种类型:地理和免费电话。 地理电话号码是与某个位置关联的电话号码,其区号与地理位置的区号相关联。 Toll-Free电话号码不与某个位置关联。 例如,在美国,免费号码可以附带区号,如 800 或 888。

同一国家/地区中的所有地理电话号码都分组到具有“地理电话号码”类型的电话套餐组中。 同一国家/地区中的所有Toll-Free电话号码都分组到一个电话计划组中。

搜索和获取数字

可以通过搜索创建 API 搜索电话号码,方法是提供电话号码类型 (地理或免费) 、分配类型 (人员或应用程序) 、呼叫和短信功能、区号和电话号码数量。 提供的电话号码数量将保留 15 分钟。 此电话号码搜索可以取消或购买。 如果取消搜索,则其他人可以使用电话号码。 如果搜索已购买,则会获取 Azure 资源的电话号码。

配置电话号码

电话号码可以具有多种功能的组合。 可以将其配置为支持入站和/或出站呼叫;如果不使用电话号码进行呼叫,则两者均不支持。 这同样适用于短信功能。

请务必考虑电话号码的分配类型。 某些功能仅限于特定分配类型。

示例

身份验证

若要创建客户端对象来访问通信服务 API,需要 connection string 通信服务资源的 或 endpointcredential。 电话号码客户端可以使用 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 分钟,在此期间可以通过向 方法提供 searchIdbeginPurchasePhoneNumbers 来购买。

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使用 方法从搜索中购买电话号码。 购买的电话号码将分配给启动客户端时使用的通信服务资源。 searchIdbeginSearchAvailablePhoneNumbers 返回的 是必需的。

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

疑难解答

后续步骤

请查看 示例 目录,获取有关如何使用此库的详细示例。

贡献

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

曝光数