
Koa.jsで音声プロキシ経由で電話を転送する
所要時間:7 分
はじめに
このチュートリアルでは、アプリケーションに Voice 機能を追加する方法を紹介します。Node.js用のウェブフレームワークであるKoaを使用して、着信とイベントを処理するサーバーを作成します。 Vonage Voice APIを使用します。さっそく始めましょう。
プロジェクト概要
このプロジェクトが終わるころには、あなたのプロジェクト・フォルダーはこのようになっているはずだ:
前提条件
このチュートリアルに従うには、以下のものが必要だ:
セットアップ・ングロック
アプリケーションをライブ環境にデプロイすることなく、ローカル・マシンからエンドポイントを公開できるようにするために、ローカル・サーバーをインターネットからアクセスできるようにする。 ngrok
インストールが完了したら、新しいターミナル/コマンドプロンプトウィンドウで、以下を開始します。 ngrokをポート3000で起動する:
ngrok http 3000
Vonageのセットアップ
セットアップVonage CLI
Vonage CLIを使用してVonageアプリケーションを作成および管理できます。まだインストールしていない場合はインストールしてください:
npm install @vonage/cli -g
APIキーとAPIシークレットの設定
APIキーとAPIシークレットを設定するコマンドを実行します。この後 Configuration savedと表示されます。
その VONAGE_KEYと VONAGE_SECRETは Vonageダッシュボード.
Vonage Dashboard
アプリケーションの作成
CLIを使用して音声機能を持つ新しいアプリケーションを作成し、作成時に提供されたアプリケーションIDをメモしておきます。コマンドを実行して、新しい Vonage アプリケーションを作成します。
その後、いくつかのフィールドを持つプロンプトがポップアップ表示されるので、以下のように入力する。
このような返事が返ってくるはずだ:
バーチャル番号のレンタル
次に、着信時の「顔」となるバーチャル番号が必要です。この番号はVonageアプリケーションにリンクされる:
ご希望の地域で利用可能な Numbers を検索します。ありがたいことに、このようにCLIから直接Numbersを購入することができます!
vonage numbers:search US(必要に応じてUSを国番号に置き換えてください)。番号を買う:
vonage numbers:buy 12079460000 US.
コマンドラインでは購入できないNumbersもありますので、ダッシュボードから購入する必要があります。購入するには Vonageダッシュボードと 番号購入ページ.検索フィルターで「Voice」にチェックを入れ、番号を購入したい国を選択します。
アプリケーションにバーチャル電話番号をリンクする
番号が決まったら、いよいよVonageアプリケーションに接続します。仮想電話番号は、Vonage Dashboardから直接、またはCLI経由でリンクできます。リンクすることで、バーチャル番号への通話がアプリケーションを経由して正しくルーティングされるようになります。
vonage apps:link --number=12079460000 APPLICATION_ID
ダッシュボードからもできます。ダッシュボードから アプリケーションページをクリックします。リンクしたい番号の横にあるVoiceセクションの「リンク」ボタンをクリックします。
Node.jsプロジェクトの作成
プロジェクト用の新しいディレクトリを作成し、そこに移動します。(フォルダ例
VoiceWithVonage)で新しいNode.jsプロジェクトを初期化する。
npm init -yで初期化し、すべてのデフォルト設定を受け入れます。
依存関係のインストール
私たちのプロジェクトはいくつかの依存関係に依存しており、それらを1つのコマンドでインストールする:
環境変数
アプリケーションの安全性と管理性を保つために、APIキーや電話番号のような機密情報を保存するために環境変数を使用します。
プロジェクト・ルートに .envファイルを作成し、変数を追加します。 Node.jsでの環境変数の使い方については、マイケルのブログ記事を参照してください。
// .env
VONAGE_API_KEY= Your Vonage API key, used for authenticating API requests.
VONAGE_API_SECRET= Your Vonage API secret
VONAGE_APPLICATION_ID= The ID of your Vonage application. Vonage applications allow you to manage your communication services and define how they interact with your web application.
VONAGE_PRIVATE_KEY= The path to your Vonage application's private key file. When you create a Vonage application that uses voice capabilities, you generate a public/private key pair. The private key authenticates your application when making API requests. It will look like nameOfTheFile.key.
FROM_NUMBER= The Vonage virtual number (purchased through Vonage) that calls will come from. It is the number displayed to the user receiving the call.
YOUR_SECOND_NUMBER= The destination phone number to which the call will be forwarded. It should be in [E.164 format](https://en.wikipedia.org/wiki/E.164). Vonageの初期化
Vonage Server SDKはVonageのサービスとの統合を簡単にします。プロジェクトでこれを初期化して Voice 機能を有効にし、プレースホルダの値が API クレデンシャルに置き換えられていることを確認します。 .envファイルに保存されている API 認証情報に置き換わっていることを確認してください。
というファイルを作成し forward_a_call.jsというファイルを作成し、以下のコードを記述する。
// forward_a_call.js
require("dotenv").config();
const { Vonage } = require("@vonage/server-sdk");
// Initialize the Vonage Server SDK with your credentials
const vonage = new Vonage({
apiKey: process.env.VONAGE_API_KEY,
apiSecret: process.env.VONAGE_API_SECRET,
applicationId: process.env.VONAGE_APPLICATION_ID,
privateKey: process.env.VONAGE_PRIVATE_KEY,
}); コアのセットアップ
まずはサーバー環境のセットアップから始める:
require("dotenv").config();
const Koa = require("koa");
const Router = require("@koa/router");
const koaBody = require("koa-bodyparser");
const app = new Koa();
const router = new Router();
app.use(koaBody());ここでは、必要なモジュールをインポートし、Koaアプリケーションを初期化します。 .envファイルからロードします。
koaBodyparser ミドルウェアは、/event webhook で JSON ペイロードを読み込むために不可欠な、受信リクエストのボディを解析するために適用されます。
さらに、ルーティングミドルウェアである@koa/routerを使用して、アプリケーション内でルートを定義・管理しています。これにより、電話に応答するための/answerや、ウェブフックイベントを処理するための/eventのように、異なるパスのアクションを指定することができます。
NCCOで電話に出る
ルートとは /answerルートは、着信コールに応答するように定義されています。Vonageプラットフォームがバーチャル番号へのコールを受信すると、このエンドポイントにコール処理に関するNCCO(コール・コントロール・オブジェクト)と呼ばれる指示を取得するよう要求します。 /answerエンドポイントは、NCCO(Call Control Object)として知られる、コールの処理に関する指示を取得するよう要求します。
この例では NCCOは、まずVonageにメッセージを流し("Please wait while we connect your call.")、次にあなたのVonage番号(YOUR_SECOND_NUMBER)に接続します。FROM_NUMBER)を発信者番号として使用します。
router.get("/answer", async (ctx) => {
const ncco = [
{
action: "talk",
text: "Please wait while we connect your call.",
},
{
action: "connect",
eventUrl: [],
from: process.env.FROM_NUMBER,
endpoint: [
{
type: "phone",
number: process.env.YOUR_SECOND_NUMBER,
},
],
},
];
ctx.body = ncco;
});
イベントの処理、ルートの適用、サーバーの起動
この /eventルートは呼に関連するイベントをキャプチャし、ログに記録する。このエンドポイントは、呼のライフサイクルのデバッグと監視に不可欠である。イベントには、応答済み、完了、失敗などのコールステータスを含めることができる。これらのイベントをログに記録することで、コールフローを把握し、問題をトラブルシューティングすることができます。
最後に、Koaアプリケーションにルートを適用し、サーバーを起動します。
router.post("/event", async (ctx) => {
console.log(ctx.request.body);
ctx.status = 204; // No content to send back
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000, () => console.log("Server running on port 3000"));
アプリケーションはポート 3000 でリッスンし、サーバが実行されるとコンソールにメッセージをログします。ここで、定義したルートにアクセスできるようになり、Vonage Dashboard でアプリケーションのアンサーとイベントのウェブフックに指定した URL に基づいて、Vonage プラットフォームがサーバーとやりとりできるようになります。
アプリケーションの実行とテスト
すべての準備が整ったら、コマンドを実行してサーバーを起動する:
Vonageのバーチャル番号にダイヤルして、コール転送をテストします。で指定した番号にリダイレクトされるはずです。 .envファイルで指定した番号にリダイレクトされるはずです。
結論と私たちとのつながり
おめでとうございます!これでVonageを使った電話転送をマスターしました。ご質問やご提案がある場合、または構築したものを共有したい場合は、当社の Vonage開発者Slackコミュニティに参加するか X(旧 Twitter.