音声通知の送信方法

電話は、重要なアラートを配信するための優先度の高い方法です。このガイドでは、受信者リストへの音声通知の自動化、カスタムメッセージの再生、およびキーパッド(DTMF)入力によるユーザー確認の取得方法について説明します。

前提条件

プロジェクトフォルダを初期化する

  1. コードとセキュリティー・キーが置かれる環境を作る。
  2. ターミナルを開き、新しいディレクトリを作成する:
mkdir voice-notifications && cd voice-notifications
  1. プロジェクトを初期化し、Vonage SDKとExpressをインストールします:
npm init -y npm install @vonage/server-sdk express

ローカルサーバーの公開

Vonage needs to send webhooks to your local machine. Use ngrok to expose your server:

ngrok http 3000

Note: Keep this terminal open and copy your ngrok URL. You'll need it in the next steps.

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

ダッシュボードから認証情報を作成し、作成したフォルダに保存します。

  1. Vonage Dashboardにログインします。

  2. こちらへ アプリケーション > 新規アプリケーションの作成.

  3. 認証クリック 公開鍵と秘密鍵の生成.

    • という名前のファイル private.key をダウンロードする。
    • これを動かす private.key ファイルをダウンロードフォルダから voice-notifications フォルダー
  4. 機能音声を有効にする。

  5. 音声の設定で、以下のウェブフックを設定する:

    • 回答URL https://{random-id}.ngrok.app/answer (メソッド:
      GET
      )
    • イベントのURL https://{random-id}.ngrok.app/event (メソッド:
      POST
      )
  6. クリック 変更を保存する 一番下にある。

ウェブフック・サーバー(server.js)の作成

Vonageは通話に応答する際、以下の情報を取得します。 呼制御オブジェクト(NCCO) あなたの answer_url.このJSON配列は、呼び出しが従う「スクリプト」を定義する。 という名前のファイルを作成する。 server.js そして、NCCOを提供するためにウェブフックをセットアップする:


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

app.get('/answer', (req, res) => {
  // NCCO defines what the recipient hears
  res.json([
    {
      action: 'talk',
      text: 'This is a priority notification. Please press 1 to confirm receipt.'
    },
    {
      action: 'input',
      type: [ 'dtmf' ],
      dtmf: { maxDigits: 1 }
    }
  ]);
});

app.post('/event', (req, res) => {
  // Capture the button press
  if (req.body.dtmf && req.body.dtmf.digits === '1') {
    console.log(`✅ Confirmation received from UUID: ${req.body.uuid}`);
  }
 if (status) {
    console.log(`Call Status Update: ${status} (UUID: ${req.body.uuid})`);
  }
  res.status(204).send();
});

app.listen(3000, () => console.log('🚀 Webhook server listening on port 3000'));

ブロードキャスト・スクリプト(broadcast.js)の作成

という名前のファイルを作成する。 broadcast.js.このスクリプトは、アウトバウンドコールをトリガーする。


const { Vonage } = require('@vonage/server-sdk');

// --- 1. CONFIGURATION ---
const API_KEY = "YOUR_API_KEY";
const API_SECRET = "YOUR_API_SECRET";
const APP_ID = "YOUR_APP_ID";
const VONAGE_NUMBER = "YOUR_VONAGE_NUMBER";
const TUNNEL_URL = "https://{random-id}.ngrok.app" // From the ngrok step above

// --- 2. PLACEHOLDER PROTECTION ---
const config = { API_KEY, API_SECRET, APP_ID, VONAGE_NUMBER, TUNNEL_URL };
Object.keys(config).forEach(key => {
    if (config[key].includes("YOUR")) {
        console.error(`❌ ERROR: The ${key} placeholder has not been updated!`);
        process.exit(1);
    }
});

const vonage = new Vonage({
  apiKey: API_KEY,
  apiSecret: API_SECRET,
  applicationId: APP_ID,
  privateKey: './private.key'
});

const recipients = [
  { name: 'Alice', number: '15551234567' }
];

async function broadcast() {
  for (const person of recipients) {
    try {
      const result = await vonage.voice.createOutboundCall({
        to: [{ type: 'phone', number: person.number }],
        from: { type: 'phone', number: VONAGE_NUMBER },
        answer_url: [`${TUNNEL_URL}/answer`],
        event_url: [`${TUNNEL_URL}/event`]
      });
      console.log(`☎️  Calling ${person.name}... (UUID: ${result.uuid})`);
    } catch (err) {
      console.error(`❌ Failed to call ${person.name}:`, err.message);
    }
  }
}

broadcast();

交換 YOUR_VONAGE_NUMBER をあなたのVonage Numbersのいずれかと組み合わせてください。新しいVonageアカウントをお持ちで、まだNumbersをお持ちでない場合は、発信者IDとしてテスト番号123456789を使用し、サインアップ時に最初に提供した番号に電話をかけることができます。この機能は、アカウントにクレジットを追加するまで、デモまたはトライアルアカウントでのみご利用いただけます。

通知をテストする

  1. サーバーを起動します:実行 node server.js をプロジェクトフォルダーに追加する。
  2. 放送を開始する:別の端末で node broadcast.js. 電話を鳴らし、メッセージを再生し、"1 "を押すとコンソールにあなたの確認が記録されます。

次のステップ

カスタマイズ: 変更 音声合成 を使うか ストリーム アクションで、音声合成の代わりに録音済みのMP3ファイルを再生します。

音声AI: で相手の返事を聞く。 音声テキスト または音声ボットを ウェブソケット.

留守番電話: 用途 留守番電話検出 をクリックしてボイスメールにメッセージを残す。

スケーラビリティ: 大規模なリストには、Vonageを尊重するキュー・システムを導入する。 料金制限.