https://a.storyblok.com/f/270183/1368x665/00c0c1c720/25mar_dev_blog_node-stream-audio.jpg

Node.jsで音声を電話にストリーミングする

最終更新日 March 25, 2025

所要時間:3 分

はじめに

顧客と音声通話をするとき、あなたは顧客の注目を一身に集めることができます。その機会を利用して、あなたの会社の最新ニュースを伝えたり、CEOからの感動的なメッセージを伝えたり、あるいは最新の広告ジングルを流したりしてみてはいかがでしょうか?

このブログポストでは、Vonage Voice APIを使用して、アクティブな通話に音声ファイルをプログラム的に再生する方法について説明します。Vonage Voice APIと Node.js を使って、音声ファイルをプログラムでアクティブな通話に再生する方法について説明します。

始める前に

この例を実行するには、Node.jsが必要です。まだお持ちでない場合は、Node.jsのウェブサイトからインストールしてください。 のウェブサイト.

Vonage Developer Dashboardで番号をプロビジョニングできますが、ここではVonage CLIを使用して番号を購入し、ボイスアプリケーションを作成し、番号をリンクする方法について説明します。

最後に この記事で使用したソースコードをGitHubの.

リポジトリをクローンするそして cdでアプリケーションのルートディレクトリに移動します。

Vonage CLIのインストールと設定

Vonage CLIをインストールするをグローバルにインストールします:

npm install @vonage/cli -g

それから CLIを設定するを設定します。Vonage API キーとシークレットは Developer Dashboard にあります:

Vonage auth set –api-key=’VONAGE_API_KEY –api-secret=’VONAGE_API_SECRET’

を置き換える。 VONAGE_API_KEYVONAGE_API_SECRETを自分の詳細情報に置き換えてCLIを認証する。

API設定ページを開く API設定ページを開き、Vonage API KeyとSecretにアクセスしてください。両者は以下のスクリーンショットのように表示されます。APIキーはページの上部にあり、APIシークレットにアクセスするには、"Account secret "サブセクションを参照してください。

注:以前に作成したAPIシークレットを覚えていない場合は、"+ Create new secret "をクリックし、安全に保存してください。

以下のコマンドを使用して、認証が正常に機能していることを確認できます:

vonage auth check

CLIをグローバルではなくローカルプロジェクトにインストールした場合は、チェックするフラグを追加できます:

vonage auth check –local

Vonage番号の購入

電話をかけるには番号が必要です。以下のコマンドを実行し、国番号を適宜置き換えて、番号を購入してください。たとえば、米国にいる場合は、次のように置き換えます。 [COUNTRYCODE]を米国:

vonage numbers search [COUNTRYCODE]

ターミナルから以下のコードを実行することで、電話番号を購入することができます。国によっては住所の確認が必要な場合があり、購入はコマンドラインではなくVonageのダッシュボードから行う必要があることに注意してください。

vonage numbers buy [COUNTRYCODE] [MSIDSN]

コマンドが返す電話番号をメモしておくこと。

Voiceアプリケーションの作成

Voice APIを使用するには、Voice APIアプリケーションを作成する必要があります。 アプリケーションを作成する必要があります。.これは、構築中のWebアプリケーションとは異なります。VonageのAPIに接続するために必要なコンフィギュレーションとセキュリティ情報のコンテナにすぎません。

vonage apps create "Play audio app" --private-key-file=~/private.key

以下のデータが送られてくるので、メモしておくこと:

名前 プレイオーディオアプリ

アプリケーションID7a319bf9-49e7-413d-914b-402fe8e68228

AIを改善する:オフ

秘密鍵/公開鍵 設定

コマンドの引数に private-key-file.このコマンドを実行すると、秘密鍵がダウンロードされます。 ~/ locationコマンドでは、ホーム・フォルダーであるUNIXライクな. C:\Users\YOUR-USER-NAMEWindowsでPowershellを使用している場合は、...のように設定します)、そのファイルを添付のブログ記事コードのルート・ディレクトリに置きます。 のルート・ディレクトリに置きます。

まだVoice APIを使用するようにアプリケーションを設定していないので、以下のコマンドを実行してVoice機能を追加します:

vonage apps capabilities update [VONAGE_APPLICATION_ID] --voice-answer-url=https://example.com/answer --voice-event-url=https://example.com/event-status

voice-answer-urlvoice-event-urlを設定していることにお気づきでしょう。これらは今のところプレースホルダーであり、これらの値を変更する必要はない。その理由は、呼び出しに使用されるコードが、HTTP呼び出し中に動的にこれらの値を作成するからです。

依存関係を初期化する

このアプリを作成するために、In-Appで通話を行い、通話インスタンスを更新して通話中に音声を再生できるようにするために最低限必要なものを取り上げます。以下のものが必要です:

これらのいずれかをコマンドラインでインストールできる。まず、npmプロジェクトとしてプロジェクトを初期化する必要がある。npmプロジェクトは、プロジェクト全体を定義するための一連の質問をする。インストールしたいパッケージがあるかどうかも尋ねられるが、この後の依存関係の追加方法を明確にするために省略する。また yarnを使うこともできるので、別のターミナルスニペットとして載せておく。どちらを使うか選んでください:

npm init

yarn init

returnを押して、デフォルト値をすべて選択する。この文脈では重要ではないので、このパッケージを何と呼んでもよい。これを実行すると、npmまたはyarnがあなたのために package.jsonファイルが作成されます。ここから各パッケージを追加していく:

npm install dotenv express @vonage/server-sdk @vonage/voice

アプリケーションをインターネットに公開する

VonageのサーバーがVoice API webhooksをアプリケーションに送信できるように、アプリケーションをインターネットに公開する必要があります。そのためには ngrokを使うことをお勧めします。

ngrokを立ち上げて実行する方法については、以下を参照してください。を参照して、ポート3000(これはexpress.jsのデフォルトポートです)にngrokをインストールして実行してください。例えば

ngrok http 3000

ngrok は、次のような一時的な URL を提供します。 https://914288e7.ngrok.io.それをメモしておいてください。

アプリケーションを使用している間は、ngrokを起動したままにしておくこと。そうしないと、URLが変わってしまうので、再設定が必要になる。

環境を設定する

了解。 example.envをクリックします。 .env にコピーし、上記の手順で収穫した詳細を入力する:

VONAGE_APPLICATION_ID= The Voice API application ID

VONAGE_APPLICATION_PRIVATE_KEY_PATH= private.key

VONAGE_NUMBER= The number you rented from Vonage

TO_NUMBER= The number you want the application to call

BASE_URL= The ngrok temporary URL

これで、実際にアプリケーションを見る準備ができました!

アプリケーションの実行

以下のコマンドを実行してアプリケーションを起動する:

node server.js

express.jsアプリが正常であれば、アプリがポート3000でリッスンしているというログが表示されるはずだ。ブラウザで http://localhost:3000/callにアクセスしてください。これは GETリクエストを行います。 /call エンドポイントにGETリクエストを行い、アプリケーションの TO_NUMBERを鳴らします。 .env.

メッセージが聞こえ、その後20秒間音楽が流れ、通話が切れます。

どのように機能するのか?

このコードがどのように組み合わされているかを見てみよう。アプリケーションの動作には3つの部分がある:

  1. アウトバウンドコールをかける。

  2. VonageにNCCOオブジェクトを渡し、エンドカスタマがコールに応答したときの処理を定義する。

  3. 保留音楽のオーディオをアクティブ通話にストリーミングする。

アウトバウンドコールをかける

以下のコードは GETリクエストを /callエンドポイントに

try {

   console.log("Making the outbound call...");

   const resp = await voice.createOutboundCall(

     {

       to: [{ type: "phone", number: TO_NUMBER }],

       from: { type: "phone", number: VONAGE_NUMBER },

       answer_url: [answer_url],

       answer_method: HttpMethod.POST, // This will hit the NCCO response

       event_url: [event_url], // Event URL to track events like answered

     }

   );

   console.log("Outbound call response:", resp);

   res.status(200).send("Call initiated!");

 } catch (error) {

   console.error("Error making the outbound call:", error);

   res.status(500).send("Failed to make call.");

 }

その dotenvライブラリが .envファイル変数をインポートする。そして answer_urlここではNCCOを返します。NCCOはNode SDKのNCCO Builderクラスを使って作成します。

答えの定義 NCCO

次のコードで answer_urlをエンドポイントとして定義する:

app.post("/audio/answer", (req, res) => {

 const builder = new NCCOBuilder();

 builder.addAction(

   new Talk('Here is some soothing music for you')

 )

 builder.addAction(

   new Stream(audio_url)

 );

 // Send back the generated NCCO

 res.json(builder.build());

});

まず app.post() で、アプリケーションのルートを定義します。次に起こることは2つの部分に分かれます:Vonageは、電話に出たときに何をすべきかをNCCOの形で指示することを期待しているので、これには2つの部分があります。

1.トークを使ってエンドカスタマーに音楽の到着を伝える

新しい NCCOBuilderオブジェクトを作成したことがわかる。このクラスは必要なメソッドをすべて処理し、開発者のためにNCCO JSONオブジェクトをきちんと構築するようにラップしている。最初のタスクは、素敵な音楽が流れてくることをエンドユーザーに伝えることです。 Talk() オブジェクトを作成します。オブジェクトを使います。 addAction()オブジェクトを使用して、通話中にVonageに指示したい値オブジェクトを追加できます。これにはDTMF、音声録音のキャプチャ、音声合成などです。

2.アクティブ通話にサウンドをストリーミング

このNCCOは同期的に構築されるので、NCCOペイロードの命令は一度にひとつずつ実行される。次の命令は、呼び出しにストリーミングするホストされている音楽ファイルの公開URLを与えることである。これは Talk()アクションと非常に似ている。ビルダーに、実行する新しいシーケンシャルアクションを与える。 Stream()アクションである。最初の引数は、指定したいURLの文字列で、すでに audio_url変数として定義済みです。

これで完成だ!電話に出るときにVonageに通話中のコマンドを2つ送れば、架空の、おそらくストレスフルな行列で待っている間、素敵なリラックス音楽が聴けるのだ...コンサートのチケットとか、医者の予約とか。

結論

この投稿では、既存の通話にオーディオを再生する方法と、通話の流れを制御するNCCOについて学びました。 actionsについて学んだ。さまざまなオーディオファイルやNCCOに置き換えて、自由に実験してください。 actions.以下のリソースが役立ちます:

ご質問がある場合、またはあなたが作っているものを共有したい場合は、こちらをクリックしてください。

最新の開発者向けニュース、ヒント、イベント情報をお届けします。

シェア:

https://a.storyblok.com/f/270183/400x400/3f6b0c045f/amanda-cavallaro.png
Amanda Cavallaroデベロッパー・アドボケイト