このアプリケーションは、Node.js、Twilio VoiceとMedia Streams、OpenAIのRealtime APIを使用して、AIアシスタントとの電話会話を可能にする方法を示しています。
このアプリケーションは、OpenAI Realtime APIとTwilioとの間でウェブソケットを開き、音声オーディオを一方からもう一方に送信して、二方向の会話を可能にします。
ここで、コードのチュートリアル概要を参照してください。
このアプリケーションは、OpenAIのRealtime APIと共に以下のTwilio製品を使用しています:
- Voice (およびTwiML, Media Streams)
- 電話番号
このアプリを使用するには、以下が必要です:
- Node.js 18+ 開発には
18.20.4
を使用しました。ここからダウンロードできます。 - Twilioアカウント。 無料トライアルにここから登録できます。
- Voice機能を持つTwilio番号。 ここに、電話番号を購入するための手順が記載されています。
- OpenAIアカウントとOpenAI APIキー。 ここから登録できます。
- OpenAI Realtime APIへのアクセス。
ローカルで開発とテストを行うためのアプリを起動するには、以下の4つの必須ステップがあります:
- ngrokや他のトンネリングソリューションを使用して、ローカルサーバーをインターネットに公開し、テストを行います。ngrokはここからダウンロードできます。
- パッケージをインストール
- Twilioの設定
- .envファイルを更新
ローカルで開発とテストを行う際には、ローカル開発サーバーへのリクエストをフォワードするためのトンネルを開く必要があります。これらの手順ではngrokを使用します。
ターミナルを開いて、以下を実行します:
ngrok http 5050
トンネルが開いた後、Forwarding
URLをコピーします。それはhttps://[your-ngrok-subdomain].ngrok.app
のようになります。これは、Twilio番号の設定で必要になります。
注意:上記のngrok
コマンドは、デフォルトでポート5050
で動作する開発サーバーにフォワードします。このアプリケーションでは、index.js
でポートが設定されています。PORT
をオーバーライドする場合は、ngrok
コマンドも更新する必要があります。
各回ngrok http
コマンドを実行すると、新しいURLが作成され、以下で参照されるすべての場所で更新する必要があります。
ターミナルを開いて、以下を実行します:
npm install
Twilio Consoleで、Phone Numbers > Manage > Active Numbersに移動し、このアプリのために購入した電話番号をクリックします。
電話番号の設定で、最初のA call comes inドロップダウンをWebhookに変更し、ngrokのフォワードURL(上記で参照)を /incoming-call
に続けて貼り付けます。例えば、https://[your-ngrok-subdomain].ngrok.app/incoming-call
。その後、Save configurationをクリックします。
.env
ファイルを作成するか、.env.example
ファイルを.env
にコピーします:
cp .env.example .env
.env
ファイルで、OPENAI_API_KEY
を必要条件で指定されたOpenAI APIキーに更新します。
ngrokが動作し、依存関係がインストールされ、Twilioが適切に設定され、.env
が設定された後、以下のコマンドで開発サーバーを実行します:
node index.js
開発サーバーが動作している間に、必要条件で購入した電話番号に電話をかけてください。紹介後、AIアシスタントと話すことができます。楽しんでください!