Twilioをnode.jsから使い、任意のメッセージで電話をかけさせる#2

2013.04.22

Twilio API

前回はTwilioのアカウントを登録し、実際に電話の送受信を試してみました。
しかし、TwilioはJava/PHP/Ruby/Jacascript等、いろいろな言語から使用できるAPIを提供しています。
今回はnode.jsを使用して任意のメッセージを指定した電話番号にかけて再生させてみましょう。

環境構築方法

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.7.5
  • Node.js : v0.10.0
  • npm : 1.2.14

npmを使用して必要モジュールをインストールしましょう。

% npm install twilio querystring

なお、Twilioのアカウント取得は完了しているものとします。

メッセージコールサンプルの実装

では、簡単なサンプルを実装してみましょう。
サンプルでは指定した番号(to変数)に電話をかけ、word変数で指定した言葉をしゃべらせるというものです。
ACCOUNT SIDとAUTH TOKENは、Twilioのダッシュボードで確認して各自設定してください。
(AUTH TOKENは鍵マークをクリックすれば表示されます)

//app.js
var querystring = require('querystring');
var twilio = require('twilio');
var client = twilio('<ACCOUNT SID>', '< AUTH TOKEN >');

//しゃべらせたい言葉
var word = "こんにちわ";
//エコーサーバにPOSTするXML
var twiml = '<Response><Say voice="woman" language="ja-jp">' + word + '</Say></Response>';

client.makeCall({

    to: '+81XXXXXXXXXX', //コール先のtwilio番号(トライアルアカウントの場合、認証されている番号)
    from: '+81XXXXXXXXXX', // 取得したtwilioの番号.
    url: 'http://twimlets.com/echo?Twiml=' + querystring.escape(twiml) //twimlを返すURL
}, function (err, responseData) {
    if(err) throw err;
    console.log(responseData.from);
});

makeCall関数に電話のコール先(to)とコール元(from)を指定します。
そして、urlには電話をかけたときに処理したい動作を定義したTwiMLを返すサーバを指定します。
このサーバは自分で実装してもかまいません。今回はデフォルトで用意されているエコーサーバを使用します。
なお、TwiMLについても詳細なドキュメントが用意されているので、確認してみてください。

では、アプリケーションを実行してみましょう。toに指定した番号に電話がかかってきて、wordで指定したメッセージが流れるはずです。

% node app.js

まとめ

今回はnode用APIを使用して、任意のメッセージを特定の電話にコールさせるサンプルをご紹介しました。
この仕組みがあれば、昼夜問わず障害発生時自動的に担当者を呼び出す恐怖のシステム大切な通知を自動的にコールしてくれるシステムが実装できますね。

参考サイトなど