https://d226lax1qjow5r.cloudfront.net/blog/blogposts/how-to-handle-inbound-phone-calls-with-node-js/inbound_text-to-speech_node-js.png

Node.jsで着信電話を処理する方法

最終更新日 March 16, 2023

所要時間:1 分

はじめに

Vonage Voice API Voice APIは、クラウド上で高品質のVoiceアプリケーションを構築する最も簡単な方法です。Voice APIを使用すると、次のことが可能になります:

  • すでに使用しているウェブ技術で拡張性のあるアプリを構築。

  • を使用して、JSONで着信および着信コールのフローを制御します。 Nexmoコール・コントロール・オブジェクト(注:Nexmoは現在Vonageです)。

  • インバウンドまたはアウトバウンドコールの録音と保存

  • 電話会議の開催

  • 音声合成メッセージ性別やアクセントの異なる40の言語で。

  • そしてもっと!

このチュートリアルでは、Node.jsを使ってWebhookを実装し、着信コールを受信する方法を学びます。

前提条件

作業を始める前に、以下のことを確認してください:

  • Node.jsをインストールしました。Node.jsはオープンソースのクロスプラットフォームJavaScript実行環境です。

  • ngrok- 無料アカウントが必要です。このツールを使用すると、開発者はローカルの開発サーバーをインターネットに公開することができます。

  • オプション - Vonage CLINode.jsがインストールされたら、CLIをインストールします。 npm install -g @vonage/cli.このツールを使用すると、Vonage Developer Portalに対してコマンドラインインタフェースからVonageアプリケーションを作成および管理することができます。

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

使用するには Voice API を使用するにはを使用するには アプリケーションを作成する必要があります。アカウントをお持ちでない場合は、アカウントを作成してください。クレジットカードは必要ありません。

アプリケーションのウェブフックなどを設定する必要があります。これは デベロッパーポータルまたは Vonage CLI.このチュートリアルでは、Vonage Developer Dashboard を使用します。

アカウントを作成した後、Vonage Developer Dashboardにログインし、次のセクションを探します。 アプリケーションセクションを探し、新しいアプリケーションを作成します。アプリケーションに次のような名前を付けます。 インバウンドコール.

Creating the applicationInboundCall.png

ページをスクロールダウンして Voice機能がオンになっていることを確認してください。

をメモしてください。 答えイベントのURLをメモしておいてください。を残しておきます。 フォールバックURLは空白にしておきます。

Turning on the Voice CapabilityVoiceCapability.png

プレス 新規アプリケーションの作成を押してください。

このチュートリアルではバーチャル電話番号も使用します。購入するには Numbers> 番号を購入するにアクセスし、ニーズに合ったものを検索してください。番号が決まったら、以下のようにVonage Developer Dashboardにリンクします。

Adding a number to the applicationLinkedNumber.png

次に、ngrokを使って、ローカル・マシンのウェブフック・エンドポイントをパブリックURLとして公開します。

ngrokを走らせる

ngrokは、開発者が最小限の労力でローカルの開発サーバーをインターネットに公開することを可能にするクロスプラットフォームアプリケーションです。我々のサービスをインターネットに公開するために使用する。ngrokをセットアップしてログインしたら(ここでも無料アカウントでOK)、次のコマンドを実行する:

ngrok http 4001

ngrok が実行されると、次のようなメッセージが表示されます。 転送このURLは、この記事の後半でWebhooksのベースとして使うことになる。私のは以下のような感じだ:

ngrok running successfullyngrok.png

を思い出してください。 答えそして イベントVonage Developer Portal の URL を覚えていますか?ngrok URLを使用し、各フィールドを埋める必要があります。 /answer/eventを追加して各フィールドを埋める必要があります。

ngrok running successfullywebhooksection.png

アプリケーションに関連付けられた番号に電話をかけ、応答があると 応答URLがトリガーされます。同様に、イベントは POST リクエストでログに記録され、番号に電話をかけた時や、番号がビジー状態の時などにトリガーされます。

Node.jsプロジェクトのセットアップ

開発者ダッシュボードで Vonage Voice Applications を作成したので、Node.js アプリケーションをどのように設定するか見てみましょう。

コマンド/ターミナル・プロンプトを開き、作業ディレクトリを作成し、Node.jsプロジェクトを初期化することから始める。

npm init -y

で対応させていただきます。 エクスプレスで処理し ボディパーサーを使います。これらの両方を

npm install express body-parser --save

ファイルを作成し index.jsファイルを作成し、expressをインスタンス化し、ポート4001でサーバーをリッスンする。ngrokをexposeに設定したので、同じポートを使用しなければならない。 localhost:4001に設定したので、同じポートにこだわる必要があります。

'use strict'
const app = require('express')();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
const server = app.listen(process.env.PORT || 4001, () => {
  console.log('Express server listening on port %d in %s mode', server.address().port, app.settings.env);
});

アンサーURLのエンドポイントを /answerイベントURLは /event.

のリクエストを処理するHTTP GETルートを作成する。 /answerへのリクエストを処理するHTTP GETルートを作成する:

app.get('/answer', function (req, res) {
  const ncco = [
    {
      action: 'talk',
      voiceName: 'Jennifer',
      text: 'Hello, thank you for calling. This is the Jennifer voice from Vonage.'
    }
  ];
  res.json(ncco);
});

合成音声が読み上げるテキストをJSON(この場合はJavaScriptオブジェクト)で定義します。NCCOオブジェクトをカスタマイズするには オプションのパラメータを指定することで、言語や性別、さらにはアクセントによって様々なエージェントをカスタマイズすることができます。

のエンドポイントは event_urlのエンドポイントはPOSTでなければならないので、次のように定義しよう。 /event:

app.post('/event', function (req, res) {
  console.log(req.body);
  res.status(204).end();
});

端末のステータスをモニターすることに留意してください。この コードサンプルを参照してください。タイムアウトや通話中、未通話などを処理するフォールバックの例です。

アプリケーションの実行

コマンド/ターミナルプロンプトで以下のように入力し、アプリケーションを実行します:

node index.js

実際に電話をかけてみましょう!物理的な電話からバーチャル番号に電話をかけます。すべてがうまくいけば、NCCOで定義したメッセージが聞こえるはずです。

また、端末で通話状況を確認してください。以下は、私のがどのように見えるかのサンプルである:

{
  headers: {},
  from: '19999999999',
  to: '19999999999',
  uuid: '912e...',
  conversation_uuid: 'CON-07f...',
  status: 'ringing',
  direction: 'inbound',
  timestamp: '2023-02-22T19:27:47.276Z'
}

ステータスは、コールが現在どのイベントにいるかによって変化する。例えば ringingで始まり、次に startedで始まり、次に answeredそして最後に completedとなり、最後に

まとめ

Vonage Voice APIとNode.jsを使用してインバウンドコールを作成した後は、次の方法を学びましょう。 音声合成メッセージをを学んでみませんか?また Voice APIについての詳細や、いくつかの素晴らしい コードスニペット.

ご質問やフィードバックがありましたら Vonage開発者向けSlackに参加するか ツイッターをお送りください。また次回もお楽しみに!

シェア:

https://a.storyblok.com/f/270183/400x400/7cdff37c0e/michael-crump.png
Michael Crumpデベロッパー・エクスペリエンス・マネージャー

マイケル・クランプはVonageのデベロッパーエクスペリエンスチームに所属し、コーダー、YouTuber、そして様々な.NETやクラウド/通信開発トピックについて頻繁に講演を行っています。彼は、開発者がそれぞれの利点を分かりやすく理解できるようにすることに情熱を注いでいます。