🔰
Vonageによる通話の転送
はじめに
こんにちは。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 を構成し、通話テストを実施できます。
Discussion