クイックスタート: 電話番号の取得と管理

重要

SMS と PSTN 機能は、使用する電話番号と、Azure の請求先住所によって決まる、運用している国およびリージョンによって異なります。 詳細については、サブスクリプションの資格に関するドキュメントを参照してください。

重要

大量に注文する場合や、必要な電話番号が利用できない場合は、こちらのページを参照してください。

前提条件

電話番号を取得する

番号のプロビジョニングを開始するには、Azure portal で Communication Services リソースに移動します。

Communication Services リソースのメイン ページを示すスクリーンショット。

利用可能な電話番号を検索する

リソース メニューで [Phone Numbers](電話番号) ブレードに移動します。

Communication Services リソースの電話のページを示すスクリーンショット。

[Get](取得) ボタンをクリックしてウィザードを起動します。 [Phone numbers](電話番号) ブレードのウィザードでは、自分のシナリオに最適な電話番号を選択するのに役立つ一連の質問が表示されます。

まず、電話番号をプロビジョニングする [Country/region](国/地域) を選択する必要があります。 国または地域を選択したら、自分のニーズに最も適した [Use case](ユース ケース) を選択する必要があります。

[Get phone numbers]\(電話番号の取得\) ビューを示すスクリーンショット。

電話番号の機能を選択する

電話番号を構成する手順は、2 つに分けられます。

  1. 番号の種類の選択
  2. 番号機能の選択

電話番号は、ローカル無料電話番号の 2 種類から選択できます。 番号の種類を選択したら、機能を選択することができます。

この例では、 [発信][SMS の送受信] 機能を使用して、 [無料電話番号] の番号タイプを選択しました。

機能の選択ビューのスクリーンショット。

ここで、ページの下部にある [Next: Numbers](次へ: 番号) ボタンをクリックして、プロビジョニングする電話番号をカスタマイズします。

電話番号をカスタマイズする

[Numbers](番号) ページで、プロビジョニングする電話番号をカスタマイズします。

[Numbers]\(番号\) ページを示すスクリーンショット。

Note

このクイックスタートでは、番号の種類が [Toll-free](無料電話番号) のカスタマイズ フローを示しています。 番号の種類として [ローカル] を選択した場合は操作が多少異なる場合がありますが、最終的な結果は同じになります。

利用可能な市外局番の一覧から市外局番を選択し、プロビジョニングする数量を入力した後、 [Search](検索) をクリックして、選択した要件を満たす番号を見つけます。 自分のニーズに合った電話番号が月額料金と共に表示されます。

予約済み番号が表示された番号の選択ページを示すスクリーンショット。

Note

使用できるかどうかは、選択した番号の種類、場所、機能によって異なります。 トランザクションが期限切れになるまでの短い間、番号は予約されています。 トランザクションの期限が切れた場合は、番号を再選択する必要があります。

購入の概要を表示して注文を行うには、ページの下部にある [Next: Summary](次へ: 概要) ボタンをクリックします。

電話番号を購入する

概要ページでは、番号の種類、機能、電話番号、および総月額料金を確認して、電話番号をプロビジョニングします。

Note

表示される料金は、毎月の定期的な料金で、選択した電話番号をリースするコストがカバーされています。 このビューに含まれていないのは従量課金制のコストで、通話の発信または受信時に発生します。 価格表は、こちらをご覧ください。 これらのコストは、番号の種類と通話先によって異なります。 たとえば、シアトルの地域番号からニューヨークの地域番号への通話と同じ番号から英国の携帯電話番号への通話では、分単位の料金が異なる場合があります。

最後に、ページの下部にある [Place order](注文) をクリックして確定します。

番号の種類、機能、電話番号、総月額料金が表示された概要ページを示すスクリーンショット。

Azure portal で電話番号を検索する

Azure portal で、Azure Communication Services リソースに移動します。

Communication Services リソースのメイン ページを示すスクリーンショット。

メニューの [Phone Numbers](電話番号) ブレードを選択して、電話番号を管理します。

Communication Services リソースの電話番号のページを示すスクリーンショット。

Note

プロビジョニングされた番号がこのページに表示されるまでに数分かかる場合があります。

電話番号機能を更新する

[Phone Numbers](電話番号) ページで、電話番号を選択してその構成を行うことができます。

機能の更新ページのスクリーンショット。

目的の機能をオプションから選択し、 [Save](保存) をクリックして選択内容を適用します。

電話番号を解放する

電話番号は、 [Numbers](番号) ページで解放できます。

電話番号の解放ページを示すスクリーンショット。

解放する電話番号を選択し、 [Release](解放) ボタンをクリックします。

重要

Azure Communication Services のこの機能は、現在プレビュー段階にあります。

プレビューの API と SDK は、サービス レベル アグリーメントなしに提供されます。 運用環境のワークロードには使用しないことをお勧めします。 一部の機能はサポート対象ではなく、機能が制限されることがあります。

詳細については、「Microsoft Azure プレビューの追加利用規約」を確認してください。

Azure Communication Services では、電話番号を購入するための新しいユーザー エクスペリエンスを導入しています。 現在、このエクスペリエンスはフライト化されている段階であり、Azure portal で電話番号を購入する際にこのエクスペリエンスの紹介があるかもしれません。 このエクスペリエンスに関するフィードバックがある場合は、Azure portal 拡張機能の [フィードバックの送信] ボタンからご遠慮なくお寄せください。

前提条件

電話番号を購入する

  1. Azure portal の Communication Service リソースに移動します。

    Communication Services リソースのメイン ページを示すスクリーンショット。

  2. Communication Services リソースの概要で、左側のメニューの [電話番号] オプションを選択します。

    Communication Services リソースの電話番号ページを示すスクリーンショット。

  3. ページの左上にある [取得] を選択して、電話番号を購入します。 これを選択すると、ショッピング ウィザードが起動します:

    電話番号ショッピング カートの検索ウィザードを示すスクリーンショット。

  4. 電話番号をプロビジョニングする [国または地域] を選択します。 利用可能な国は、Azure サブスクリプションの請求先の場所に基づいています。 各国で利用可能な番号の詳細については、こちらをご覧ください。 次に、番号の種類を選択します。 電話番号は、ローカル無料電話番号の 2 種類から選択できます。

  5. [検索] を選択して、選択した条件に一致する番号を取得します。 ニーズに合った番号を検索するためのさまざまなフィルターがあります。以下に例を示します。

    • ユース ケース: これは、この番号を使用して、アプリケーションから (A2P) と人間のエージェントから (P2P) のどちらから呼び出すかを決定する際に使用します。
    • 通話: これは、電話番号に必要な通話機能 (通話の発信や通話の受信) を決定する際に使用します。
    • SMS: これは、電話番号に必要な SMS 機能 (SMS メッセージの送受信) を決定する際い使用します。
    • カスタム: カスタム フィルターを追加して、電話番号の特定のプレフィックスまたは一連の数字を取得することもできます。

    使用可能な電話番号が表示された電話番号の購入ページを示すスクリーンショット。

  6. ご希望の電話番号 (複数可) が見つかったら、[Add to cart] (カートに追加) を選択して、[テレフォニー] カートにその番号を入れておきます。 これらの番号は、カートが自動的にクリアされるまで 16 分間保持されます。

    カートに 2 つの電話番号が入っている電話番号ショッピング カートを示すスクリーンショット。

    Note

    表示される料金は、毎月の定期的な料金で、選択した電話番号をリースするコストがカバーされています。 このビューに含まれていないのは従量課金制のコストで、通話の発信または受信時に発生します。 価格表は、こちらをご覧ください。 これらのコストは、番号の種類と通話先によって異なります。 たとえば、シアトルの地域番号からニューヨークの地域番号への通話と同じ番号から英国の携帯電話番号への通話では、分単位の料金が異なる場合があります。

  7. [次へ] を選択して、購入内容を確認します。 購入を完了するには、[今すぐ購入] を選択します。

    2 つの電話番号の確認と購入を示すスクリーンショット。

  8. 購入した番号は [Phone numbers] (電話番号) ページで確認できます。 番号がプロビジョニングされるまでに数分かかる場合があります。

    新しく購入した電話番号が赤い枠線のボックスで示された電話番号ページのスクリーンショット。

電話番号機能を更新する

[Phone Numbers](電話番号) ページで、電話番号を選択してその構成を行うことができます。

機能の更新ページのスクリーンショット。

使用可能なオプションから目的の機能を選択し、[保存] を選択して選択内容を適用します。

電話番号を解放する

電話番号は、 [Numbers](番号) ページで解放できます。

電話番号の解放ページを示すスクリーンショット。

解放する電話番号を選択し、[Release] (解放) ボタンを選択します。

前提条件

設定

拡張機能の追加

az extension コマンドを使用して、Azure CLI の Azure Communication Services 拡張機能を追加します。

az extension add --name communication

Azure CLI へのサインイン

Azure CLI にサインインする必要があります。 ターミナルから az login コマンドを実行し、資格情報を入力してサインインできます。

操作

購入した電話番号を一覧表示する

次のコマンドを実行して、購入した電話番号をすべて取得します。

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

コードで次の置き換えを行います。

  • <yourConnectionString> を対象の接続文字列に置き換えてください。

購入した電話番号の詳細を取得する

次のコマンドを実行して、購入した電話番号の詳細を取得します。

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

コードを次のように置き換えます。

  • <purchasedPhoneNumber> を Communication Services リソースに関連付けられている電話番号で置き換えます。
  • <yourConnectionString> を対象の接続文字列に置き換えてください。

Note

Azure CLI オプションは、電話番号の列挙と表示にのみ機能を提供します。 電話番号の検索、購入、編集、リリースなど、他の操作はサポートされていません。

(省略可能) 接続文字列を渡さずに Azure CLI の電話番号操作を使用する

--connection_string を使用して接続文字列を渡すことなく Azure CLI の電話番号操作を使用できるように、AZURE_COMMUNICATION_CONNECTION_STRING 環境変数を構成できます。 環境変数を構成するには、コンソール ウィンドウを開き、以下のタブからお使いのオペレーティン グシステムを選択します。 <yourConnectionString> は、実際の接続文字列に置き換えてください。

コンソール ウィンドウを開き、次のコマンドを入力します。

setx AZURE_COMMUNICATION_CONNECTION_STRING "<yourConnectionString>"

実行中のプログラムのうち、環境変数の読み取りを必要とするプログラム (コンソール ウィンドウを含む) については、環境変数を追加した後で再起動が必要となる場合があります。 たとえば、Visual Studio をエディターとして使用している場合、サンプルを実行する前に Visual Studio を再起動します。

Note

このクイックスタートの最終的なコードは GitHub にあります

前提条件

前提条件のチェック

  • ターミナルまたはコマンド ウィンドウで dotnet コマンドを実行して、.NET クライアント ライブラリがインストールされていることを確認します。

設定

新しい C# アプリケーションを作成する

コンソール ウィンドウ (cmd、PowerShell、Bash など) で、dotnet new コマンドを使用し、PhoneNumbersQuickstart という名前で新しいコンソール アプリを作成します。 このコマンドにより、1 つのソース ファイルを使用する単純な "Hello World" C# プロジェクトが作成されます。Program.cs

dotnet new console -o PhoneNumbersQuickstart

新しく作成したアプリ フォルダーにディレクトリを変更し、dotnet build コマンドを使用してアプリケーションをコンパイルします。

cd PhoneNumbersQuickstart
dotnet build

パッケージをインストールする

まだアプリケーション ディレクトリにいる間に、dotnet add package コマンドを使用して、.NET 用の Azure Communication PhoneNumbers クライアント ライブラリ パッケージをインストールします。

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

using の先頭に using ディレクティブを追加して名前空間をインクルードします。

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

Main の関数シグネチャを非同期となるように更新します。

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

クライアントを認証する

Phone Number クライアントは、Azure portal で Azure Communication Services リソースから取得した接続文字列を使用して認証できます。

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

Phone Number クライアントには 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 からダウンロードできます

Note

このクイックスタートの最終的なコードは 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

"generate" タスクによって、artifactId と同じ名前のディレクトリが作成されたことがわかります。 このディレクトリの下の src/main/java ディレクトリにはプロジェクトのソース コードが含まれており、 src/test/java directory にはテスト ソースが含まれており、pom.xml ファイルはプロジェクトのプロジェクト オブジェクト モデル (POM) です。

パッケージをインストールする

テキスト エディターで pom.xml ファイルを開きます。 依存関係のグループに、次の dependency 要素を追加します。

<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
    }
}

Phone Numbers クライアントを認証する

Microsoft Entra 認証を使用するには PhoneNumberClientBuilder を有効にします

// 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

Note

このクイックスタートの最終的なコードは 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 Communication Services 管理クライアント ライブラリ パッケージをインストールします。

pip install azure-communication-phonenumbers

Phone Numbers クライアントを認証する

Microsoft Entra 認証を使用するには PhoneNumbersClient を有効にします。 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

Note

このクイックスタートの最終的なコードは 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 Communication Services Phone Numbers クライアント ライブラリをインストールします。

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

--save オプションを使用すると、--save ファイル内の依存関係としてライブラリが追加されます。

クライアントを認証する

クライアント ライブラリから 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 コマンドを使用して、node ファイルに追加したコードを実行します。

node phone-numbers-quickstart.js

トラブルシューティング

一般的な質問と問題:

  • 電話番号をリリースしても、請求期間が終了するまでは、その電話番号が Azure portal の ACS リソースに表示されます。 また、請求期間が終了するまで、再購入することはできません。

  • Communication Services リソースが削除されると同時に、そのリソースに関連付けられている電話番号が自動的にリリースされます。

次のステップ

このクイックスタートでは、次の方法について学習しました。

  • 電話番号を購入する
  • 電話番号を管理する
  • 電話番号をリリースする
  • 無料の確認アプリケーションを送信する (必要な場合は参照)