Twilioサブアカウントの使用にあたり把握しておくべきこと

February 24, 2021
執筆者
レビュー担当者
Liz Moy
Twilion

本投稿では、サブアカウントを使用するメリットと、サブアカウントを介してメッセージを送信する方法について説明します。サブアカウントを使用すると、メインアカウントと残高を共有しながら、使用状況、番号、設定を区分できます。これは、Twilioの使用量を区分するのに最適な方法です。  

本投稿で扱う主な項目は次のとおりです。

  • 技術要件
  • Twilioサブアカウントとは?それらを使用すべき理由は?
  • サブアカウントを使用したメッセージの送信

 

技術要件

  • 無料のTwilioアカウント - こちらのリンクからご登録いただくと、アップグレード時に$10の追加クレジットを差し上げます。
  • Twilio電話番号。
  • 認証済みの携帯電話番号(SMSメッセージの受信用)。
  • REST APIリクエストの送信に関する知識。ここでは、bashやzshからcURLを実行したり、Postmanなどのツールを使用したりする際に役立つヒントを紹介します。

Twilioサブアカウントとは?それらを使用すべき理由は?

サブアカウントは、Twilioプロジェクト(親)に属するリソースを分離するコンテナです。たとえば、架空の会社Owlie Notificationsについて考えてみましょう。Owlie Notificationsは、顧客が電話をかけることのできるSaaSプラットフォームを提供しています。Owlie Notificationsは約50件の顧客を抱えています。

Owlie NotificationsがTwilioアカウント構造を作成する際には、以下の2つの選択肢があります。

  1. Twilioアカウントを作成します。これはアカウントに固有のアカウントSIDと呼ばれる識別子(必ず「AC」が先頭に追加される)に関連付けられます。Owlie NotificationsがAPIリクエストを行う際には、必ずそのアカウントのアカウントSIDを使用します。たとえば、アカウントSIDはAC123などとなります。
  2. 選択肢1と同じ方法でTwilioアカウント(アカウントSID = AC123、親アカウント)を作成しますが、50件の顧客のそれぞれについて、サブアカウントも作成します。50件の各サブアカウントに、固有のアカウントSIDが割り当てられます。そのため、Owlie Notificationsが顧客のAPIリクエストを行う場合、親アカウントのアカウントSIDではなく、該当するサブアカウントのアカウントSIDが使用されます。

選択肢2を選ぶのが最適な理由をご説明します。

サブアカウントの主なメリット

請求プロセスを区分できる 

Owlie Notificationsがサブアカウントを使用しないことを選択した場合、各顧客の使用状況をすべて追跡する必要があります。これには余計な手間がかかり、ミスをする可能性もあります。サブアカウントはコンテナとして機能するため、Twilio Usage APIを使用してサブアカウントの特定の請求データを取得できます。そのため、個々の顧客の追跡に必要なビジネスロジックを減らすことができます。

リソースのプロビジョニングが可能

サブアカウントを使用すると、リソース(電話番号など)を特定のサブアカウントに追加できます。ただし、ほとんどのリソースは同時に1つのサブアカウントにしか所属できません。アカウント間で常に番号を移動している場合、これは悩ましい問題です。たとえば、あるサブアカウントを閉じても電話番号は保持したい場合には、このロジックを処理する必要があります。幸い、Twilioを使用するとアカウント間で電話番号を移動できます。

同じプロジェクトの複数アカウントの管理を強化: サブアカウントを使用すると、顧客のニーズに基づいてサブアカウントを一時停止、閉鎖、再アクティブ化することが可能です。

サブアカウントへ移行する前の考慮事項

Twilioを使用してメッセージを送信しているお客様にとって、Twilioは、エンドユーザーがメッセージにSTOPと返信した場合など、顧客のオプトアウトを管理するのに役立ちます。Twilioでは、このオプトアウトリストをアカウントレベルで管理できます。

つまり、エンドユーザーが電話番号に対してSTOPと返信し、その電話番号がプロジェクトから(一意のアカウントSIDを持つ)サブアカウントへ移動されていた場合、そのオプトアウトのマッピングは壊れてしまうということです。オプトアウトを追跡していない場合は今すぐ開始し、最新の購読者リストを入手しましょう。

サブアカウントを使用したメッセージの送信

「サブアカウントをまだ使用していない場合はどうすればよいのだろう。移行はどの程度難しいのか?」とお考えかもしれません。

Owlie Notificationsが50件すべての顧客に対して1つのアカウントを使用していたとします。現在、SMSメッセージを送信したい顧客がいます。Owlie Notificationsが実行する必要がある可能性の高い手順は、次のとおりです。

これをプログラムで行うにはサブアカウントREST APIを使用しますが、必要に応じてサーバー側ヘルパーライブラリーを使用することもできます。

まず、Twilio Consoleにログインします。アカウントに割り当てられたアカウントSID認証トークンの値がダッシュボードに表示されます。

コンソールのTwilioアカウントSIDと認証トークン

以下の例では、作成またはコピーしたTwilioアカウントのアカウントSID認証トークンを使用します。以下のすべてのプレースホルダーについて、これらを置き換えてください。

サブアカウントの作成

引き続き、Owlie Notificationsの顧客(Falcon Flights)のサブアカウントを作成しましょう。

リクエスト

ターミナルまたはコマンドプロンプトで次のコマンドを実行し、リクエストを作成します。プレースホルダー値を親アカウントのアカウントSIDと認証トークンに置き換えてください。

curl -X POST https://api.twilio.com/2010-04-01/Accounts.json \
--data-urlencode "FriendlyName=FalconFlights
" \
-u <INSERT YOUR PARENT ACCOUNT SID>:<INSERT YOUR PARENT AUTH TOKEN>

レスポンス

コマンドを実行すると、次のようなレスポンスが表示されます。

{
   "status": "active",
   "date_updated": "Wed, 17 Feb 2021 15:12:01 +0000",
   "auth_token": "ACxxxxx",
   "friendly_name": "FalconFlights",
   "owner_account_sid": "ACxxxx",
   "uri": "/2010-04-01/Accounts/ACxxx.json",
   "sid": "ACxxx
",
   "date_created": "Wed, 17 Feb 2021 15:12:01 +0000",
   "type": "Full",
   "subresource_uris": {
...
   }
}

このレスポンスには、いくつかの重要な情報が含まれています。

独自のアカウントSIDと認証トークンを持つ、FalconFlightsという名前の新しいアカウントがあります。

owner_account_sidは、プロジェクト(親)アカウントのSID(Owlie Notifications)と一致している必要があります。

後で使用できるように、サブアカウントのアカウントSIDと認証トークンを追跡してください。

電話番号の転送

先ほど、電話番号を転送する場合について説明しました。ここではその方法を説明します。Twilio電話番号をお持ちでない場合は、Twilio ConsoleまたはREST APIから1つ購入できます。

親アカウントとサブアカウントの間でTwilio電話番号の転送を開始するには、Consoleの[Active Numbers](アクティブな番号)セクションに移動します。番号をクリックすると、設定オプションが表示されます。

ここにはお使いの電話番号SID(PNxxx)が記載されています。

Twilioで電話番号のIDを見つける

リクエスト

親アカウントが電話番号を所有しているため、ヘッダーには親アカウントのSIDを使用することが重要です。

ターミナルで次のコマンドを実行します。

curl -X POST https://api.twilio.com/2010-04-01/Accounts/<INSERT PARENT ACCOUNT SID>/IncomingPhoneNumbers/<INSERT PHONE NUMBER SID>.json \
--data-urlencode "AccountSid=<INSERT SUBACCOUNT SID>" \
-u <INSERT YOUR PARENT ACCOUNT SID>:<INSERT YOUR PARENT AUTH TOKEN>

電話番号を別のアカウントに移動すると、音声とSMSのURLが保持される点に注意してください。

レスポンス

{
    "sid": "PNxxx",
    "account_sid": "ACxxx",
    "friendly_name": "(415) 874-0103",
    "phone_number": "+14158740103",
    "voice_url": "https://demo.twilio.com/welcome/voice/",
    "voice_method": "POST",
    "voice_fallback_url": null,
    "voice_fallback_method": "POST",
    "voice_caller_id_lookup": false,
    "date_created": "Wed, 17 Feb 2021 15:17:28 +0000",
    "date_updated": "Wed, 17 Feb 2021 15:23:39 +0000",
    "sms_url": "https://demo.twilio.com/welcome/sms/reply",
    "sms_method": "POST",
    "sms_fallback_url": "",
    "sms_fallback_method": "POST",
    "address_requirements": "none",
    "beta": false,
    "capabilities": {
        "voice": true,
        "sms": true,
        "mms": true,
        "fax": true
    },
    "voice_receive_mode": "voice",
    "status_callback": "",
    "status_callback_method": "POST",
    "api_version": "2010-04-01",
    "voice_application_sid": null,
    "sms_application_sid": "",
    "origin": "twilio",
    "trunk_sid": null,
    "emergency_status": "Inactive",
    "emergency_address_sid": null,
    "address_sid": null,
    "identity_sid": null,
    "bundle_sid": null,
    "uri": "/2010-04-01/Accounts/AC1bcc67e32e161e04aaacc159b2e86601/IncomingPhoneNumbers/PNd7c52583c2ffabfe2a05a165e48e3e68.json",
    "status": "in-use"
}

メッセージングサービスを作成する

新たに作成したサブアカウントでメッセージングサービスを作成します。メッセージングサービスは電話番号のコンテナとして機能するリソースであり、大規模なメッセージ送信を簡素化するソフトウェアを提供します。

このリクエストでは、サブアカウントに関連付けられたアカウントSIDと認証トークンを使用します。

リクエスト

curl -X POST https://messaging.twilio.com/v1/Services \
--data-urlencode "FriendlyName=falconFlightNotifications" \
-u <INSERT YOUR SUBACCOUNT SID>:<INSERT YOUR SUBACCOUNT AUTH TOKEN>

レスポンス

レスポンスではメッセージングサービスのSID(MGxxxx)が提供されます。これは次のステップで使用するため、すぐに利用できるようにしてください。

レスポンスオブジェクトにはさまざまな属性がかなり含まれていることに気付くでしょう。メッセージングサービスの全機能について詳しくは、メッセージングサービスのドキュメントを参照してください。

{
   "fallback_method": "POST",
   "fallback_to_long_code": true,
   "date_updated": "2021-02-17T15:28:03Z",
   "synchronous_validation": false,
   "sticky_sender": true,
   "inbound_method": "POST",
   "friendly_name": "falconFlightNotifications",
   "mms_converter": true,
   "validity_period": 14400,
   "account_sid": "ACxxx",
   "fallback_url": null,
   "inbound_request_url": null,
   "url": "https://messaging.twilio.com/v1/Services/MGa91155a0d582afdde110a606465d1daa",
   "sid": "MGxxxx",
   "date_created": "2021-02-17T15:28:03Z",
   "smart_encoding": true,
   "scan_message_content": "inherit",
   "area_code_geomatch": true,
   "status_callback": null,
   "links": {
      ...
   }
}

メッセージングサービスへの電話番号の追加

メッセージングサービスを使用できるようになりました。サービスAPIを使用してメッセージングサービスに電話番号を追加できます。

リクエスト

curl -X POST https://messaging.twilio.com/v1/Services/<INSERT YOUR MESSAGING SERVICE SID/PhoneNumbers \
--data-urlencode "PhoneNumberSid=<INSERT PHONE NUMBER SID>" \
-u <INSERT YOUR SUBACCOUNT SID>:<INSERT YOUR SUBACCOUNT AUTH TOKEN>

レスポンス

これで、メッセージングサービスに電話番号が正常に追加されました。

{
   "phone_number": "+14158740103",
   "date_updated": "2021-02-17T15:30:47Z",
   "capabilities": [
       "MMS",
       "SMS",
       "Voice"
   ],
   "account_sid": "AC1bcc67e32e161e04aaacc159b2e86601",
   "url": "https://messaging.twilio.com/v1/Services/MGxxx/PhoneNumbers/PNxxx",
   "country_code": "US",
   "sid": "PNxxxx",
   "date_created": "2021-02-17T15:30:47Z",
   "service_sid": "MGxxxx"
}

メッセージの送信

新しいサブアカウントが作成されました。メッセージングサービスと電話番号でメッセージを送信できます。

メッセージングサービスを介してメッセージを送信するには、リクエストでメッセージングサービスのSID(MGxxx)を使用します。

Toの電話番号が認証済みであることを確認してください。番号が認証されていない場合は、Twilio Consoleから検証済みの電話番号を追加できます。

リクエスト

curl -X POST https://api.twilio.com/2010-04-01/Accounts/<INSERT YOUR SUBACCOUNT SID>/Messages.json \
--data-urlencode "Body=Hi there" \
--data-urlencode "From=<INSERT YOUR MESSAGING SERVICE SID>
" \
--data-urlencode "To=<INSERT YOUR PHONE NUMBER E.164 FORMAT>" \
-u <INSERT YOUR SUBACCOUNT SID>:<INSERT YOUR SUBACCOUNT AUTH TOKEN>
{
   "sid": "SMb319786dcd44433b905d0e8acd2b33f3",
   "date_created": "Wed, 17 Feb 2021 15:39:56 +0000",
   "date_updated": "Wed, 17 Feb 2021 15:39:56 +0000",
   "date_sent": null,
   "account_sid": "ACxxx",
   "to": "+12083186206",
   "from": null,
   "messaging_service_sid": "MGxxx",
   "body": "Hi there",
   "status": "accepted",
   "num_segments": "0",
   "num_media": "0",
   "direction": "outbound-api",
   "api_version": "2010-04-01",
   "price": null,
   "price_unit": null,
   "error_code": null,
   "error_message": null,
   "uri": "/2010-04-01/Accounts/ACxxx/Messages/SMb319786dcd44433b905d0e8acd2b33f3.json",
   "subresource_uris": {
       "media": "/2010-04-01/Accounts/ACxxx/Messages/SMb319786dcd44433b905d0e8acd2b33f3/Media.json"
   }
}

成功すると、次のようなテキストが表示されます。

サブアカウントのテキストのデモ

成功しました。

まとめ: 強力なサブアカウント

これまでの操作をまとめましょう。

  1. サブアカウントを作成
  2. 親アカウントからサブアカウントへ電話番号を転送
  3. サブアカウントでメッセージングサービスを作成
  4. メッセージングサービスに電話番号を追加
  5. サブアカウントのメッセージングサービスを介してメッセージを送信

サブアカウントが強力であることを実感していただけたでしょうか。この記事の内容は、ほんの始まりに過ぎません。このブログに関心がある方には、以下もお勧めします。

JoshはTwilioのシニアソリューションエンジニアであり、独立系ソフトウェアベンダー(ISV)パートナーがTwilio上でスケーラブルなアーキテクチャとビジネスを構築できるよう支援しています。連絡先はjsiverson [at] twilio.comです。