1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenAI Realtime APIをSIPでつなぐ - Twilio Programmable Voice連携

Posted at

はじめに

OpenAIのRealtime APIをSIPで接続する場合に、TwilioではElastic SIP TrunkingとProgrammable Voiceのどちらかで連携することが可能です。
前回の「OpenAI Realtime APIをSIP接続で使う:Twilioとの連携手順まとめ」ではElastic SIP Trunkingでの設定方法書きました。
今回はProgrammable Voiceでの連携方法を記載します。
前回と手順が非常に似ているのですが、実際に両方を検証してみてProgrammable Voiceの方が使い勝手が良いなと思う部分がありましたので、そのあたりにも触れたいと思います。

RealtimeAPI - SIP 接続パターン.png

設定手順

前提

  • 下記については前回のOpenAI Realtime APIをSIP接続で使う:Twilioとの連携手順まとめを参考にしてください。今回下記の手順については触れません
    • OpenAIのコンソール
      • API Keyの取得
      • Project IDの取得
      • Webhookの設定とWebhook Secretの取得
    • Webhookサーバの起動
      • サンプルコードの微修正
  • Twilioアカウントがあること
    • 電話番号が購入済みであること

TwiMLの作成

  1. メニューからTwiML Bins - My TwiML binsに移動し、「+」ボタンを押して新規作成を実施
    Pasted image 20250902115356.png

  2. TwiMLを作成して保存
    SIPアドレスは、「sip:<OPENAI_PROJ_NAME>@sip.api.openai.com」
    Pasted image 20250903102450.png

    Friendly Name RealtimeAPI-SIP
    TwiML <?xml version="1.0" encoding="UTF-8"?><Response><Say language="ja-JP" voice="Polly.Mizuki">ただいまオペレーターに接続します。しばらくお待ちください。</Say><Dial> <Sip>sip:proj_xxxxxxx@sip.api.openai.com;transport=tls</Sip></Dial></Response>
  3. 作成したTwml Binsを利用する電話番号に紐づけする
    Pasted image 20250903215855.png

実行結果

紐づけした電話番号に電話をかけAIが応対すれば完成となります。

ポイント

前回のSIP TrunkingからProgrammable Voiceでの連携に変えることで、下記のメリット・デメリットが発生します。

  1. コールの切断をAI側から実行できる
    Call SID が取れるので REST API で通話の終了(hangup)やリダイレクトができる。
  2. AIに繋ぐ前にコールのコントロールができる
    <Say>, <Gather>, <Pause>, <Record>, <Stream> など TwiML の制御を前段に挿入できます。たとえば営業時間外判定や、発信者のプライバシー同意確認などを行った上で へ接続可能です。
  3. 通話料が若干高い可能性あり
  4. アウトバウンドコールが実現できる
    REST API から SIP 宛てに直接発信できます(To=sip:...)。発信時は url(または twiml)で TwiML を指定するのが必須です。

終わりに

Programmable Voice 方式は、

  • Call SID を用いた通話制御(hangup/redirect)
  • TwiML による前段ロジックの挿入
  • アウトバウンド発信の容易さ
    といった運用上の強みがあり、検証〜本番移行を柔軟にします。
    一方で Elastic SIP Trunking とは課金体系が異なるため、要件に応じた使い分けが肝要です。Realtime API の成熟は進行中ですが、まずは 小さく検証→学習→拡張のサイクルを回していきましょう。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?