1. はじめに
音声AIプラットフォーム(Retell AIなど)は、電話の「着信(受電FAQ対応など)」だけでなく、AIから自動で電話をかける「発信(アウトバウンド営業、予約リマインドなど)」の機能も備えています。
しかし、Retell AIから日本国内の携帯電話や固定電話へ発信しようとすると、番号フォーマットやキャリアの制限という壁に突き当たります。
本記事では、Retell AIから発信リクエストを投げ、中継PBXであるAsteriskを経由して、国内キャリア(Brastelなど)の050番号から日本国内へ自動発信するための具体的な設定と、電話番号フォーマット変換のポイントを解説します。
2. 解決すべき2つの課題
Retell AIから直接日本のキャリア網へ発信できない主な理由は以下の2点です。
1) 電話番号フォーマットの不一致 (E.164 vs 国内ローカル)
-
Retell AI: グローバルな電話番号体系である E.164フォーマット(例:
+819012345678)でSIP INVITEを送信します。 -
国内キャリア(例: Brastel): 国内標準フォーマット(例:
09012345678)での発信要求しか受け付けません。+81のまま発信しようとすると拒否されます。
2) 発信者番号(Caller ID)のなりすまし規制
日本のキャリアはセキュリティおよび詐欺電話防止のため、契約者が実際に保有していない電話番号を発信者番号(Caller ID)として通知した発信リクエストを拒否します。
Retell AI側から任意の番号ヘッダーを送信しても、Asterisk側で契約済みの正しい050番号(またはSIPユーザーID)に上書きしないと、キャリア側でブロックされます。
3. 全体のアウトバウンド構成
【Retell AI】
(API等から発信指示を実行)
↓ SIP INVITE [宛先: +819012345678]
【Asterisk】 (PJSIP)
(1. 宛先番号を +81... から 090... へ変換)
(2. 発信者番号を契約050番号に上書き)
↓ SIP INVITE [宛先: 09012345678]
【国内キャリア (ブラステル)】
↓ 一般電話網経由で発信
【ターゲットのスマートフォン】
4. Asteriskの発信設定
1) pjsip.conf(発信用エンドポイント設定)
Retell AIからの発信を受け付けるエンドポイントと、国内キャリアへ発信するためのエンドポイントをそれぞれ定義します。
; --- Retell AI 側からの発信を受け取る設定 ---
[retell-endpoint]
type=endpoint
transport=transport-tcp
context=from-retell ; 着信したら from-retell コンテキストへ送る
disallow=all
allow=ulaw
aors=retell-aor
direct_media=no
; --- 国内キャリア (Brastel) への発信用設定 ---
[brastel-endpoint]
type=endpoint
transport=transport-udp
context=from-brastel
disallow=all
allow=ulaw
outbound_auth=brastel-auth
aors=brastel-aor
from_user=BRASTEL_USER_ID ; 契約ユーザーID
from_domain=softphone.spc.brastel.ne.jp
direct_media=no
rtp_symmetric=yes
force_rport=yes
2) extensions.conf(ダイアプランによる番号変換と発信)
ここが最も重要な部分です。Retell AIから届いた国際形式の番号を国内形式へ置換し、発信者番号を上書きしたうえで、キャリアのゲートウェイへ発信します。
[from-retell]
; +81 から始まる日本の番号(国際表記)を 0から始まる国内表記に変換して発信
exten => _+81.,1,NoOp(=== Outbound from Retell AI (E.164: ${EXTEN}) ===)
; 1. 国際表記から国内表記へ変換 (+819012345678 -> 09012345678)
same => n,Set(DOMESTIC_NUM=0${EXTEN:3})
same => n,NoOp(Converted Domestic Number: ${DOMESTIC_NUM})
; 2. 発信者番号(Caller ID)をブラステルのユーザーIDに強制上書き (キャリア規制対策)
same => n,Set(CALLERID(num)=BRASTEL_USER_ID)
; 3. ブラステル経由で発信
same => n,Dial(PJSIP/brastel-endpoint/sip:${DOMESTIC_NUM}@softphone.spc.brastel.ne.jp,60)
same => n,Hangup()
; すでに「0」から始まる形式でRetellから届いた場合の予備ルート
exten => _0.,1,NoOp(=== Outbound from Retell (Domestic: ${EXTEN}) ===)
same => n,Set(CALLERID(num)=BRASTEL_USER_ID)
same => n,Dial(PJSIP/brastel-endpoint/sip:${EXTEN}@softphone.spc.brastel.ne.jp,60)
same => n,Hangup()
; E.164でも国内番号でもない、その他の発信形式
exten => _X.,1,NoOp(=== Outbound from Retell (Raw fallback: ${EXTEN}) ===)
same => n,Set(CALLERID(num)=BRASTEL_USER_ID)
same => n,Dial(PJSIP/brastel-endpoint/sip:${EXTEN}@softphone.spc.brastel.ne.jp,60)
same => n,Hangup()
5. 運用上の注意点と確認ポイント
1) 国際発信の有効化(Retell AI側)
Retell AIのアカウント設定において、発信先として 「Japan (+81)」 への発信許可(International Call Permissions)が有効になっているか確認してください。デフォルトでは制限されている場合があります。
2) 同時通話数の制限
国内050回線サービス(特に個人プランや安価なプラン)では、1アカウントで同時に発信できる「同時通話数(チャンネル数)」が 1チャンネル に制限されていることがほとんどです。
AIで大量の顧客へ同時に自動発信したい場合は、キャリアと「複数チャネル契約(ビジネス向けプラン)」を行う必要があります。
6. 技術的なサポート・構築代行について
「Retell AIからAPIで自動発信させたいが、番号変換設定がうまくいかない」
「自動架電時に、自社の050番号を正しく相手のスマホへ通知させたい」
といった企業・開発者様向けに、接続・構築の専門代行サービスを提供しています。お持ちの回線が接続可能かの「無料診断」も実施しておりますので、詳細やご相談は下記ページからお気軽にお問い合わせください。
👉 [SIPBridge 日本番号対応AI電話構築代行] (https://www.sipbridge.dev/agency)