SIPトランクの持ち込み:今お使いの通信事業者でAI音声エージェントを動かす
すでにお持ちのSIPトランクでAI音声エージェントを動かせます。電話番号も通信事業者の料金もそのままで、上乗せはありません。
最終更新日:
公開日 。通信事業者の名称は各所有者の商標です。Wixzel Voiceは標準のSIPでこれらと連携しており、いずれとも提携しておらず、推奨を受けてもいません。
通信事業者ガイド
Twilio
Elastic SIP Trunking。TerminationのIP ACLにプラットフォームのIPを登録し、着信用にOrigination SIP URIを設定します。
Telnyx
IP認証のSIP Connection。プラットフォームのIPを許可アドレスとして追加し、着信リージョンを選び、トランスポートを合わせます。
Plivo
Zentrunk。IP ACLにプラットフォームのIPを登録した発信用トランクと、Primary URIをプラットフォームに向けた別の着信用トランクを用意します。
Vonage
Programmable SIP。SIP DashboardでトランクのACLにプラットフォームのIPを追加し、着信をOrigination URIに送ります。
Bandwidth
SIP REGISTERに対応していないため、固定IPが必要です。ロケーションにプラットフォームのIPを追加し、TerminationとOriginationを別々に設定するか、network bridgeの認証情報を使います。
Exotel
インドの電話番号向けのVirtual SIP Trunking(vSIP)で、TCPを使います。プラットフォームのIPをACLとしてトランクに紐付け、着信用にDestination URIをプラットフォームのTCPポートに向けます。
Vobiz
トランクごとのSIPドメインをホストに使い、トランクのIP ACLにプラットフォームのIPを登録します。「origination URI」はTwilioとは逆の意味です。
Mobily
Saudi Arabia, ordered through Mobily Business sales and delivered over a private link. No one-step connect: your own SBC on the link relays calls, with G.711 A-law and a one-hour call cap.
あらゆるSIPプロバイダー
手順はどこでも同じです。プラットフォームのIPを許可リストに登録し、着信の宛先をOrigination URIに設定し、番号の形式とトランスポートを合わせます。
なぜSIPトランクを持ち込むのですか?
- 電話番号はお客様のもの
- Wixzel Voiceは電話番号の販売もポーティングも行いません。乗り換えるときは、通信事業者側で設定を1つ変えるだけです。
- 料金もお客様のまま
- 回線の料金は通信事業者から請求されます。Wixzel Voiceが課金するのは音声エンジンだけで、秒単位です。
- コンプライアンスもそのまま
- 発信者番号、KYC、各種登録は、すでに信頼している通信事業者のもとに残ります。
- あらゆるSIPプロバイダー
- 8社の通信事業者にガイドがあります。SIPトランクがあれば、どこでも動作します。
持ち込んだSIPトランクはどのように接続されますか?
Wixzel Voiceのトランクには2つの設定があり、それぞれ通信事業者のコンソールの別の場所で設定します。どちらのアドレスもすべてのトランクで返されるため、ページの情報が最新であることに頼らず、APIから読み取ってください。
通信事業者のIP許可リストに187.126.120.231を追加します。ほぼすべての通信事業者は発信元IPで発信を認可するため、他のすべてが正しく設定されたトランクでも、これがないと失敗します。
通信事業者の着信の送信先をsip:187.126.120.231:5090に設定します。これを忘れると、番号はまったく鳴りません。通信事業者に通話の届け先がないため、どのログにも何も表示されません。
curl https://api.voice.wixzel.com/v1/sip-trunks \
-H "Authorization: Bearer $WIXZEL_API_KEY" \
| jq '.data[0] | {platform_ip, origination_uri}'設定ガイドがある通信事業者は?
以下の通信事業者には、それぞれ専用のページがあります。購入すべきもの、許可リストに追加するもの、着信の送信先、その事業者に合うトランクのリクエスト、その事業者特有の注意点を説明し、ドキュメントの詳しいコンソール手順へのリンクを載せています。2つの設定の名称は事業者ごとに異なりますが、設定内容は同じです。
| 通信事業者 | 製品 | 許可リストの名称 | 着信の送信先の名称 | トランスポート |
|---|---|---|---|---|
| Twilio | Elastic SIP Trunking | IP Access Control List | Origination SIP URI | udp |
| Telnyx | SIP Connections | authorised addresses on an IP-authenticated SIP Connection | ガイドにはまだ記載なし | udp |
| Plivo | Zentrunk | IP Access Control List | Primary URI | udp |
| Vonage | Programmable SIP | ACL (Access Control List) | ガイドにはまだ記載なし | udp |
| Bandwidth | - | Voice IP addresses / DNS hosts on a location | Origination | udp |
| Exotel | Virtual SIP Trunking (vSIP) | ACL mapped to the trunk | Destination URI | tcp |
| Vobiz | - | IP ACL | ガイドにはまだ記載なし | udp |
| Mobily | SIP Trunk | trusted peers on the SBC that holds your Mobily link | SBC route for inbound Mobily calls | udp |
| あらゆるSIPプロバイダー | - | IP ACL、許可リスト、または許可アドレス | Origination URI、または通信事業者でのその呼び名 | udp |
通信事業者は2つの設定を何と呼んでいますか?
| 役割 | 通信事業者が使う名称 |
|---|---|
| Wixzel Voiceからの通話を認可する | IP ACL, IP Access Control List, Access Control List, allowlist, authorised address, network bridge |
| 通話をWixzel Voiceに届ける | Origination URI, Primary URI, Destination URI, termination point, destination SIP URI, host |
正しく見えるトランクが動作するかどうかは、さらに2つの設定で決まります。 番号形式: Twilio、Telnyx、Vobizは先頭の+を必要とします。多くのホールセール通信事業者はこれを解釈できず408でタイムアウトしますが、send_plus: falseで解決します。 トランスポート: ほとんどの事業者でUDPがデフォルトですが、ExotelはUDPを受け付けないため、ExotelのトランクはTCPで動作します。不一致があると、通信事業者に無視されているように見えます。
通話がつながらないとどうなりますか?
APIが受け付けた後に通信事業者が拒否した通話は、GET /v1/calls/{id}でstatus: "failed"(原因17の場合はbusy、原因19の場合はno-answer)と表示され、failure_code(通信事業者からのQ.850原因コードで、分岐に使える安定した値)とfailure_reason(対処方法をわかりやすく説明したもの)が付きます。cost_microsはnullです。つながらなかった通話には費用がかからず、そのために確保されたクレジットは解放されます。
まず通信事業者自身の通話ログを確認してください。通話が記載されていなければ、通信事業者に届いていません。許可リスト、トランクのホスト、ファイアウォールのいずれかが誤っています。応答0件、費用0で記載されている場合は、通信事業者がINVITEを受け付けた後に切断しています。これは設定の問題よりも、通信事業者側の権限の問題であることがはるかに多くあります。提示する発信者番号がアカウントで認可されていること、市場で必要な場合はKYCや宛先の登録が完了していること、宛先の番号帯が残高があるだけでなく有効化されていることが必要です。APIが説明する原因は次のとおりです:
すべての失敗コード、拒否理由、トランクのデバッグ方法
| failure_code | 通信事業者の応答 | 意味 | 対処方法 |
|---|---|---|---|
| 1 | 404 | 通信事業者がその番号を認識できません。 | 番号の形式を確認してください。通信事業者がテクニカルプレフィックスを必要とする場合は、トランクにdial_prefixを設定します。 |
| 3 | - | 通信事業者にこの宛先へのルートがありません。 | おそらく通信事業者のアカウントでこの宛先が有効になっていません。通信事業者にルートの開放を依頼してください。 |
| 16 | - | 正常切断:相手側が意図的に通話を終了しました。 | 応答されなかった通話でこのコードが出た場合は、完了した通話ではなく、上流のどこかが通話を終了させたものと読んでください。 |
| 17 | 486 | 話し中です。 | - |
| 18 | 480 | 宛先が応答しませんでした。 | 電話の電源が切れているか、圏外の可能性があります。 |
| 19 | - | 呼び出したが、誰も出ませんでした。 | 対処は不要です。トランクと番号はどちらも正常に動作しています。 |
| 20 | - | 相手が不在か、つながりません。 | - |
| 21 | 403 / 407 | 通信事業者が、番号を試す前に通話をそのまま拒否しました。 | 可能性の高い順に、通信事業者のアカウントが停止・解約・残高不足になっている、トランクのユーザー名かパスワードが間違っている、platform_ipが許可リストに登録されていない、発信者番号がアカウントで許可されていない、のいずれかです。まず通信事業者のダッシュボードを確認してください。 |
| 22 | - | 番号が変更され、現在は使われていません。 | - |
| 27 | - | 宛先が故障しています。 | - |
| 28 | 484 | 通信事業者が番号の形式を拒否しました。 | 通信事業者がテクニカルプレフィックスを必要とする場合は、トランクにdial_prefixを設定します。 |
| 34 | - | 通信事業者に利用できる回線がありません(輻輳)。 | 少し待ってから再試行してください。 |
| 38 | 500 / 501 / 502 | 通信事業者がサーバーエラーを返しました。 | - |
| 41 | 503 | 通信事業者には到達できますが、通話を拒否しています。 | 通常は、通信事業者側の容量、残高、またはルートの停止が原因です。 |
| 42 | - | 通信事業者の交換機が輻輳しています。 | 少し待ってから再試行してください。 |
| 58 | 488 | コーデックの不一致:通信事業者が提示された音声コーデックを拒否しました。 | 通信事業者側でG.711(PCMUまたはPCMA)を提示してください。G.729には対応していません。 |
| 88 | 493 | 通信事業者が互換性のない通話として拒否しました。 | - |
| 102 | 408 | 通信事業者が時間内に応答しませんでした。 | トランクのhostとport、そして通信事業者がplatform_ipからのSIPを受け付けているかを確認してください。通信事業者側で通話が受信済みだが応答なしと表示される場合は、send_plusをfalseに設定します。 |
以下は、ダイヤルする前にPOST /v1/callsが拒否するもので、費用はかかりません:
| HTTPステータス | code | 意味 |
|---|---|---|
| 400 | no_outbound_number | 発信者番号がありません。from_number_idを渡すか、エージェントにoutbound_phone_number_idを設定してください。 |
| 400 | number_not_on_trunk | 発信元の番号にsip_trunk_idがないため、通話の送り先がありません。 |
| 400 | missing_idempotency_key | HTTPリクエストにIdempotency-Keyがありませんでした。SDKは自動で送信します。 |
| 402 | insufficient_credits | 残高が最初の15秒分に足りません。チャージしてから再試行してください。 |
| 429 | rate_limit_exceeded | このキーで毎秒10リクエストを超えました。Retry-Afterまで待ってください。429に課金されることはありません。 |
| 503 | - | 音声エンジンが利用できないか、アカウントの進行中の通話数が同時通話数の上限(標準で5件)に達しているか、APIキーが支出上限に達しています。どれに当たるかはメッセージに記載されます。 |
GET /v1/sip-trunks/{id}/statusはトランクに現在到達できるかを示し、通信事業者による直近の拒否を一覧表示します。POST /v1/sip-trunks/{id}/testは任意のタイミングでトランクを検査し、GET /v1/sip-trunks/{id}/logsはSIPログを返します。
curl https://api.voice.wixzel.com/v1/sip-trunks/$TRUNK_ID/status \
-H "Authorization: Bearer $WIXZEL_API_KEY"着信番号がまったく鳴らない場合、それは調べられる失敗ではありません。通信事業者に送信先が設定されていなければ、通話は通信事業者の外に出ないため、確認できる失敗した通話が存在しません。着信の送信先、通信事業者側で番号がトランクに紐付いていること、番号にinbound_agent_idがあることを確認してください。通話はつながるのに何も聞こえない場合は、メディアが届いていません。経路上のファイアウォールで、シグナリングのポートだけでなくRTPの範囲も許可する必要があります。
よくある質問
Wixzel Voiceにはなぜ自分のSIPトランクが必要なのですか?
Wixzel Voiceで使える通信事業者は?
トランクに必要な2つの設定とは?
platform_ip(現在は187.126.120.231)を追加する設定で、これにより通信事業者がプラットフォームからの通話を受け付けます。着信側は、通信事業者の着信の送信先をorigination_uri(現在はsip:187.126.120.231:5090)に設定するもので、これによりお客様の番号への通話がプラットフォームに届きます。ホストとポートだけを受け付ける通信事業者や、UDPで送信しない通信事業者では別の形式が必要で、それぞれのガイドに記載しています。どちらの値もGET /v1/sip-trunksですべてのトランクについて返されます。ページからコピーするのではなく、そこから読み取ってください。既存の電話番号をそのまま使えますか?
POST /v1/phone-numbersを使って番号を登録し、inbound_agent_idを指定してください。Wixzel Voiceは番号のポーティングを行わないため、番号は通信事業者のもとに残ります。通信事業者のパスワードはどのように保存されますか?
WebアプリやモバイルアプリにもSIPトランクは必要ですか?
POST /v1/realtime/sessionsでリアルタイムセッションを発行し、アプリはWebSocket経由でエージェントと話します。トランクも電話番号も不要です。トランクの変更に再起動は必要ですか?
電話番号はWixzel Voiceと通信事業者のどちらから購入しますか?
POST /v1/phone-numbers/purchaseで、そのアカウントの電話番号を購入できます。料金は通信事業者がその価格で請求します。ExotelとBandwidthでは、通信事業者で番号を購入してください。どの通信事業者でも、すでに所有している番号を、その番号があるトランクにPOST /v1/phone-numbersで登録できます。電話番号にかけてもエージェントが応答しないのはなぜですか?
origination_uri(現在はsip:187.126.120.231:5090)に通話を配信すること、通信事業者側でその番号がトランクに紐付いていること、そしてWixzel Voiceでその番号にinbound_agent_idが設定されていることが必要です。1つ目がないと、通話は通信事業者から出ていかず、どのログにも何も表示されません。自社のSIPトランク経由のAI通話にはいくらかかりますか?
最初の音声エージェントを構築

