JavaScript

ウェブフック・サーバーの作成

インバウンドコールを受信すると、Vonageはお客様が選択した一般にアクセス可能なURLへのリクエストを行います。 answer_url.このリクエストを受信し、次のリクエストを返すことができるWebhookサーバーを作成する必要があります。 エヌシーシーオー を含む。 connect に電話を転送する。 ユーザーの アプリを使用します。このためには to クエリ・パラメータを返します。

新プロジェクト

任意の保存先に新しいプロジェクト・ディレクトリを作成し、そこに移動する:

mkdir vonage-tutorial cd vonage-tutorial

フォルダ内で、以下のコマンドを実行して新しいNode.jsプロジェクトを初期化する:

npm init -y

依存関係の追加

次に、必要な依存関係をインストールする:

npm install express localtunnel --save

サーバーファイルの作成

プロジェクトフォルダー内に server.js 以下のコードを追加してください。 SUBDOMAIN に実際の値を指定します。使用された値は、次のステップでウェブフックとして設定するURLの一部になります。

'use strict';

const subdomain = 'SUBDOMAIN';

const express = require('express')
const app = express();
app.use(express.json());

app.get('/voice/answer', (req, res) => {
  console.log('NCCO request:');
  console.log(`  - caller: ${req.query.from_user}`);
  console.log(`  - callee: ${req.query.to}`);
  console.log('---');
  let ncco = [{"action": "talk", "text": "No destination user - hanging up"}];
  const username = req.query.to;
  if (username) {
    ncco = [
      {
        "action": "talk",
        "text": "Connecting you to " + username
      },
      {
        "action": "connect",
        "endpoint": [
          {
            "type": "app",
            "user": username
          }
        ]
      }
    ]
  }
  res.json(ncco);
});

app.all('/voice/event', (req, res) => {
  console.log('EVENT:');
  console.dir(req.body);
  console.log('---');
  res.sendStatus(200);
});

if(subdomain == "SUBDOMAIN") {
  console.log('\n\t🚨🚨🚨 Please change the SUBDOMAIN value');
  return false;
}
app.listen(3000);

const localtunnel = require('localtunnel');
(async () => {
  const tunnel = await localtunnel({ 
      subdomain: subdomain, 
      port: 3000
    });
  console.log(`App available at: ${tunnel.url}`);
})();

注: 忘れずに交換してください。 SUBDOMAIN には、4~20文字の英数字(アンダースコアやダッシュは使用せず、アルファベットとNumbers)から選択したランダムな文字列を入力します。

上記のサーバーコードには2つの部分がある:

エクスプレス・サーバー

最初の部分は Express サーバーに接続し、ローカルでポート 3000.サーバーは2つのパスを公開する:

  1. /voice/answeranswer_url 前述したとおりである。それは JSON 応答には、呼のデスティネーションユーザーが含まれる。

    この点にも注目してほしい。 user から抽出される。 req.query.to パラメータを使用する。動的に構築されたNCCOは、次に connect アクションだ。

  2. 2つ目だ、 /voice/eventVonageが通話中に発生するすべての出来事を通知するように、通話先を設定します。 event_url.

について localtunnel 統合

上記のサーバーコードの2番目の部分は Express サーバーからアクセスできるようにします。

注: localtunnel はJavaScriptライブラリで、あなたのローカルホストを世界中に公開し、テストや共有を容易にします!DNSをいじったり、あなたの変更を他の人に試してもらうためにデプロイしたりする必要はありません。

サーバーの起動

ターミナルで以下のコマンドを実行すれば、サーバーを起動できる:

node server.js

サーバーが利用可能になったことを知らせる通知が表示されます:

App available at: https://SUBDOMAIN.loca.lt

次のステップでURLが必要になるので、ターミナル・ウィンドウを手元に置いておいてください。