年賀状 2.0

新年あけましておめでとうございます!
近年年賀状を書くことはほとんどなかったのですが、古式ゆかしい友人が年賀状を書くと言い出したことから、数人の間で年賀状を送りあう「流れ」になったので、今年は僕も年賀状を書いてみました。年明けてから書きました。ごめんなさい。
急きょ書くことになったので馬にちなんだ絵のアイディアが浮かばず、また数人の友人がプロのデザイナーということもあり、絵で勝負することを恐れ、プログラマらしい年賀状にしてみました。
以前下の記事を読んで、Twilio という電話 API に興味を持っていたので、年始のゆるやかな時間を使って簡単なアプリケーションを作ってみました。
はぁはぁブログ 「ご結婚おめでとう」親友に贈ったコードとデザインの話

Twilio ってなに?

電話を操作する Web API です。Twilio に登録すると Twilio 用の電話番号がもらえます。
この電話番号を使って、着信を受けてあいさつを読み上げたり、MP3 を再生したり、他の人に通話を接続したりすることができます。

Twilio のしくみ

Twilio 用電話番号に着信 -> あらかじめ指定した URL に HTTP リクエスト -> HTTP リクエストに対して制御を記述した XML(TwiML)を返す -> 電話操作

作ったもの

Twilio で電話を受けて、新年の挨拶を録音した MP3 を再生します。
MP3 は11人分用意して、発信者の番号によって再生するファイルを変えました。
昔雑誌「小学1年生」などの企画で、○○レンジャーとおはなしできる電話がありましたが、あんな感じですね。

作り方

Twilio では TwiML と呼ばれる XML で制御を記述します。

<?php
// 電話番号 => 名前の連想配列
$people = array(
	"+81XXXXXXXXX0" => "Foo",
	"+81XXXXXXXXX1" => "Bar",
	"+81XXXXXXXXX2" => "Baz",
	"+81XXXXXXXXX3" => "Qux"
);

// 発信者の番号 => 名前
$name = $people[ $_REQUEST[ "From" ] ];

// 知らない番号ならばデフォルトメッセージを流す
if ( !$name )
{
	$name = "Default";
}

header( "content-type: text/xml" );
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
?>
<Response>
	<!-- 友人ごとの MP3 を再生する -->
	<Play>snd/<?php echo $name ?>.mp3</Play>
</Response>

上記の XML を任意のサーバに置いておきます。
Twilio の設定画面から Twilio 用電話番号に着信があったときに HTTP リクエストを実行する URL を指定できるので、XML の URL を指定しましょう。

あとは年賀状に Twilio 用電話番号を記述しておけば OK です。