![[Twilio] 発信元を国別に自動で切り替える~音声通話とSMSの違い~](https://images.ctfassets.net/ct0aopd36mqt/wp-thumbnail-3f316c20ff5f4f46d1a005e2ad976882/c71162912c717bb0ca7c9b4196a40df5/twilio.png)
[Twilio] 発信元を国別に自動で切り替える~音声通話とSMSの違い~
概要
ユーザーに電話や SMS を送信する際、発信元の国番号が「見慣れない番号」だった場合、内容が正しくても不審に思われてしまう可能性があります。Twilio ではこの問題に対応するための方法が用意されていますが、音声通話と SMS で対応の仕組みが異なる点には注意が必要です。
本記事では、Twilio を使って発信先の国に応じて発信元番号を自動で切り替える方法について、Node.js での実装を中心に解説します。
Twilio Messaging Service とは
Twilio Messaging Service は、複数の Twilio 電話番号をまとめて管理し、最適な番号を Twilio 側で自動選択してくれる仕組みです。
Messaging Service を使うことで、以下のような利点があります:
- Geomatch 機能による国別の番号選択 (例: 日本には日本番号)
- 複数番号のローテーションによる送信制限回避
- SMS 送信元番号の柔軟な管理
SMS 送信時は、from
の代わりに messagingServiceSid
を指定することで、自動的に適切な番号が選ばれます。
対象読者
本記事は、以下のような方を対象としています:
- Twilio API を業務やプロダクトで利用しているエンジニア
- グローバル対応が必要な Web サービスやアプリを開発中のチーム
- 発信元番号による UX の違いに関心があるプロダクトマネージャー
- Twilio の Voice API と Messaging Service の使い分けに悩んでいる方
想定ユースケース
以下のような状況を想定しています:
- 認証コード送信やリマインダー送信時に、宛先の国と異なる番号から送信されてしまい、ユーザーに不信感を与えてしまう
- 日本のユーザーには日本の電話番号から、アメリカのユーザーにはアメリカの電話番号から連絡したい
- 多言語対応の国際サービスを展開しており、コミュニケーション手段も国別に最適化したい
- 発信制限やスパム判定回避のため、同じ番号を使い続けるのを避けたい
参考記事
事前準備
この記事の内容を実装するためには、以下の準備が必要です:
Twilio 番号の取得
Voice または SMS に対応した各国の Twilio 番号を取得しておきます。取得は Twilio コンソールの「Phone Numbers」から行えます。
Node.js 開発環境の用意
twilio
パッケージをインストールします:
npm install twilio
認証情報の用意
Twilio の「Account SID」と「Auth Token」が必要です。これらは環境変数として扱うことを推奨します。
TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
音声通話: 宛先に応じて from を切り替える実装
音声通話では、SMS と異なり Twilio 側に国別切り替えの自動化機能は用意されていません(2025年5月時点)。そのため、通話発信時はアプリケーション側で宛先番号 (to
) を判別し、適切な from
を明示的に選ぶ必要があります。
例: Node.js の実装例
const to = '+81XXXXXXXXXX'; // 発信先 (例: 日本)
let from;
// 宛先番号の国コードで発信元番号を選択
if (to.startsWith('+81')) {
from = '+81YYYYYYYYYY'; // 日本の Twilio 番号
} else if (to.startsWith('+1')) {
from = '+1ZZZZZZZZZZ'; // 米国の Twilio 番号
} else {
from = '+15005550006'; // デフォルトまたは汎用番号
}
await client.calls.create({
to,
from,
url: 'https://example.com/voice.xml'
});
SMS: Messaging Service と Geomatch の活用
SMS の場合、Twilio の「Messaging Service」を使うことで、宛先に応じた発信元番号の自動切り替えが可能です。Messaging Service では 「Geomatch」機能 によって、宛先の国に一致する Twilio 番号が優先的に使われます。
Messaging Service を作成する (Twilio コンソール)
- Twilio コンソール にログイン
- 左メニューから「Messaging」→「Services」→「Create Messaging Service」を選択
- 以下を入力して作成
- Messaging Service friendly name: 任意のサービス名
- Select what you want to use Messaging for: 任意の選択肢
- Sender を登録
- 「Add Senders」を選択し、 Sender Type に Phone Number を選択
- 発信元として使用する購入済み電話番号にチェックを入れて 「Add Phone Numbers」 をクリック
- SMS 対応の Twilio 番号を追加します。対象となる国 (例: 日本、米国、英国など) の番号をそれぞれ登録してください。
- Skip setup をクリックして初期設定を完了
例: Node.js で SMS を送信する
const client = require('twilio')(
process.env.TWILIO_ACCOUNT_SID,
process.env.TWILIO_AUTH_TOKEN
);
await client.messages.create({
to: '+44XXXXXXXXXX',
messagingServiceSid: 'MGXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
body: 'こんにちは!こちらは現地の番号から送信しています。'
});
まとめ
本記事では、Twilio を使って電話や SMS を送る際、宛先の国によって発信元番号を自動で切り替える方法について紹介しました。音声通話と SMS で対応方法が異なることがポイントです。
種別 | 発信元自動切替 | 実装方法 |
---|---|---|
音声通話 | × (アプリ側で判定) | to を見てアプリ側で from を分岐 |
SMS | ○ (自動対応) | Messaging Service + Geomatch を活用 |
ユーザーにとって「知らない国の番号から連絡が来ること」は大きなストレスになります。本記事で紹介した構成を導入することで、UX 向上や反応率の改善、スパムリスクの低減などが期待できます。多国籍展開を見据えたサービスにおいて、Twilio の番号管理設計は非常に重要です。ぜひ検討・導入してみてください。