この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Twilioでは録音もできます
今回は、Tiwlioの録音機能について紹介します。 Twilioでは、Recordタグを使用することで、 留守番電話にメッセージを吹き込むように、発信者のメッセージを録音することができます。 (Dialタグを使用すれば、双方の会話内容を録音することもできるみたいです) この機能も簡単に実装できるので、やってみましょう。
環境構築方法
実行環境およびTwilioアカウントについては、第1回記事と第2回記事を見て設定&確認しておいてください。 今回も第4回のサンプルをベースに作成するので、Heroku環境とそのサンプルを用意しましょう。
発信者の声を録音して、そのまま再生してみる
さて、今回は任意のTwilioの電話番号をコールすると、録音を促すメッセージが流れ、発信者側の音声を録音できるようにします。 そして、録音が終わるとすぐに録音された音声が再生されるようにします。
1.Voice Request URLを指定
前回はメニュー読み上げのためのURLを指定しました。 今回も番号管理ページで使用する電話番号部分をクリックし、音声通話情報設定ページで、Voice Request URLを下記のように指定しましょう。
http://<デプロイしたサーバのドメイン>/recordMessage
電話をかけると、Twilioは/recordMessageへリクエスト行い、録音のためのTwiMLを返します。
2.アプリケーションを修正
app.jsに2つルート情報を追加します。 録音用TwiMLを返す/recordMessageと、録音後にその音声を再生する/playMessageを追加します。
・
・
//メッセージを録音
app.get('/recordMessage', routes.recordMessage);
//録音したメッセージを再生
app.get('/playMessage', routes.playMessage);
・
・
index.jsに関数を追加します。まずはコール時に録音を行う、recordMessage関数を追加しましょう。
・
・
/** メッセージ録音 */
exports.recordMessage = function (req, res) {
var resp = new twilio.TwimlResponse();
var opt = {
voice: 'woman',
language: 'ja-jp'
}
resp.say('録音を開始します。', opt)
.record({
action: 'http://<デプロイしたサーバのドメイン>/playMessage',
method: 'GET',
finishOnKey: '#',
maxLength:10
}).say('録音できませんでした。', opt);
res.writeHead(200, {'Content-Type': 'text/xml'});
console.log(resp);
res.end(resp.toString());
};
record関数を使用すると、録音を行うことができます。actionは録音終了後にリクエストするURL、methodはリクエスト時のメソッドを指定します。 また、maxLengthでは、録音時間を秒単位で指定することができます。 指定時間内に録音を終了したい場合、finishOnKeyの値を入力すれば、その時点で録音を終了することができます。
次は、録音後に実行するTwiMLを生成するためのplayMessage関数を追加します。 Recordからの遷移先URLでは、「RecordingUrl」というパラメータ名で録音された音声のパスをもっています。 このパスをplay関数に渡して、そのまま再生しています。
/** メッセージ再生 */
exports.playMessage = function (req, res) {
var recordingUrl = req.query.RecordingUrl;
console.log("recordingUrl",recordingUrl);
var resp = new twilio.TwimlResponse();
var opt = {
voice: 'woman',
language: 'ja-jp'
}
resp.say('録音した音声を再生します。', opt)
.play(recordingUrl)
.say('通話を終了します。', opt);
res.writeHead(200, {'Content-Type': 'text/xml'});
console.log(resp);
res.end(resp.toString());
};
3.Herokuにデプロイして確認
いつものように、Herokuへログイン後、デプロイしましょう。
% heroku login //IDパスワード入力
% git add .
% git commit -m "録音機能追加"
% git push heroku master
デプロイと起動が完了したら、Voice Request URLで指定した電話番号にかけてみましょう。 自分の音声を録音することができ、その後すぐに録音した音声が再生されます。
録音された音声は下記URLにアクセスすれば、ブラウザでそのまま再生することもできます。 ※環境により違うので、RecordingUrlを確認してください
http://api.twilio.com/2010-04-01/Accounts/<アカウントID>/Recordings/<id>
なお、上記URLに対してDELETEメッセージを送れば、削除することができます。
まとめ
今回は発信者メッセージの録音を試してみました。 録音した音声はすぐに誰でもアクセスできる状況になるので、いろいろ使い道がありそうです。