
Node.jsで着信の音声を録音する方法
所要時間:2 分
このチュートリアルは、「NexmoとNode.jsの入門」シリーズの第3回目であり、SMS APIの入門シリーズに続くものです。これらのシリーズの以前のチュートリアルへのリンクは、記事の下にあります。
前回のチュートリアルでは、音声アプリケーションを作成し、Nexmo Voice API と Node.js クライアントライブラリを使用してテキストから音声への通話を受信する方法を学びました。このチュートリアルでは、アプリを拡張して、発信者からのメッセージを録音します。
ソースコードを見る レコードコール.jsギットハブ
着信を録音するためのNexmo Call Controlオブジェクトの定義
前回のチュートリアルでは、ウェブフック・エンドポイントのURLを作成し、それを音声アプリケーションに関連付け、着信コールを受け取る方法について説明しました。 着信コールを受け取る.このチュートリアルでは NCCOを修正します。前のチュートリアルをまだ完了していない場合は、まずそちらに従ってください。
開始するには を実行する。:
のような転送 URL を、開発中の一時的なウェブフック・エンドポイントとして使用します。 https://db95720f.ngrok.ioを開発中の一時的なウェブフックエンドポイントとして使用することになります。
ngrokのURLでNexmoアプリケーションを更新してください。(同じngrokまたはサーバーのURLを使用して再開する場合は、この部分をスキップできます):
では、Webhookのコードを修正しましょう。
のリクエストを処理するために、HTTP GETルートのNCCOを編集する。 /answer:
app.get('/answer', function (req, res) {
const ncco = [
{
'action': 'talk',
'voiceName': 'Jennifer',
'text': 'Please leave your name and quick message after the tone, then press #.'
},
{
'action': 'record',
'eventUrl': ['https://db95720f.ngrok.io/record'],
'endOnSilence': '3',
'endOnKey' : '#',
'beepStart': 'true'
},
{
'action': 'talk',
'voiceName': 'Jennifer',
'text': 'Thank you for your message. Ciao!'
}
];
res.json(ncco);
});に注目してほしい。 eventUrlに注目してほしい。ここに録画に関する情報が送られる。アプリケーション用に作成した一般的な /eventルートを再利用することもできますし、別のPOSTルートを作成することもできます:
app.post('/record', (req, res) => {
console.log(req.body);
res.status(204).end();
});
スクリプトを実行し、Nexmoの電話番号に電話をかけてみてください。すべてがうまくいっていれば、"Jennifer "からの挨拶とビープ音が聞こえるはずです。メッセージを残し、キーパッドの#を押してください。
デフォルトでは、録音された音声はMP3形式で保存され、Nexmoによって30日間保存されます。
録音が完了すると、イベントはオーディオファイルのURLを含む情報を返す、 recording_uuid:
{ start_time: '2017-01-19T00:34:48Z',
recording_url: 'https://api.nexmo.com/v1/files/486fadc7-2abb-4f56-985e-fb83102acb82',
size: 19181,
recording_uuid: '33e0c756-5405-44d9-b869-197e55e780f0',
end_time: '2017-01-19T00:34:53Z',
conversation_uuid: 'de783420-379c-409e-8c73-1ea1e6b2a38e' }次に、録音を recording_url.
ボイスメールメッセージの取得
では /recordルートを修正して、録音が完了したらすぐにオーディオファイルをダウンロードするようにしよう。
Nexmo Node.jsライブラリをnpm経由でインストールします。この機能を使用するには、ライブラリのバージョン1.2.0が必要です。 save機能を使うにはライブラリのバージョン1.2.0が必要なので、古いバージョンを使っている場合はアップグレードしてください。
モジュールをインクルードし nexmoモジュールをインクルードし、認証情報、アプリID、そして前のチュートリアルのCLIツールで生成した秘密鍵で初期化する。 で生成した秘密鍵で初期化します。:
const Nexmo = require('nexmo');
const appId = 'c6b78717-db0c-4b8b-9723-ee91400137cf'; // Use your own App ID!
const privateKey = require('fs').readFileSync(__dirname + '/private.key');
const nexmo = new Nexmo({
apiKey: NEXMO_API_KEY,
apiSecret: NEXMO_API_SECRET,
applicationId: appId,
privateKey: privateKey
});先に説明したように、Voiceメッセージが録音されると、指定されたWebhookがトリガーされ、その情報が recording_url.このURLからMP3音声ファイルを取得することができます。録音されたファイルIDは でないことに注意してください。他の uuids!
ルートを修正して /recordルートを修正して files.saveメソッドを使ってファイルをディスクにダウンロードしよう:
app.post('/record', (req, res) => {
let audioURL = req.body.recording_url;
let audioFile = audioURL.split('/').pop() + '.mp3';
nexmo.files.save(audioURL, audioFile, (err, response) => {
if(response) {console.log('The audio is downloaded successfully!');}
});
res.status(204).end();
});
スクリプトを実行し、Nexmoの電話番号に電話をかけてメッセージを録音します!通話が終わると、同じディレクトリに音声ファイルがダウンロードされます!やった

さらに詳しく
Nexmo APIとNode.jsをより深く知るためのリソースをご紹介します。