このアプリケーションは、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アシスタントと話すことができます。楽しんでください!