音声とタッチトーン入力によるシンプルなIVRの構築方法
アン インタラクティブ・ボイス・レスポンス(IVR) は、電話応対者にオプションメニューを提供することで、電話応対を自動化します。従来のIVRはキーパッド(DTMF)入力に依存していましたが、最近のシステムでは、より自然なユーザーエクスペリエンスを実現するために、音声合成(ASR)が含まれていることが多くなっています。IVRでは 高度なIVR のガイドを参照されたい。
このガイドでは、通話に応答し、ユーザーにキーを押すか話すかを促すNode.jsアプリケーションを構築します。アプリケーションは、その入力を繰り返し発信者に返します。
前提条件
プロジェクトフォルダを初期化する
Vonageリソースを設定する前に、コードのホームを作成してください。これにより、後でセキュリティ・キーの保存先を確保できます。
mkdir simple-ivr && cd simple-ivr npm init -y npm install express body-parser
ローカルサーバーの公開
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リソースのプロビジョニング
を使用して環境を設定します。 Vonage APIダッシュボード.
音声アプリケーションの作成
- に移動する。 Applications > 新規アプリケーションの作成.
- アプリケーションに名前を付けます(例:Simple-IVR-Speech-DTMF)。
- クリック 公開鍵と秘密鍵の生成.
- ダウンロードした
private.keyファイルをsimple-ivrのプロジェクトフォルダに追加します。 - アンダー 能力有効にする 声.
- を設定する。 回答URL を ngrok URL に追加します。
/webhooks/answerを追加した。例https://{random-id}.ngrok.app/webhooks/answer.メソッドをGETに設定する。 - を設定する。 イベントURL を ngrok URL に追加します。
/webhooks/eventsを追加した。例https://{random-id}.ngrok.app/webhooks/events.メソッドをPOSTに設定します。 - クリック 新規アプリケーションの作成 一番下にある。
仮想番号をリンクする
- に移動する。 電話番号 > ナンバーズを買う でナンバーを借りる。 声 の能力がある。
- 戻る ApplicationsIVRアプリケーションを選択し、新しい番号をリンクします。
インバウンドコールへの対応
ユーザーがあなたの番号に電話をかけると、VonageはNCCO(呼び出し制御オブジェクトという名前のファイルを作成します。という名前のファイルを作成します。 index.js そして以下のコードを追加する:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
// 1. Initial greeting and input request
app.get('/webhooks/answer', (req, res) => {
const ncco = [
{
action: 'talk',
text: 'Hello. Please enter a digit or say something.',
bargeIn: true
},
{
action: 'input',
type: ['dtmf', 'speech'],
dtmf: { maxDigits: 1 },
speech: { language: 'en-us' },
eventUrl: [`${req.protocol}://${req.get('host')}/webhooks/input`]
}
];
res.json(ncco);
});
音声およびDTMF入力の処理
入力ハンドラを index.js ユーザがメニューを操作すると、Vonageが送り返すペイロードを処理する。
// 2. Handle the user's response
app.post('/webhooks/input', (req, res) => {
let responseText = "I'm sorry, I didn't catch that.";
if (req.body.dtmf && req.body.dtmf.digits) {
responseText = `You pressed ${req.body.dtmf.digits}.`;
}
else if (req.body.speech && req.body.speech.results) {
const transcript = req.body.speech.results[0].text;
responseText = `You said: ${transcript}.`;
}
res.json([{ action: 'talk', text: responseText }]);
});
// 3. Log call events
app.post('/webhooks/events', (req, res) => {
res.sendStatus(200);
});
app.listen(3000, () => console.log(`IVR server running on port 3000`));
IVRのテスト
- サーバーを起動してください:
node index.js. - Vonageの番号に電話する:
- キーパッド1を押します。IVRが表示されます、 あなたは1を押した。
- スピーチと言う こんにちは。 IVRはこう言うべきだ、 あなたは言った:こんにちは。
次のステップ
- 電話転送:を追加する
connectを介したユーザー入力に基づいて、発信者を関連部門に接続するアクション。 電話番号、SIPエンドポイント、またはWebアプリケーション Client SDKを使用します。 - 通話録音: 記録と転写 との通話
recordアクションだ。 - 音声AI: ユーザーの入力をAIエージェントに渡す 通話相手に貴重な情報を提供する。
- カスタマイズ:変更 音声合成 を使うか ストリーム アクションで、音声合成の代わりに録音済みのMP3ファイルを再生します。