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

快速入门:获取和管理电话号码

重要

短信和 PSTN 功能取决于所使用的电话号码和所在的国家/地区,具体取决于 Azure 帐单邮寄地址。 有关详细信息,请访问订阅资格文档。

重要

如果订单量较大或者如果所需的电话号码不可用,请访问此页面以获得进一步的帮助。

先决条件

获取电话号码

若要开始预配号码,请访问 Azure 门户上的通信服务资源。

显示通信服务资源主页的屏幕截图。

搜索可用的电话号码

导航到资源菜单中的“电话号码”边栏选项卡。

显示通信服务资源的电话页的屏幕截图。

按“获取”按钮启动向导。 “电话号码”边栏选项卡上的向导将引导你完成一系列问题,以帮助你选择最适合你的情况的电话号码。

首先需要选择要在哪个“国家/地区”预配电话号码。 选择国家/地区后,需要选择最符合你需求的“用例”。

显示“获取电话号码”视图的屏幕截图。

选择电话号码功能

配置电话号码分为两个步骤:

  1. 选择号码类型
  2. 选择号码功能

可从两种电话号码类型中进行选择:本地电话和免费电话。 选择号码类型后,可以选择功能。

在我们的示例中,我们选择了具有拨打电话和收发短信功能的“免费电话”号码类型。

显示“选择功能”视图的屏幕截图。

在此处单击页面底部的“下一步:号码”按钮,以自定义要预配的电话号码。

自定义电话号码

在“号码”页上,你将自定义要预配的电话号码。

显示号码选择页的屏幕截图。

注意

本快速入门显示的是“免费”号码类型自定义流。 如果选择了“本地电话”号码类型,则体验可能会略有不同,但最终结果是一样的。

从可用区号列表中选择“区号”,输入要预配的数量,然后单击“搜索”查找符合所选要求的号码 。 系统将显示符合你需求的电话号码及其每月费用。

显示包含预留号码的号码选择页的屏幕截图。

注意

号码可用性取决于所选的号码类型、位置和功能。 交易到期前,号码会作短暂保留。 如果交易到期,则需要重新选择号码。

若要查看购买摘要并下单,请单击页面底部的“下一步:摘要”按钮。

购买电话号码

摘要页可查看号码类型、功能、电话号码和预配电话号码的每月总费用。

注意

显示的价格是每月固定费用,其中包括租赁所选电话号码的费用。 拨打或接听电话时产生的即用即付费用未包含在此视图中。 价目表可在此处获得。 这些费用取决于号码类型和被叫目的地。 例如,从西雅图地区号码呼叫纽约地区号码的每分钟价格与从同一号码呼叫英国移动号码的每分钟价格可能不同。

最后,单击页面底部的“下单”进行确认。

显示摘要页的屏幕截图,该页面显示了号码类型、功能、电话号码和每月总费用。

在 Azure 门户上查找电话号码

Azure 门户上导航到你的 Azure 通信服务资源:

显示通信服务资源主页的屏幕截图。

在菜单中选择“电话号码”边栏选项卡来管理电话号码。

显示通信服务资源的电话号码页的屏幕截图。

注意

在此页面上显示预配号码可能需要几分钟时间。

更新电话号码功能

在“电话号码”页上,你可以选择一个电话号码进行配置。

显示“更新功能”页面的屏幕截图。

从可用选项中选择功能,然后单击“保存”以应用你的选择。

发布电话号码

在“数字”页上,你可以发布电话号码。

显示“发布电话号码”页的屏幕截图。

选择要发布的电话号码,然后单击“发布”按钮。

重要

Azure 通信服务的这一功能目前以预览版提供。

预览版 API 和 SDK 在没有服务级别协议的情况下提供。 建议不要将它们用于生产工作负荷。 某些功能可能不受支持或者已受限。

有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

Azure 通信服务引入了用于购买电话号码的新用户体验。 此体验当前处于外部测试状态,在 Azure 门户中购买电话号码时,可能会引入此体验。 如果对此体验有反馈,请毫不犹豫地通过 Azure 门户扩展上的“提供反馈”按钮提供反馈。

先决条件

购买电话号码

  1. Azure 门户中导航到自己的通信服务资源。

    显示通信服务资源主页的屏幕截图。

  2. 在通信服务资源概述中,选择左侧菜单中的“电话号码”选项。

    显示通信服务资源的电话号码页面的屏幕截图。

  3. 选择页面左上角的“获取”以购买电话号码。 选择此项将启动我们的购物向导:

    屏幕截图显示电话号码购物车搜索向导。

  4. 选择要在哪个“国家/地区”预配电话号码。 国家/地区可用性基于 Azure 订阅的计费位置。 可在此处找到有关每个国家/地区可用号码的详细信息。 接下来,选择号码类型。 可从两种电话号码类型中进行选择:本地电话和免费电话。

  5. 选择“搜索”以拉取符合所选条件的号码。 有各种筛选器来搜索符合你的需求的号码,包括:

    • 用例:这是指此号码用于从应用程序 (A2P) 还是从人工代理 (P2P) 调用。
    • 呼叫:这是用于确定电话号码所需的呼叫功能:拨打呼叫和/或接听呼叫。
    • 短信:这是用于确定电话号码所需的短信功能:发送和/或接收短信。
    • 自定义:还可以添加自定义筛选器以获取电话号码中的特定前缀或数字集。

    屏幕截图显示电话号码购买页面以及可用电话号码。

  6. 找到所选的电话号码或号码后,请选择“添加到购物车”以将号码保存在电话服务购物车中。 这些号码在自动清除购物车之前保留 16 分钟。

    屏幕截图显示电话号码购物车,购物车中有两个电话号码。

    注意

    显示的价格是每月固定费用,其中包括租赁所选电话号码的费用。 拨打或接听电话时产生的即用即付费用未包含在此视图中。 价目表可在此处获得。 这些费用取决于号码类型和被叫目的地。 例如,从西雅图地区号码呼叫纽约地区号码的每分钟价格与从同一号码呼叫英国移动号码的每分钟价格可能不同。

  7. 选择“下一步”查看你的购买。 若要完成购买,请选择“立即购买”

    屏幕截图显示 2 个供查看和购买的电话号码。

  8. 可以在“电话号码”页上找到购买的号码。 预配号码可能需要几分钟。

    电话号码页面的屏幕截图,其中新购买的电话号码带有红色边框。

更新电话号码功能

在“电话号码”页上,你可以选择一个电话号码进行配置。

显示“更新功能”页面的屏幕截图。

从可用选项中选择功能,然后单击“保存”以应用你的选择

发布电话号码

在“数字”页上,你可以发布电话号码。

显示“发布电话号码”页的屏幕截图。

选择要发布的电话号码,然后选择“发布”按钮。

先决条件

设置

添加扩展

使用 az extension 命令为 Azure CLI 添加 Azure 通信服务扩展。

az extension add --name communication

登录 Azure CLI

需要登录到 Azure CLI。 可以从终端运行 az login 命令并提供凭据进行登录。

Operations

列出购买的电话号码

运行以下命令以检索所有购买的电话号码。

az communication phonenumber list --connection-string "<yourConnectionString>"

在代码中进行此替换:

  • <yourConnectionString> 替换为你的连接字符串。

获取购买的电话号码详细信息

运行以下命令以获取购买的电话号码的电话号码详细信息。

az communication phonenumber show --phonenumber <purchasedPhoneNumber> --connection-string "<yourConnectionString>"

在代码中进行下述替换:

  • <purchasedPhoneNumber> 替换为与通信服务资源关联的电话号码。
  • <yourConnectionString> 替换为你的连接字符串。

注意

Azure CLI 选项仅提供列出和显示电话号码的功能。 它不支持搜索、购买、编辑或发布电话号码等其他操作。

(可选)使用 Azure CLI 电话号码操作而无需传入连接字符串

可以配置 AZURE_COMMUNICATION_CONNECTION_STRING 环境变量来使用 Azure CLI 电话号码操作,而无需使用 --connection_string 来传入连接字符串。 若要配置环境变量,请打开控制台窗口,然后从以下选项卡中选择操作系统。 将 <yourConnectionString> 替换为实际的连接字符串。

打开控制台窗口并输入以下命令:

setx AZURE_COMMUNICATION_CONNECTION_STRING "<yourConnectionString>"

添加环境变量后,可能需要重启任何正在运行的、需要读取环境变量的程序(包括控制台窗口)。 例如,如果使用 Visual Studio 作为编辑器,请在运行示例之前重启 Visual Studio。

注意

GitHub 上查找此快速入门的最终代码

先决条件

先决条件检查

  • 在终端或命令窗口中,运行 dotnet 命令来查看是否安装了 .NET 客户端。

设置

新建 C# 应用程序

在控制台窗口(例如 cmd、PowerShell 或 Bash)中,使用 dotnet new 命令创建名为 PhoneNumbersQuickstart 的新控制台应用。 此命令将创建包含单个源文件的简单“Hello World”C# 项目:Program.cs

dotnet new console -o PhoneNumbersQuickstart

将目录更改为新创建的应用文件夹,并使用 dotnet build 命令编译应用程序。

cd PhoneNumbersQuickstart
dotnet build

安装包

如果仍在应用程序目录中,使用 dotnet add package 命令安装适用于 .NET 包的 Azure 通信电话号码客户端库。

dotnet add package Azure.Communication.PhoneNumbers --version 1.0.0

using 指令添加到 Program.cs 顶部以包括命名空间。

using System;
using System.Linq;
using System.Threading.Tasks;
using Azure.Communication.PhoneNumbers;

Main 函数签名更新为 async。

static async Task Main(string[] args)
{
  ...
}

验证客户端

电话号码客户端可以使用从 Azure 门户中的 Azure 通信服务资源获取的连接字符串进行身份验证。

// Get a connection string to our Azure Communication Services resource.
var connectionString = "<connection_string>";
var client = new PhoneNumbersClient(connectionString);

电话号码客户端还可以选择使用 Microsoft Entra 身份验证进行身份验证。 在此选项中,AZURE_CLIENT_SECRETAZURE_CLIENT_IDAZURE_TENANT_ID 环境变量需要设置为可执行身份验证。

// Get an endpoint to our Azure Communication Services resource.
var endpoint = new Uri("<endpoint_url>");
TokenCredential tokenCredential = new DefaultAzureCredential();
client = new PhoneNumbersClient(endpoint, tokenCredential);

管理电话号码

搜索可用的电话号码

为了购买电话号码,必须首先搜索可用的电话号码。 若要搜索电话号码,请提供区号、分配类型、电话号码功能电话号码类型和数量。 请注意,对于免费电话号码类型,可以选择是否提供区号。

var capabilities = new PhoneNumberCapabilities(calling:PhoneNumberCapabilityType.None, sms:PhoneNumberCapabilityType.Outbound);
var searchOptions = new PhoneNumberSearchOptions { AreaCode = "833", Quantity = 1 };

var searchOperation = await client.StartSearchAvailablePhoneNumbersAsync("US", PhoneNumberType.TollFree, PhoneNumberAssignmentType.Application, capabilities, searchOptions);
await searchOperation.WaitForCompletionAsync();

购买电话号码

电话号码的搜索结果是 PhoneNumberSearchResult 条。 此结果包含一个 SearchId,可将其传递给采购编号 API 以获取搜索中的数量。 请注意,调用购买电话号码 API 将导致系统向你的 Azure 帐户收费。

var purchaseOperation = await client.StartPurchasePhoneNumbersAsync(searchOperation.Value.SearchId);
await purchaseOperation.WaitForCompletionResponseAsync();

获取电话号码

购买号码后,你可以从客户端进行检索。

var getPhoneNumberResponse = await client.GetPurchasedPhoneNumberAsync("+14255550123");
Console.WriteLine($"Phone number: {getPhoneNumberResponse.Value.PhoneNumber}, country code: {getPhoneNumberResponse.Value.CountryCode}");

你还可以检索所有购买的电话号码。

var purchasedPhoneNumbers = client.GetPurchasedPhoneNumbersAsync();
await foreach (var purchasedPhoneNumber in purchasedPhoneNumbers)
{
    Console.WriteLine($"Phone number: {purchasedPhoneNumber.PhoneNumber}, country code: {purchasedPhoneNumber.CountryCode}");
}

更新电话号码功能

你可以使用购买的编号更新功能。

var updateCapabilitiesOperation = await client.StartUpdateCapabilitiesAsync("+14255550123", calling: PhoneNumberCapabilityType.Outbound, sms: PhoneNumberCapabilityType.InboundOutbound);
await updateCapabilitiesOperation.WaitForCompletionAsync();

发布电话号码

你可以发布购买的电话号码。

var releaseOperation = await client.StartReleasePhoneNumberAsync("+14255550123");
await releaseOperation.WaitForCompletionResponseAsync();

运行代码

从应用程序目录使用 dotnet run 命令运行应用程序。

dotnet run

代码示例

可以从 GitHub 下载示例应用

注意

GitHub 上查找此快速入门的最终代码

先决条件

设置

创建新的 Java 应用程序

打开终端或命令窗口。 导航到要在其中创建 Java 应用程序的目录。 运行以下命令以从 maven-archetype-quickstart 模板生成 Java 项目。

mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

你会注意到,“生成”任务创建了与 artifactId 名称相同的目录。 在此目录下,src/main/java 目录包含项目源代码,src/test/java directory 包含测试源,pom.xml 文件是项目的项目对象模型 (POM)。

安装包

在文本编辑器中打开 pom.xml 文件。 将以下依赖项元素添加到依赖项组。

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-common</artifactId>
    <version>1.0.0</version>
</dependency>

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-phonenumbers</artifactId>
    <version>1.0.0</version>
</dependency>

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>1.2.3</version>
</dependency>

设置应用框架

从项目目录中执行以下操作:

  1. 导航到 /src/main/java/com/communication/quickstart 目录
  2. 在编辑器中打开 App.java 文件
  3. 替换 System.out.println("Hello world!"); 语句
  4. 添加 import 指令

使用以下代码以开始执行以下操作:

import com.azure.communication.phonenumbers.*;
import com.azure.communication.phonenumbers.models.*;
import com.azure.core.http.rest.*;
import com.azure.core.util.Context;
import com.azure.core.util.polling.LongRunningOperationStatus;
import com.azure.core.util.polling.PollResponse;
import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.*;
import java.io.*;

public class App
{
    public static void main( String[] args ) throws IOException
    {
        System.out.println("Azure Communication Services - Phone Numbers Quickstart");
        // Quickstart code goes here
    }
}

对电话号码客户端进行身份验证

已启用 PhoneNumberClientBuilder 以使用 Microsoft Entra 身份验证

// You can find your endpoint and access key from your resource in the Azure portal
String endpoint = "https://<RESOURCE_NAME>.communication.azure.com";

PhoneNumbersClient phoneNumberClient = new PhoneNumbersClientBuilder()
    .endpoint(endpoint)
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildClient();

此外,你还可以使用来自通信资源的终结点和访问密钥进行身份验证。

// You can find your connection string from your resource in the Azure portal
String connectionString = "endpoint=https://<RESOURCE_NAME>.communication.azure.com/;accesskey=<ACCESS_KEY>";

PhoneNumbersClient phoneNumberClient = new PhoneNumbersClientBuilder()
    .connectionString(connectionString)
    .buildClient();

管理电话号码

搜索可用的电话号码

为了购买电话号码,必须首先搜索可用的电话号码。 若要搜索电话号码,请提供区号、分配类型、电话号码功能电话号码类型和数量。 请注意,对于免费电话号码类型,可以选择是否提供区号。

 PhoneNumberCapabilities capabilities = new PhoneNumberCapabilities()
    .setCalling(PhoneNumberCapabilityType.INBOUND)
    .setSms(PhoneNumberCapabilityType.INBOUND_OUTBOUND);
PhoneNumberSearchOptions searchOptions = new PhoneNumberSearchOptions().setAreaCode("833").setQuantity(1);

SyncPoller<PhoneNumberOperation, PhoneNumberSearchResult> poller = phoneNumberClient
    .beginSearchAvailablePhoneNumbers("US", PhoneNumberType.TOLL_FREE, PhoneNumberAssignmentType.APPLICATION, capabilities, searchOptions, Context.NONE);
PollResponse<PhoneNumberOperation> response = poller.waitForCompletion();
String searchId = "";

if (LongRunningOperationStatus.SUCCESSFULLY_COMPLETED == response.getStatus()) {
    PhoneNumberSearchResult searchResult = poller.getFinalResult();
    searchId = searchResult.getSearchId();
    System.out.println("Searched phone numbers: " + searchResult.getPhoneNumbers());
    System.out.println("Search expires by: " + searchResult.getSearchExpiresBy());
    System.out.println("Phone number costs:" + searchResult.getCost().getAmount());
}

购买电话号码

电话号码的搜索果为 PhoneNumberSearchResult。 此结果包含一个 searchId,可将其传递给采购编号 API 以获取搜索中的数量。 请注意,调用购买电话号码 API 将导致系统向你的 Azure 帐户收费。

PollResponse<PhoneNumberOperation> purchaseResponse = phoneNumberClient.beginPurchasePhoneNumbers(searchId, Context.NONE).waitForCompletion();
System.out.println("Purchase phone numbers operation is: " + purchaseResponse.getStatus());

获取电话号码

购买号码后,你可以从客户端进行检索。

PurchasedPhoneNumber phoneNumber = phoneNumberClient.getPurchasedPhoneNumber("+14255550123");
System.out.println("Phone Number Country Code: " + phoneNumber.getCountryCode());

你还可以检索所有购买的电话号码。

PagedIterable<PurchasedPhoneNumber> phoneNumbers = phoneNumberClient.listPurchasedPhoneNumbers(Context.NONE);
PurchasedPhoneNumber phoneNumber = phoneNumbers.iterator().next();
System.out.println("Phone Number Country Code: " + phoneNumber.getCountryCode());

更新电话号码功能

你可以使用购买的编号更新功能。

PhoneNumberCapabilities capabilities = new PhoneNumberCapabilities();
capabilities
    .setCalling(PhoneNumberCapabilityType.INBOUND)
    .setSms(PhoneNumberCapabilityType.INBOUND_OUTBOUND);

SyncPoller<PhoneNumberOperation, PurchasedPhoneNumber> poller = phoneNumberClient.beginUpdatePhoneNumberCapabilities("+18001234567", capabilities, Context.NONE);
PollResponse<PhoneNumberOperation> response = poller.waitForCompletion();
if (LongRunningOperationStatus.SUCCESSFULLY_COMPLETED == response.getStatus()) {
    PurchasedPhoneNumber phoneNumber = poller.getFinalResult();
    System.out.println("Phone Number Calling capabilities: " + phoneNumber.getCapabilities().getCalling()); //Phone Number Calling capabilities: inbound
    System.out.println("Phone Number SMS capabilities: " + phoneNumber.getCapabilities().getSms()); //Phone Number SMS capabilities: inbound+outbound
}

发布电话号码

你可以发布购买的电话号码。

PollResponse<PhoneNumberOperation> releaseResponse =
    phoneNumberClient.beginReleasePhoneNumber("+14255550123", Context.NONE).waitForCompletion();
System.out.println("Release phone number operation is: " + releaseResponse.getStatus());

运行代码

导航到包含 pom.xml 文件的目录,并使用以下 mvn 命令编译该项目。

mvn compile

然后,生成包。

mvn package

运行以下 mvn 命令以执行应用。

mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false

应用的输出描述每个已完成的操作:

Azure Communication Services - Phone Numbers Quickstart

Searched phone numbers: [+18001234567]

Purchase phone numbers operation is: SUCCESSFULLY_COMPLETED

Phone Number Country Code: US

Phone Number Calling capabilities: inbound

Phone Number SMS capabilities: inbound

Release phone number operation is: SUCCESSFULLY_COMPLETED

注意

GitHub 上查找此快速入门的最终代码

先决条件

设置

创建新的 Python 应用程序

打开终端或命令窗口,为应用程序创建一个新目录,并导航到该目录。

mkdir phone-numbers-quickstart && cd phone-numbers-quickstart

使用文本编辑器在项目根目录下创建 phone_numbers_sample.py 文件,然后添加以下代码。 我们将在以下各个部分中添加剩余的快速入门代码。

import os
from azure.communication.phonenumbers import PhoneNumbersClient

try:
   print('Azure Communication Services - Phone Numbers Quickstart')
   # Quickstart code goes here
except Exception as ex:
   print('Exception:')
   print(ex)

安装包

仍在应用程序目录中时,使用 pip install 命令安装适用于 Python 包的 Azure 通信服务管理客户端库。

pip install azure-communication-phonenumbers

对电话号码客户端进行身份验证

PhoneNumbersClient 已启用以使用 Microsoft Entra 身份验证。 使用 DefaultAzureCredential 对象是开始使用 Microsoft Entra ID 的最简单方法,可以使用 pip install 命令安装它。

pip install azure-identity

创建 DefaultAzureCredential 对象要求你使用已注册 Microsoft Entra 应用程序中的对应值将 AZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_TENANT_ID 设置为环境变量。

若要快速了解如何获取这些环境变量,你可以使用 CLI 快速入门中的设置服务主体

安装 azure-identity 库后,可以继续对客户端进行身份验证。

import os
from azure.communication.phonenumbers import PhoneNumbersClient
from azure.identity import DefaultAzureCredential

# You can find your endpoint from your resource in the Azure portal
endpoint = 'https://<RESOURCE_NAME>.communication.azure.com'
try:
    print('Azure Communication Services - Phone Numbers Quickstart')
    credential = DefaultAzureCredential()
    phone_numbers_client = PhoneNumbersClient(endpoint, credential)
except Exception as ex:
    print('Exception:')
    print(ex)

此外,你还可以使用来自通信资源的终结点和访问密钥进行身份验证。

import os
from azure.communication.phonenumbers import PhoneNumbersClient

# You can find your connection string from your resource in the Azure portal
connection_string = 'https://<RESOURCE_NAME>.communication.azure.com/;accesskey=<YOUR_ACCESS_KEY>'
try:
    print('Azure Communication Services - Phone Numbers Quickstart')
    phone_numbers_client = PhoneNumbersClient.from_connection_string(connection_string)
except Exception as ex:
    print('Exception:')
    print(ex)

函数

PhoneNumbersClient 经过身份验证后,我们可以开始处理它可以执行的不同功能。

搜索可用的电话号码

为了购买电话号码,必须首先搜索可用的电话号码。 若要搜索电话号码,请提供区号、分配类型、电话号码功能电话号码类型和数量(默认数量为 1)。 请注意,对于免费电话号码类型,可以选择是否提供区号。

import os
from azure.communication.phonenumbers import PhoneNumbersClient, PhoneNumberCapabilityType, PhoneNumberAssignmentType, PhoneNumberType, PhoneNumberCapabilities
from azure.identity import DefaultAzureCredential

# You can find your endpoint from your resource in the Azure portal
endpoint = 'https://<RESOURCE_NAME>.communication.azure.com'
try:
    print('Azure Communication Services - Phone Numbers Quickstart')
    credential = DefaultAzureCredential()
    phone_numbers_client = PhoneNumbersClient(endpoint, credential)
    capabilities = PhoneNumberCapabilities(
        calling = PhoneNumberCapabilityType.INBOUND,
        sms = PhoneNumberCapabilityType.INBOUND_OUTBOUND
    )
    search_poller = phone_numbers_client.begin_search_available_phone_numbers(
        "US",
        PhoneNumberType.TOLL_FREE,
        PhoneNumberAssignmentType.APPLICATION,
        capabilities,
        polling = True
    )
    search_result = search_poller.result()
    print ('Search id: ' + search_result.search_id)
    phone_number_list = search_result.phone_numbers
    print('Reserved phone numbers:')
    for phone_number in phone_number_list:
        print(phone_number)

except Exception as ex:
    print('Exception:')
    print(ex)

购买电话号码

电话号码的搜索结果是 PhoneNumberSearchResult 条。 此结果包含一个 searchId,可将其传递给采购编号 API 以获取搜索中的数量。 请注意,调用购买电话号码 API 将导致系统向你的 Azure 帐户收费。

import os
from azure.communication.phonenumbers import (
    PhoneNumbersClient,
    PhoneNumberCapabilityType,
    PhoneNumberAssignmentType,
    PhoneNumberType,
    PhoneNumberCapabilities
)
from azure.identity import DefaultAzureCredential

# You can find your endpoint from your resource in the Azure portal
endpoint = 'https://<RESOURCE_NAME>.communication.azure.com'
try:
    print('Azure Communication Services - Phone Numbers Quickstart')
    credential = DefaultAzureCredential()
    phone_numbers_client = PhoneNumbersClient(endpoint, credential)
    capabilities = PhoneNumberCapabilities(
        calling = PhoneNumberCapabilityType.INBOUND,
        sms = PhoneNumberCapabilityType.INBOUND_OUTBOUND
    )
    search_poller = phone_numbers_client.begin_search_available_phone_numbers(
        "US",
        PhoneNumberType.TOLL_FREE,
        PhoneNumberAssignmentType.APPLICATION,
        capabilities,
        area_code="833",
        polling = True
    )
    search_result = poller.result()
    print ('Search id: ' + search_result.search_id)
    phone_number_list = search_result.phone_numbers
    print('Reserved phone numbers:')
    for phone_number in phone_number_list:
        print(phone_number)

    purchase_poller = phone_numbers_client.begin_purchase_phone_numbers(search_result.search_id, polling = True)
    purchase_poller.result()
    print("The status of the purchase operation was: " + purchase_poller.status())
except Exception as ex:
    print('Exception:')
    print(ex)

获取购买的电话号码

购买号码后,你可以从客户端进行检索。

purchased_phone_number_information = phone_numbers_client.get_purchased_phone_number("+18001234567")
print('Phone number: ' + purchased_phone_number_information.phone_number)
print('Country code: ' + purchased_phone_number_information.country_code)

你还可以检索所有购买的电话号码。

purchased_phone_numbers = phone_numbers_client.list_purchased_phone_numbers()
print('Purchased phone numbers:')
for purchased_phone_number in purchased_phone_numbers:
    print(purchased_phone_number.phone_number)

更新电话号码功能

你可以更新以前购买的电话号码功能。

update_poller = phone_numbers_client.begin_update_phone_number_capabilities(
    "+18001234567",
    PhoneNumberCapabilityType.OUTBOUND,
    PhoneNumberCapabilityType.OUTBOUND,
    polling = True
)
update_poller.result()
print('Status of the operation: ' + update_poller.status())

发布电话号码

你可以发布购买的电话号码。

release_poller = phone_numbers_client.begin_release_phone_number("+18001234567")
release_poller.result()
print('Status of the operation: ' + release_poller.status())

运行代码

在控制台提示下,导航到包含 phone_numbers_sample.py 文件的目录,然后执行以下 Python 命令来运行应用。

python phone_numbers_sample.py

注意

GitHub 上查找此快速入门的最终代码

先决条件

先决条件检查

  • 在终端或命令窗口中,运行 node --version 以查看是否安装了 Node.js。

设置

创建新的 Node.js 应用程序

首先,打开终端或命令窗口,为应用创建一个新目录,并导航到该目录。

mkdir phone-numbers-quickstart && cd phone-numbers-quickstart

运行 npm init -y 以使用默认设置创建 package.json 文件。

npm init -y

在刚创建的根目录中,创建一个名为 phone-numbers-quickstart.js 的文件。 将以下代码片段添加到此文件中:

async function main() {
    // quickstart code will here
}

main();

安装包

使用 npm install 命令安装适用于 JavaScript 的 Azure 通信服务电话号码客户端库。

npm install @azure/communication-phone-numbers --save

--save 选项将该库作为 package.json 文件中的依赖项列出。

验证客户端

从客户端库导入 PhoneNumbersClient,并通过连接字符串将其实例化。 下面的代码从名为 COMMUNICATION_SERVICES_CONNECTION_STRING 的环境变量中检索资源的连接字符串。 了解如何管理资源的连接字符串

将以下代码添加到 phone-numbers-quickstart.js 的顶部:

const { PhoneNumbersClient } = require('@azure/communication-phone-numbers');

// This code demonstrates how to fetch your connection string
// from an environment variable.
const connectionString = process.env['COMMUNICATION_SERVICES_CONNECTION_STRING'];

// Instantiate the phone numbers client
const phoneNumbersClient = new PhoneNumbersClient(connectionString);

管理电话号码

搜索可用的电话号码

为了购买电话号码,必须首先搜索可用的电话号码。 若要搜索电话号码,请提供区号、分配类型、电话号码功能电话号码类型和数量。 请注意,对于免费电话号码类型,可以选择是否提供区号。

将以下代码片段添加到 main 函数:

/**
 * Search for Available Phone Number
 */

// Create search request
const searchRequest = {
    countryCode: "US",
    phoneNumberType: "tollFree",
    assignmentType: "application",
    capabilities: {
      sms: "outbound",
      calling: "none"
    },
    areaCode: "833",
    quantity: 1
  };

const searchPoller = await phoneNumbersClient.beginSearchAvailablePhoneNumbers(searchRequest);

// The search is underway. Wait to receive searchId.
const { searchId, phoneNumbers } = await searchPoller.pollUntilDone();
const phoneNumber = phoneNumbers[0];

console.log(`Found phone number: ${phoneNumber}`);
console.log(`searchId: ${searchId}`);

购买电话号码

电话号码的搜索结果是 PhoneNumberSearchResult 条。 此结果包含一个 searchId,可将其传递给采购编号 API 以获取搜索中的数量。 请注意,调用购买电话号码 API 将导致系统向你的 Azure 帐户收费。

将以下代码片段添加到 main 函数:

/**
 * Purchase Phone Number
 */

const purchasePoller = await phoneNumbersClient.beginPurchasePhoneNumbers(searchId);

// Purchase is underway.
await purchasePoller.pollUntilDone();
console.log(`Successfully purchased ${phoneNumber}`);

更新电话号码功能

使用现在购买的电话号码,添加以下代码以更新功能:

/**
 * Update Phone Number Capabilities
 */

// Create update request.
// This will update phone number to send and receive sms, but only send calls.
const updateRequest = {
  sms: "inbound+outbound",
  calling: "outbound"
};

const updatePoller = await phoneNumbersClient.beginUpdatePhoneNumberCapabilities(
  phoneNumber,
  updateRequest
);

// Update is underway.
await updatePoller.pollUntilDone();
console.log("Phone number updated successfully.");

获取购买的电话号码

购买号码后,你可以从客户端进行检索。 将以下代码添加到 main 函数以获取刚购买的电话号码:

/**
 * Get Purchased Phone Number
 */

const { capabilities } = await phoneNumbersClient.getPurchasedPhoneNumber(phoneNumber);
console.log("These capabilities:", capabilities, "should be the same as these:", updateRequest, ".");

你还可以检索所有购买的电话号码。

const purchasedPhoneNumbers = await phoneNumbersClient.listPurchasedPhoneNumbers();

for await (const purchasedPhoneNumber of purchasedPhoneNumbers) {
  console.log(`Phone number: ${purchasedPhoneNumber.phoneNumber}, country code: ${purchasedPhoneNumber.countryCode}.`);
}

发布电话号码

你现在可以发布购买的电话号码。 将以下代码片段添加到 main 函数:

/**
 * Release Purchased Phone Number
 */

const releasePoller = await phoneNumbersClient.beginReleasePhoneNumber(phoneNumber);

// Release is underway.
await releasePoller.pollUntilDone();
console.log("Successfully release phone number.");

运行代码

使用 node 命令运行添加到 phone-numbers-quickstart.js 文件中的代码。

node phone-numbers-quickstart.js

疑难解答

常见问题:

  • 释放某电话号码后,要等到计费周期结束,该号码才会显示在 Azure 门户的 ACS 资源中。 在计费周期结束之前,也无法重新购买该号码。

  • 删除某个通信服务资源的同时,将自动释放与该资源关联的电话号码。

后续步骤

本快速入门介绍了如何: