🔰

Vonageによる通話の転送

2024/09/04に公開

はじめに

こんにちは。KDDI ウェブコミュニケーションズの西嵜(にしざき)です。

この記事では、Vonage を用いて着信通話を別の電話番号へ転送する方法について、ご紹介いたします。

本記事の対象となる読者

  • Vonage に興味のある方
  • Vonage での通話転送を実現する方法を学びたい方

準備

この記事でご紹介する手順では、以下のものが必要となります。

  • Vonage アカウント
    • API キー(アカウントを開設すると、自動的に付与されます)
    • Vonage 電話番号
  • Node.js
    • 最新の LTS の利用を推奨します。
  • Vonage CLI
    • Vonage のさまざまな要素を操作するためのコマンドライン・インターフェースです。
  • ngrok
    • ローカル PC で作成したスクリプトを外部に公開するために利用します。
  • 電話機 2 つ
    • 今回は着信転送を実装するため、発信側と着信側、合わせて 2 つの電話機が必要となります。

手順

Node.js での NCCO スクリプトの実装

通話転送を実現するためには、NCCO をレスポンスとして返すスクリプトが必要となります。

スクリプトの実装言語には多くの選択肢がありますが、今回は Node.js を用います。以下の Node.js のコードを記載し、connect-inbound-calls.js というファイル名で保存します。

connect-inbound-calls.js
const express = require('express');
const app = express();

const webhookConnect = (req, res) => {
  const ncco = [
    {
      action: 'talk',
      text: '通話を転送します',
      language: 'ja-JP',
    },
    {
      action: 'connect',
      from: 'VONAGE_NUMBER',
      endpoint: [
        {
          type: 'phone',
          number: 'DESTINATION_NUMBER',
        },
      ],
    },
  ];
  res.json(ncco);
};

const webhookEvent = (req, res) => {
  console.dir(req);
  res.status(200).end();
};

app.all('/webhooks/connect', webhookConnect);
app.all('/webhooks/event', webhookEvent);
app.listen(3000);
  • VONAGE_NUMBER の部分は、取得された Vonage 電話番号に置き換えます。この番号は、通話が転送された際、着信側の電話機に発信元番号として表示されるものです。
  • DESTINATION_NUMBER の部分は、着信側の電話番号に置き換えます。ここで指定された番号に対して、転送通話を発信します。
  • 上記 2 つの電話番号については、MSISDN 形式で指定します。日本の番号であれば、先頭の 0 を除去し、代わりに国番号である 81 を加えます。たとえば、090AAAABBBB であれば、MSISDN 形式は 8190AAAABBBB となります。

Node.js 依存パッケージのインストール

今回は、Node.js 用のシンプルなウェブアプリケーションフレームワークである Express を利用するため、これをインストールします。

npm install --save express

Node.js スクリプトの実行

先ほど、記載した Node.js スクリプトを実行します。

node connect-inbound-calls.js

すると、以下の 2 つの URL で HTTP リクエストを待機します。この後は、Control-C などは入力せず、新しいターミナル画面を開きます。

ngrok による URL の公開

上記のスクリプトは、同じ PC からしかアクセスできません。これを Vonage からもアクセスできるように、ngrok を用いて URL を与えます。

ngrok http 3000

実行した際、「Forwarding」の項目に表示される URL が、ngrok によって外部に公開された URL なので、これをメモしておきます。またこの後は、Control-C などは入力せず、新しいターミナル画面を開きます。

Vonage CLI によるアプリケーションの構成

  • Vonage CLI をインストールします。
npm install -g @vonage/cli
  • Vonage CLI を用いて、Vonage アプリケーションを新たに作成します。
    • URL のドメイン部分(DOMAIN)は、先ほどコピーしておいたものを指定します。
    • 実行した際に表示される「Application ID」は、後の手順で必要となるため、コピーしておいてください。
vonage apps:create "connect_inbound_calls" \
--voice_answer_url="https://DOMAIN/webhooks/connect" \
--voice_event_url="https://DOMAIN/webhooks/event"
  • Vonage CLI を用いて、作成した Vonage アプリケーションに Vonage 電話番号(MSISDN 形式)を割り当てます。
vonage apps:link (上記でコピーしたApplication ID) --number="(Vonage電話番号)"

通話の実行

  • 発信側の電話機から、Vonage 電話番号に対して通話を発信し、以下のように動作すれば成功です。
    • 発信側の電話機で「通話を転送します」という音声が流れ、続いて待ち受け音声が始まる。
    • 着信側として指定した電話番号に、その Vonage 電話番号から着信する。
    • 着信側が応答すると、発信側の電話との間で通話が開始される。

まとめ

  • NCCO の Connect action を用いると、Vonage 電話番号への着信を別の電話番号に転送できます。
  • Node.js の express と ngrok との組み合わせで、簡易な NCCO を構成し、通話テストを実施できます。

参考ウェブサイト

KWCPLUS

Discussion