Skip to content

Amazon Connectの電話番号がAPIで取得できるようになったのでさっそく試してみました

promotion image
  • テレフォニー

📅 2022-04-25

2022年04月22日にAmazon Connectの電話番号がAPIで取得できるようになりました。
リリースはこちらの記事です。

これまでは、電話番号を追加する際には管理画面やサポートケース画面からの手動操作が必須となっておりましたが、今回のアップデートによって電話番号の取得が自動化できるようになります。

大量の電話番号を利用するケースや、番号の取得→破棄のサイクルを頻繁に回すユースケースにおいては有用となりますし、例えばAmazon Connectを利用したIVRサービスを提供するようなマルチテナントサービスでも活用できるのではないでしょうか。

2022/4/28に日本における番号取得APIの利用条件を追記しました。

APIの概要

今回追加された主要なAPIは下記です。

SearchAvailablePhoneNumbers

インスタンスで利用可能な電話番号を、「国コード」と「電話番号のタイプ(DID or TOLL_FREE)」で検索することができます。

search-available-phone-numbersのCLI

ClaimPhoneNumber

指定した電話番号をインスタンスに追加(取得)します。

claim-phone-numberのCLI

やってみた

すでに日本の電話番号を取得している環境

まずはsearch-available-phone-numbersで利用可能な電話番号のリストを取得します。

レスポンスまでの時間が非常に長いです。また、1回しか実行していないですが結構な頻度で下記のTooManyRequestsExceptionになります。

An error occurred (TooManyRequestsException) when calling the SearchAvailablePhoneNumbers operation (reached max retries: 2): Too Many Requests

ippei@macbook-air Desktop % aws connect  search-available-phone-numbers  --target-arn arn:aws:connect:ap-northeast-1:309574544641:instance/214ec9fb-410c-4ab9-a1b5-7f1185d4e3db --phone-number-country-code JP --phone-number-type DID
{
    "AvailableNumbersList": [
        {
            "PhoneNumber": "+81342330739",
            "PhoneNumberCountryCode": "JP",
            "PhoneNumberType": "DID"
        },
        {
            "PhoneNumber": "+81345663169",
            "PhoneNumberCountryCode": "JP",
            "PhoneNumberType": "DID"
        },

    【以下略】

ちなみに取得した番号のリストをカウントするとなんと967番号もありました。すごい多い!
ちょっと期待していましたが、下4桁ゾロ目はありませんでした。残念。

では続いて適当に番号を取得してみます。

インスタンスには050の電話番号が1番号登録されている状態から開始します。

claim-phone-number-before

取得する電話番号は、唯一999が存在する、「+81363879990」にしました。
Amazon Connectの管理画面からも取得可能な番号であることが確認できます。

claim-phone-number-confirm

claim-phone-numberはすぐにレスポンスが返ってきます。

ippei@macbook-air Desktop % aws connect claim-phone-number --target-arn arn:aws:connect:ap-northeast-1:309574544641:instance/214ec9fb-410c-4ab9-a1b5-7f1185d4e3db --phone-number +81363879990
{
    "PhoneNumberId": "12ebbaf7-8103-44b5-86de-65c412014381",
    "PhoneNumberArn": "arn:aws:connect:ap-northeast-1:309574544641:phone-number/12ebbaf7-8103-44b5-86de-65c412014381"
}

管理画面を見ると「+81363879990」が追加されていました!

claim-phone-number-after

完全新規インスタンス

インスタンスを作成し、必要な書類を提出せず電話番号も取得していない新規インスタンスでも試してみます。

すると、search-available-phone-numbersで空の配列が返ってきました。
利用可能な電話番号はないということですね。

[cloudshell-user@ip-10-0-17-50 tmp]$ aws connect search-available-phone-numbers --target-arn arn:aws:connect:ap-northeast-1:713462715597:instance/945ad2b3-bc0e-4689-8ac3-43aa0945c608 --phone-number-country-code JP --phone-number-type DID
{
    "AvailableNumbersList": []
}

また、別のインスタンスで取得した利用可能な電話番号のリストにある番号をclaim-phone-numberで取得しようとすると、Phone number not foundとなりエラーが返ってきます。

[cloudshell-user@ip-10-0-17-50 tmp]$ aws connect claim-phone-number --target-arn arn:aws:connect:ap-northeast-1:713462715597:instance/945ad2b3-bc0e-4689-8ac3-43aa0945c608 --phone-number +81363879955
An error occurred (ResourceNotFoundException) when calling the ClaimPhoneNumber operation: Phone number not found: +81363879955

ドキュメントに記載のある日本の電話番号取得要件を満たさないと、日本の電話番号についてはAPIを利用できないということがわかりました。

ちなみに、この新規インスタンスでも、書類の申請を取得しなくてもよい香港やオーストラリアやアメリカなどの電話番号はAPIで取得可能です。

日本における番号取得APIの利用条件

2022/04/28 に更新

日本の電話番号を取得する場合、AWSへ申請書類を提出する必要がありますが、この電話番号APIにおいても同じく必要です。

電話番号申請要件はこちらを参照ください。

AWSサポートに仕様について問い合わせを行い、情報をまとめました。

  • 電話番号APIを利用する場合も、これまでと同様に申請書類を提出する必要があります。
  • 必要書類が受理された後は、「インスタンスあたりの電話番号数」の上限値までAPIで取得することができます。
  • 上記以外の日本特有の制限はなありません。

上記の仕様があるため、新規インスタンスではAPIが利用できなかったということですね。

【おまけ】リリースした電話番号はすぐに取得可能?

記事の中で「+81363879990」を取得しましたが、番号をリリース(削除)した後にまた同じ番号を利用可能かが気になったので調べてみました。

まずはリリース前にsearch-available-phone-numbersを再度実行し、「+81363879990」がリストに無いことを確認しました。

管理画面から番号をリリースします。

claim-phone-number-delete

その後すぐにsearch-available-phone-numbersを実行した結果、(5回ほどエラーでしたが)利用可能な番号リストにありませんでした。

ですので、これまでと同様に誤って消さないように注意しましょう。

まとめ

  • Amazon Connectで電話番号がAPIで取得できるようになりました。
  • ただし、これまでと同様に日本の電話番号については必要書類の提出を行わないとAPIを利用できません。
  • APIから電話番号を取得できるため、自動化ができます!

参考文献

← PrevNext →
  • produced by GeekFeed
  • produced by GeekFeed