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

快速入门:了解如何使用 Azure 通信服务查找电话号码的运营商信息

重要

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

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

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

开始使用适用于 JavaScript 的电话号码客户端库来查找电话号码的运营商信息,这些信息可用于确定是否以及如何与该电话号码通信。 按照以下步骤安装包并查找有关电话号码的运营商信息。

注意

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

先决条件

先决条件检查

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

设置

若要设置用于发送查找查询的环境,请执行以下部分中所述的步骤。

创建新的 Node.js 应用程序

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

mkdir number-lookup-quickstart && cd number-lookup-quickstart

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

npm init -y

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

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

main();

安装包

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

npm install @azure/communication-phone-numbers@1.3.0-beta.4 --save

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

代码示例

验证客户端

从客户端库导入 PhoneNumbersClient,并使用连接字符串将其实例化,可从 Azure 门户中的 Azure 通信服务资源获取该字符串。 建议使用 COMMUNICATION_SERVICES_CONNECTION_STRING 环境变量,以避免在代码中以纯文本形式放入连接字符串。 了解如何管理资源的连接字符串

将以下代码添加到 number-lookup-quickstart.js 的顶部

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

// This code retrieves 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);

查找电话号码格式

若要搜索电话号码的运营商信息,请从 PhoneNumbersClient 调用 searchOperatorInformation

let formattingResults = await phoneNumbersClient.searchOperatorInformation([ "<target-phone-number>" ]);

<target-phone-number> 替换为要查找的电话号码,通常是要向其发送消息的号码。

警告

以 E.164 国际标准格式提供电话号码,例如 +14255550123。

查找号码的运营商信息

若要搜索电话号码的运营商信息,请从 PhoneNumbersClient 调用 searchOperatorInformation,并为 includeAdditionalOperatorDetails 选项传递 true

let searchResults = await phoneNumbersClient.searchOperatorInformation([ "<target-phone-number>" ], { "includeAdditionalOperatorDetails": true });

警告

使用此功能,帐户会产生一笔费用。

使用运营商信息

现在便可使用运营商信息。 在本快速入门指南中,我们可以将一些详细信息输出到控制台。

首先,可以输出有关号码格式的详细信息。

let formatInfo = formattingResults.values[0];
console.log(formatInfo.phoneNumber + " is formatted " + formatInfo.internationalFormat + " internationally, and " + formatInfo.nationalFormat + " nationally");

接下来,可以打印有关电话号码和运营商的详细信息。

let operatorInfo = searchResults.values[0];
console.log(operatorInfo.phoneNumber + " is a " + (operatorInfo.numberType ? operatorInfo.numberType : "unknown") + " number, operated in "
    + operatorInfo.isoCountryCode + " by " + (operatorInfo.operatorDetails.name ? operatorInfo.operatorDetails.name : "an unknown operator"));

还可以使用运营商信息确定是否发送短信。 有关发送短信的详细信息,请参阅短信快速入门

运行代码

使用 node 命令从终端或命令窗口运行应用程序。

node number-lookup-quickstart.js

示例代码

可以从 GitHub 下载示例应用。

开始使用适用于 C# 的电话号码客户端库来查找电话号码的运营商信息,这些信息可用于确定是否以及如何与该电话号码通信。 按照以下步骤安装包并查找有关电话号码的运营商信息。

注意

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

先决条件

先决条件检查

在终端或命令窗口中,运行 dotnet 命令查看是否安装 .NET SDK。

设置

若要设置用于发送查找查询的环境,请执行以下部分中所述的步骤。

新建 C# 应用程序

在终端或命令窗口中,运行 dotnet new 命令创建名为 NumberLookupQuickstart 的新控制台应用。 此命令将创建包含单个源文件 (Program.cs) 的简单“Hello World”C# 项目。

dotnet new console -o NumberLookupQuickstart

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

cd NumberLookupQuickstart
dotnet build

连接到开发包提要

SDK 的公共预览版本发布到开发包提要中。 可以使用 NuGet CLI 添加开发提要,这将把它添加到 NuGet.Config 文件中。

nuget sources add -Name "Azure SDK for .NET Dev Feed" -Source "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json"

有关连接到开发提要的更多详细信息和其他选项,可以在参与指南中找到。

安装包

仍然是在应用程序目录中,使用以下命令安装适用于 .NET 包的 Azure 通信服务电话号码客户端库。

dotnet add package Azure.Communication.PhoneNumbers --version 1.3.0-beta.5

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

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

Main 函数签名更新为 async。

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

代码示例

验证客户端

可使用从 Azure 门户中的 Azure 通信服务资源获取的连接字符串对电话号码客户端进行身份验证。 建议使用 COMMUNICATION_SERVICES_CONNECTION_STRING 环境变量,以避免在代码中以纯文本形式放入连接字符串。 了解如何管理资源的连接字符串

// This code retrieves your connection string from an environment variable.
string? connectionString = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");

PhoneNumbersClient client = new PhoneNumbersClient(connectionString, new PhoneNumbersClientOptions(PhoneNumbersClientOptions.ServiceVersion.V2024_03_01_Preview));

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

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

查找电话号码格式

若要查找号码的国内和国际格式,请从 PhoneNumbersClient 调用 SearchOperatorInformationAsync

OperatorInformationResult formattingResult = await client.SearchOperatorInformationAsync(new[] { "<target-phone-number>" });

<target-phone-number> 替换为要查找的电话号码,通常是要向其发送消息的号码。

警告

以 E.164 国际标准格式提供电话号码,例如 +14255550123。

查找号码的运营商信息

若要搜索电话号码的运营商信息,请从 PhoneNumbersClient 调用 SearchOperatorInformationAsync,并为 IncludeAdditionalOperatorDetails 选项传递 true

OperatorInformationResult searchResult = await client.SearchOperatorInformationAsync(new[] { "<target-phone-number>" }, new OperatorInformationOptions() { IncludeAdditionalOperatorDetails = true });

警告

使用此功能,帐户会产生一笔费用。

使用运营商信息

现在便可使用运营商信息。 在本快速入门指南中,我们可以将一些详细信息输出到控制台。

首先,可以输出有关号码格式的详细信息。

OperatorInformation formattingInfo = formattingResult.Values[0];
Console.WriteLine($"{formattingInfo.PhoneNumber} is formatted {formattingInfo.InternationalFormat} internationally, and {formattingInfo.NationalFormat} nationally");

接下来,可以打印有关电话号码和运营商的详细信息。

OperatorInformation operatorInformation = searchResult.Values[0];
Console.WriteLine($"{operatorInformation.PhoneNumber} is a {operatorInformation.NumberType ?? "unknown"} number, operated in {operatorInformation.IsoCountryCode} by {operatorInformation.OperatorDetails.Name ?? "an unknown operator"}");

还可以使用运营商信息确定是否发送短信。 有关发送短信的详细信息,请参阅短信快速入门

运行代码

使用 dotnet run 命令从终端或命令窗口运行应用程序。

dotnet run --interactive

示例代码

可以从 GitHub 下载示例应用。

开始使用适用于 Java 的电话号码客户端库来查找电话号码的运营商信息,这些信息可用于确定是否以及如何与该电话号码通信。 按照以下步骤安装包并查找有关电话号码的运营商信息。

注意

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

先决条件

先决条件检查

在终端或命令窗口中,运行 mvn -v 命令来查看是否安装了 Maven。

设置

若要设置用于发送查找查询的环境,请执行以下部分中所述的步骤。

创建新的 Java 应用程序

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

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

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

连接到开发包提要

SDK 的公共预览版本发布到开发包提要中。 若要连接到开发源,请在文本编辑器中打开 pom.xml 文件,将开发版本同时添加到 pom.xml 的 <repositories><distributionManagement> 部分中(如果它们尚不存在)

<repository>
  <id>azure-sdk-for-java</id>
  <url>https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-java/maven/v1</url>
  <releases>
    <enabled>true</enabled>
  </releases>
  <snapshots>
    <enabled>true</enabled>
  </snapshots>
</repository>

可能需要在 ${user.home}/.m2 中添加或编辑 settings.xml 文件

<server>
  <id>azure-sdk-for-java</id>
  <username>azure-sdk</username>
  <password>[PERSONAL_ACCESS_TOKEN]</password>
</server>

可以生成包含打包读写范围的个人访问令牌,并将其粘贴到 <password> 标记中

有关连接到开发提要的更多详细信息和其他选项,可以在此处找到。

安装包

pom.xml 文件中,将以下依赖项元素添加到依赖项组。

<dependencies>
  <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.2.0-beta.3</version>
  </dependency>

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

  <dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-core</artifactId>
    <version>1.41.0</version>
  </dependency>
</dependencies>

检查 properties 部分,确保项目面向 Maven 1.8 或更高版本。

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>

代码示例

设置应用框架

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

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

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

package com.communication.lookup.quickstart;

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.identity.*;
import java.io.*;
import java.util.ArrayList;

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

验证客户端

可使用从 Azure 门户中的 Azure 通信服务资源获取的连接字符串对客户端进行身份验证。 建议使用 COMMUNICATION_SERVICES_CONNECTION_STRING 环境变量,以避免在代码中以纯文本形式放入连接字符串。 了解如何管理资源的连接字符串

// This code retrieves your connection string from an environment variable
String connectionString = System.getenv("COMMUNICATION_SERVICES_CONNECTION_STRING");

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

或者,可以使用 Microsoft Entra 身份验证进行身份验证。 使用 DefaultAzureCredentialBuilder 是开始使用 Microsoft Entra ID 的最简单方法。 可以从 Azure 门户中的 Azure 通信服务资源获取源名称。

// You can find your resource name 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();

查找电话号码格式

若要查找号码的国内和国际格式,请从 PhoneNumbersClient 调用 searchOperatorInformation

ArrayList<String> phoneNumbers = new ArrayList<String>();
phoneNumbers.add("<target-phone-number>");

// Use the free number lookup functionality to get number formatting information
OperatorInformationResult formattingResult = phoneNumberClient.searchOperatorInformation(phoneNumbers);
OperatorInformation formattingInfo = formattingResult.getValues().get(0);

<target-phone-number> 替换为要查找的电话号码,通常是要向其发送消息的号码。

警告

以 E.164 国际标准格式提供电话号码,例如 +14255550123。

查找号码的运营商信息

若要搜索电话号码的运营商信息,请从 PhoneNumbersClient 调用 searchOperatorInformationWithResponse,并为 IncludeAdditionalOperatorDetails 选项传递 true

OperatorInformationOptions options = new OperatorInformationOptions();
options.setIncludeAdditionalOperatorDetails(true);
Response<OperatorInformationResult> result = phoneNumberClient.searchOperatorInformationWithResponse(phoneNumbers, options, Context.NONE);
OperatorInformation operatorInfo = result.getValue().getValues().get(0);

警告

使用此功能,帐户会产生一笔费用。

使用运营商信息

现在便可使用运营商信息。 在本快速入门指南中,我们可以将一些详细信息输出到控制台。

首先,可以输出有关号码格式的详细信息。

System.out.println(formattingInfo.getPhoneNumber() + " is formatted "
    + formattingInfo.getInternationalFormat() + " internationally, and "
    + formattingInfo.getNationalFormat() + " nationally");

接下来,可以打印有关电话号码和运营商的详细信息。

String numberType = operatorInfo.getNumberType() == null ? "unknown" : operatorInfo.getNumberType().toString();
String operatorName = "an unknown operator";
if (operatorInfo.getOperatorDetails()!= null && operatorInfo.getOperatorDetails().getName() != null)
{
    operatorName = operatorInfo.getOperatorDetails().getName();
}
System.out.println(operatorInfo.getPhoneNumber() + " is a " + numberType + " number, operated in "
    + operatorInfo.getIsoCountryCode() + " by " + operatorName);

还可以使用运营商信息确定是否发送短信。 有关发送短信的详细信息,请参阅短信快速入门

运行代码

使用以下命令从终端或命令窗口运行应用程序:导航到包含 pom.xml 文件的目录并编译项目。

mvn compile

然后,生成包。

mvn package

使用 mvn 命令执行该应用。

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

示例代码

可以从 GitHub 下载示例应用。

开始使用适用于 Python 的电话号码客户端库来查找电话号码的运营商信息,这些信息可用于确定是否以及如何与该电话号码通信。 按照以下步骤安装包并查找有关电话号码的运营商信息。

注意

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

先决条件

先决条件检查

在终端或命令窗口中,运行 python --version 命令来查看是否安装了 Python。

设置

若要设置用于发送查找查询的环境,请执行以下部分中所述的步骤。

创建新的 Python 应用程序

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

mkdir number-lookup-quickstart && cd number-lookup-quickstart

使用文本编辑器在项目根目录中创建名为 number_lookup_sample.py 的文件,并添加以下代码。 其余快速入门代码将添加到以下部分。

import os
from azure.communication.phonenumbers import PhoneNumbersClient

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

安装包

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

pip install azure-communication-phonenumbers==1.2.0b2

代码示例

对客户端进行身份验证

可使用从 Azure 门户中的 Azure 通信服务资源获取的连接字符串对客户端进行身份验证。 建议使用 COMMUNICATION_SERVICES_CONNECTION_STRING 环境变量,以避免在代码中以纯文本形式放入连接字符串。 了解如何管理资源的连接字符串

# This code retrieves your connection string from an environment variable
connection_string = os.getenv('COMMUNICATION_SERVICES_CONNECTION_STRING')
try:
    phone_numbers_client = PhoneNumbersClient.from_connection_string(connection_string)
except Exception as ex:
    print('Exception:')
    print(ex)

或者,可以使用 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 库后,可以继续对客户端进行身份验证。

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:
    credential = DefaultAzureCredential()
    phone_numbers_client = PhoneNumbersClient(endpoint, credential)
except Exception as ex:
    print('Exception:')
    print(ex)

查找电话号码格式

若要查找号码的国内和国际格式,请从 PhoneNumbersClient 调用 search_operator_information

formatting_results = phone_numbers_client.search_operator_information("<target-phone-number>")

<target-phone-number> 替换为要查找的电话号码,通常是要向其发送消息的号码。

警告

以 E.164 国际标准格式提供电话号码,例如 +14255550123。

查找号码的运营商信息

若要搜索电话号码的运营商信息,请从 PhoneNumbersClient 调用 search_operator_information,并为 include_additional_operator_details 选项传递 True

options = { "include_additional_operator_details": True }
operator_results = phone_numbers_client.search_operator_information("<target-phone-number>", options)

警告

使用此功能,帐户会产生一笔费用。

使用运营商信息

现在便可使用运营商信息。 在本快速入门指南中,我们可以将一些详细信息输出到控制台。

首先,可以输出有关号码格式的详细信息。

formatting_info = formatting_results.values[0]
print(str.format("{0} is formatted {1} internationally, and {2} nationally", formatting_info.phone_number, formatting_info.international_format, formatting_info.national_format))

接下来,可以打印有关电话号码和运营商的详细信息。

operator_information = operator_results.values[0]

number_type = operator_information.number_type if operator_information.number_type else "unknown"
if operator_information.operator_details is None or operator_information.operator_details.name is None:
    operator_name = "an unknown operator"
else:
    operator_name = operator_information.operator_details.name

print(str.format("{0} is a {1} number, operated in {2} by {3}", operator_information.phone_number, number_type, operator_information.iso_country_code, operator_name))

还可以使用运营商信息确定是否发送短信。 有关发送短信的详细信息,请参阅短信快速入门

运行代码

使用 python 命令从终端或命令窗口运行应用程序。

python number_lookup_sample.py

示例代码

可以从 GitHub 下载示例应用。

疑难解答

常见问题:

  • 对环境变量的更改可能不会在正在运行的程序中生效。 如果发现环境变量未按预期工作,请尝试关闭并重新打开用于运行和编辑代码的任何程序。
  • 此终结点返回的数据受各种国际法律和法规的约束,因此结果的准确性取决于多个因素。 这些因素包括号码是否已转网、国家/地区代码和呼叫者的批准状态。 基于上述因素,可能无法获得某些电话号码的运营商信息,或者运营商信息反映的可能是电话号码的原始运营商,而不是当前运营商。

后续步骤

在此快速入门中,你学习了如何:

  • 查找号码格式
  • 查找电话号码的运营商信息