Python 用 Azure Communication Phone Numbers パッケージ クライアント ライブラリ - バージョン 1.1.0

Azure Communication Phone Numbers クライアント パッケージは、電話番号の管理に使用されます。

免責事項

Python 2.7 の Azure SDK Python パッケージのサポートは、2022 年 1 月 1 日に終了しました。 詳細と質問については、https://github.com/Azure/azure-sdk-for-python/issues/20691 を参照してください

作業の開始

前提条件

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

pip を使用して Python 用の Azure Communication Phone Numbers クライアント ライブラリをインストールします。

pip install azure-communication-phonenumbers

主要な概念

この SDK には、管理と数値を簡単に管理 direct offer する機能が direct routing 用意されています。

番号には direct offer 、地理的な番号と無料の 2 種類があります。 地理的な電話プランは、電話番号のエリア コードが地理的な場所のエリア コードに関連付けられている場所に関連付けられている電話プランです。 Toll-Free電話プランは、電話プランに関連付けられていない場所です。 たとえば、米国では、フリーダイヤル番号に 800 や 888 などの市域コードを付けることができます。 これらは、 を使用して管理されます。 PhoneNumbersClient

この direct routing 機能により、既存のテレフォニー インフラストラクチャを ACS に接続できます。 構成は、 を SipRoutingClient使用して管理されます。この方法では、テレフォニー サブネットの呼び出しを適切に処理するために、SIP トランクと音声ルーティング規則を設定する方法が提供されます。

クライアントの初期化

クライアントは、AAD 認証を使用して初期化できます。

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

endpoint = "https://<RESOURCE_NAME>.communication.azure.com"
# To use Azure Active Directory Authentication (DefaultAzureCredential) make sure to have your
# AZURE_TENANT_ID, AZURE_CLIENT_ID and AZURE_CLIENT_SECRET as env variables.
phone_numbers_client = PhoneNumbersClient(endpoint, DefaultAzureCredential())
import os
from azure.communication.phonenumbers.siprouting import SipRoutingClient
from azure.identity import DefaultAzureCredential

endpoint = "https://<RESOURCE_NAME>.communication.azure.com"
# To use Azure Active Directory Authentication (DefaultAzureCredential) make sure to have your
# AZURE_TENANT_ID, AZURE_CLIENT_ID and AZURE_CLIENT_SECRET as env variables.
sip_routing_client = SipRoutingClient(endpoint, DefaultAzureCredential())

もう 1 つのオプションは、リソースの接続文字列を使用してクライアントを初期化することです。

# You can find your connection string from your resource in the Azure Portal
import os
from azure.communication.phonenumbers import PhoneNumbersClient

connection_str = "endpoint=ENDPOINT;accessKey=KEY"
phone_numbers_client = PhoneNumbersClient.from_connection_string(connection_str)
# You can find your connection string from your resource in the Azure Portal
import os
from azure.communication.phonenumbers.siprouting import SipRoutingClient

connection_str = "endpoint=ENDPOINT;accessKey=KEY"
sip_routing_client = SipRoutingClient.from_connection_string(connection_str)

電話番号クライアント

電話番号の種類の概要

電話番号には 2 種類があります。地理的および無料。 地理的な電話番号は、地域コードが地理的な場所のエリア コードに関連付けられている場所に関連付けられている電話番号です。 Toll-Free電話番号は、場所が関連付けられていない電話番号です。 たとえば、米国では、フリーダイヤル番号に 800 や 888 などの市域コードを付けることができます。

番号の検索と購入とリリース

電話番号は、エリア コード、電話番号の数量、アプリケーションの種類、電話番号の種類、機能を提供することで、検索作成 API を使用して検索できます。 指定された電話番号の数量は 10 分間予約され、この時間内に購入できます。 検索が購入されていない場合、電話番号は 10 分後に他のユーザーが利用できるようになります。 検索が購入されると、Azure リソースの電話番号が取得されます。

電話番号は、リリース API を使用してリリースすることもできます。

SIP ルーティング クライアント

ダイレクト ルーティング機能を使用すると、顧客が提供するテレフォニー インフラストラクチャを Azure Communication Resources に接続できます。 ルーティング構成を適切に設定するには、お客様が呼び出しの SIP トランク構成と SIP ルーティング規則を指定する必要があります。 SIP ルーティング クライアントは、この構成を設定するために必要なインターフェイスを提供します。

呼び出しが行われると、システムは宛先番号と定義されたルートの正規表現番号パターンとの照合を試みます。 番号に一致する最初のルートが選択されます。 正規表現一致の順序は、構成内のルートの順序と同じであるため、ルートの順序が重要です。 ルートが一致すると、呼び出しはルートのトランク リストの最初のトランクにルーティングされます。 トランクが使用できない場合は、リスト内の次のトランクが選択されます。

PhoneNumbersClient

購入したすべての電話番号を取得する

購入したすべての電話番号を一覧表示します

purchased_phone_numbers = phone_numbers_client.list_purchased_phone_numbers()
for acquired_phone_number in purchased_phone_numbers:
    print(acquired_phone_number.phone_number)

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

指定した電話番号から情報を取得します

result = phone_numbers_client.get_purchased_phone_number("<phone number>")
print(result.country_code)
print(result.phone_number)

実行時間の長い操作

電話番号クライアントは、以下に示す機能に対する不定なポーリング時間を可能にする、実行時間の長いさまざまな操作をサポートしています。

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

取得する電話番号の機能、電話番号の種類、割り当ての種類、国コードを指定することで、使用可能な電話番号を検索できます。 フリーダイヤルの電話番号の種類については、エリア コードが省略可能であることを証明することに言及する価値があります。 その後、検索の結果を使用して、対応する API で番号を購入できます。

capabilities = PhoneNumberCapabilities(
        calling = PhoneNumberCapabilityType.INBOUND,
        sms = PhoneNumberCapabilityType.INBOUND_OUTBOUND
    )
poller = phone_numbers_client.begin_search_available_phone_numbers(
    "US",
    PhoneNumberType.TOLL_FREE,
    PhoneNumberAssignmentType.APPLICATION,
    capabilities,
    area_code ="833", # Area code is optional for toll-free numbers
    quantity = 2, # Quantity is optional. If not set, default is 1
    polling = True
)
search_result = poller.result()

電話番号を購入する

検索の結果を使用して、指定した電話番号を購入できます。 これを行うには、検索応答から購入電話番号 API に を渡します search_id

purchase_poller = phone_numbers_client.begin_purchase_phone_numbers(
    search_result.search_id,
    polling=True
)

電話番号を解放する

取得した電話番号を解放します。

poller = self.phone_number_client.begin_release_phone_number(
    "<phone number>",
    polling = True
)

電話番号機能の更新

通話と SMS の指定した電話番号機能を次のいずれかに更新します。

  • PhoneNumberCapabilityType.NONE
  • PhoneNumberCapabilityType.INBOUND
  • PhoneNumberCapabilityType.OUTBOUND
  • PhoneNumberCapabilityType.INBOUND_OUTBOUND
poller = self.phone_number_client.begin_update_phone_number_capabilities(
    "<phone number>",
    PhoneNumberCapabilityType.OUTBOUND,
    PhoneNumberCapabilityType.INBOUND_OUTBOUND,
    polling = True
)

SipRoutingClient

SIP トランクとルートを取得する

現在構成されているトランクまたはルートの一覧を取得します。

trunks = sip_routing_client.list_trunks()
for trunk in trunks:
    print(trunk.fqdn)
    print(trunk.sip_signaling_port)
routes = sip_routing_client.list_routes()
for route in routes:
    print(route.name)
    print(route.description)
    print(route.number_pattern)
    for trunk_fqdn in route.trunks:
        print(trunk_fqdn)

SIP トランクとルートを置き換える

現在構成されているトランクまたはルートの一覧を新しい値に置き換えます。

new_trunks = [SipTrunk(fqdn="sbs1.contoso.com", sip_signaling_port=1122), SipTrunk(fqdn="sbs2.contoso.com", sip_signaling_port=1123)]
new_routes = [SipTrunkRoute(name="First rule", description="Handle numbers starting with '+123'", number_pattern="\+123[0-9]+", trunks=["sbs1.sipconfigtest.com"])]
sip_routing_client.set_trunks(new_trunks)
sip_routing_client.set_routes(new_routes)

単一トランクを取得する

trunk = sip_routing_client.get_trunk("sbs1.contoso.com")

1 つのトランクを設定する

# Set function will either modify existing item or add new item to the collection.
# The trunk is matched based on it's FQDN.
new_trunk = SipTrunk(fqdn="sbs3.contoso.com", sip_signaling_port=5555)
sip_routing_client.set_trunk(new_trunk)

1 つのトランクを削除する

sip_routing_client.delete_trunk("sbs1.contoso.com")

トラブルシューティング

電話番号管理クライアントは、 Azure Core で定義されている例外を発生させます。

次のステップ

その他のサンプル コード

このライブラリの使用方法の詳細な例については、 サンプル ディレクトリを参照してください。

フィードバックの提供

バグが発生した場合、または提案がある場合は、プロジェクトの [問題 ] セクションに問題を報告してください

共同作成

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、 https://cla.microsoft.com を参照してください。

pull request を送信すると、CLA を提供して PR (ラベル、コメントなど) を適宜装飾する必要があるかどうかを CLA ボットが自動的に決定します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。