[Twilio]発信者の声を録音して再生してみる#7
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メッセージを送れば、削除することができます。
まとめ
今回は発信者メッセージの録音を試してみました。 録音した音声はすぐに誰でもアクセスできる状況になるので、いろいろ使い道がありそうです。