Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Connecting Elevenlabs

2025年09月22日に「Dev.to」が公開したITニュース「Connecting Elevenlabs」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

AI音声エージェントのElevenLabsと電話サービスTwilioの連携で、WebhookよりもSIP Trunkを使う方法を紹介。SIP Trunkは低遅延、高安定性、柔軟な制御が特長だ。音声AIと電話の連携をより堅牢にするため、この方式が推奨される。

出典: Connecting Elevenlabs | Dev.to公開日:

ITニュース解説

この記事では、AIによる音声対話サービスであるElevenLabsと、電話サービスをインターネット経由で提供するTwilioを連携させる具体的な方法について解説する。一般的なWebhooksを使った方法ではなく、SIPトランクという技術を用いることで、より安定し、柔軟な音声AIシステムを構築する手順を、システムエンジニアを目指す初心者にも分かりやすく説明する。

まず、なぜSIPトランクを利用するのかという点から始めよう。Webhooksは、Twilio側で電話がかかってきたなどのイベントが発生した際に、その情報をElevenLabsなどの外部サービスに自動的に送信し、次の指示を受け取る仕組みだ。これは手軽に設定できる反面、通信の往復が多く、遅延が発生しやすい、あるいはシステムの安定性に課題が生じることがある。一方でSIPトランクは、電話の信号や音声をインターネット経由で直接的にやり取りする技術である。SIPトランクを使うことで、以下のような多くの利点が得られる。まず、通信の遅延が少ない。音声データがより直接的に送られるため、応答速度が向上し、自然な会話が可能になる。次に、システムの安定性が高い。Webhooksのような多段階の通信に依存しないため、途中のエラーによる影響を受けにくい。さらに、設定の柔軟性が高いことも挙げられる。認証方法、電話のルーティング、通信の暗号化といった詳細な部分を細かく制御できるため、高度なセキュリティ要件や複雑な運用に対応できる。そして、SIPトランクはVoIP(Voice over IP、インターネット電話)の標準的な接続方法であるため、他のVoIPシステムとの互換性が高く、将来的な拡張や他のサービスへの応用が容易になる。

それでは、具体的な設定手順を追っていこう。まずはTwilio側の設定からだ。Twilioの管理画面で「Elastic SIP Trunking」という項目に移動し、新しいSIPトランクを作成する。最初に「Friendly Name」として、このSIPトランクを識別するための分かりやすい名前を付ける。他のデフォルト設定はそのままにして、「Call Transfer (SIP Refer)」という設定で、電話の転送元と転送先の識別を「発信者IDを転送先として設定」に切り替える。また、「PSTN Transfer」を有効にする。これらの設定を保存したら、次に「Termination」セクションに進む。

「Termination」セクションでは、外部からTwilioへ電話がかかってきた際に、Twilioがどこに接続するかを定義する。 「Termination SIP URI」には、TwilioがこのSIPトランクのために自動生成するドメイン名が表示される。例えば「your-domain.pstn.twilio.com」のような形式だ。次に、「IP Access Control List」を設定する。これはセキュリティを高めるための設定で、指定したIPアドレスからのアクセスのみを許可するものだ。ElevenLabsのSIPサーバーのIPアドレス「34.49.132.122」を追加することで、ElevenLabsからのアクセスだけを許可し、不正な接続を防ぐ。さらに「Credentials List」では、TwilioとElevenLabsが安全に通信するためのユーザー名とパスワードを作成する。この認証情報は後でElevenLabsの設定で必要となるため、必ず控えておく必要がある。

次に「Origination」セクションでは、Twilioから外部へ電話をかける際の設定を行う。 「Origination URI」として、ElevenLabsのSIPサーバーのアドレスである「sip:sip.rtc.elevenlabs.io:5060;transport=tcp」を入力する。これは、TwilioがElevenLabsに電話をかける際の接続先となる。このURIに「Priority(優先度)」と「Weight(重み)」を設定し、有効にする。これらは複数の接続先がある場合の動作を制御する設定だ。

最後に「Numbers」セクションで、Twilioの電話番号をこのSIPトランクに割り当てる。このSIPトランクを利用する電話番号は、ここで割り当てられたものだけが有効となる。新しい番号を購入するか、既存の番号を使うことができる。これでTwilio側の設定は完了だ。

続いてElevenLabs側の設定に移る。ElevenLabsの管理画面で「Phone Numbers」に進み、「Import Number」から「From SIP Trunk」を選択する。 「Basic Information」として、この電話番号を識別するための「Label」を設定し、TwilioでSIPトランクに割り当てた電話番号と同じ番号を入力する。

次に「Inbound Configuration」として、TwilioからElevenLabsにかかってくる電話に関する設定を行う。 「Media Encryption」は通信の安全性を高めるため「Allowed(許可)」を選択する。そして、「SIP Trunk username」と「SIP Trunk password」には、Twilioの「Termination」セクションで作成し、控えておいた認証情報を入力する。これにより、Twilioからの着信が ElevenLabs で正しく認証される。

さらに「Outbound Configuration」として、ElevenLabsからTwilioを経由して外部に電話をかける際の設定を行う。 「Address」には、Twilioの「Termination SIP URI」で指定したドメイン名(例: your-domain.pstn.twilio.com)を入力する。これにより、ElevenLabsがTwilioに発信する際の接続先を Twilio の SIP トランクに指定する。「Transport Type」は「TLS」、「Media Encryption」は「Allowed」を選択し、これも通信の安全性を確保する。「SIP Trunk username」と「SIP Trunk password」は、Inbound Configurationと同様に、Twilioで作成した認証情報を再度入力する。

ElevenLabs側でのSIPトランク設定もこれで完了だ。最後に、ElevenLabsでインポートした電話番号の設定画面を開き、この電話番号に電話がかかってきた際にどのAIエージェントが応答するかを選択して割り当てる。この設定を終えれば、ElevenLabsのAIエージェントとTwilioがSIPトランク経由で接続された状態となる。

この連携が正しく機能しているかを確認するためには、Twilioで割り当てた電話番号に実際に電話をかけてみることが重要だ。電話がElevenLabsに正しくルーティングされ、割り当てたAIエージェントが応答するかどうかを確認する。また、音声の品質や、SIP認証が正常に機能しているかどうかも、必要に応じてログを確認して検証すると良い。

まとめると、ElevenLabsとTwilioをSIPトランクで接続することで、Webhooks方式に比べて信頼性が高く、柔軟で、拡張性の高いシステムを構築できる。この方法では、SIP認証情報を使った安全な通信や、TLSおよびSRTPによる暗号化された音声通信が可能となり、電話番号ごとにAIエージェントを割り当てるなど、きめ細やかな制御が可能となる。本番環境で利用するような高品質なAI音声エージェントを構築する際には、このSIPトランク方式が非常に有効な手段となるだろう。

関連コンテンツ

関連IT用語