TwilioとGAE/Jで電話をかける

Twilio ( http://twilio.kddi-web.com/ ) は、プログラムで色々書くと電話を飛ばせたりするサービスです。 GAEはGoogle App Engineさんですね、初めて使ったけど簡単に動いてしかも一定のところまで無料とは本当に神様。

Twilioさんの通信はオレオレSSLではダメなので、SSL証明書なんて持ってないとなると自動的にGAEとかで頑張る必要があります。SSLなんて使わない!というのはセキュリティ的にダメだと思います。(未検証ですが、電話するときはまだしも電話をもらうときとか番号とかもくっついていそう)

Twilioに登録するにあたっては特に手間取ることはないですね、参考にするならここの2ページ目あたりでしょうか。記事にはSMS送れないと書いてありますが、6月に対応したみたいです。

TwilioのJava SDKをダウンロードして、それ越しにAPIを叩きます。SDKはここを参考にダウンロードします。ここではtwilio-java-sdk-3.3.14-with-dependencies.jarをダウンロードしました。

基本的にはチュートリアルの通りにやればよいのですが、注意点がいくつか。

To,Fromはログインした後の画面で050電話番号と、認証した電話番号を確認できる画面があるので、表記法が不安ならそこを見てコピーペーストできる。

Urlパラメータが曲者で、通話する内容はURLでしか指定できない模様。自由な文言を指定するためにGAE/Jでサーブレットを作りました。サーブレットのソースを張ります。

14行目で無理やり文字コードの指定を先頭に追加していますが、自分でテストした時点では追加しないと文字化けを起こしてしまいました。

GETだけ拾うだけでは、POSTで来るのをスルーしてしまうので注意です。POSTを拾えないと電話はかかってきますが、アプリケーションのエラーと言われます。

GAE側はSSLにしたうえでベーシック認証をかけますが、SSLをかけるにはappengine-web.xmlで<ssl-enabled>true</ssl-enabled>を追加するだけです。GAEさんすごい。

GAEでのベーシック認証は色々なブログで紹介されているので、そちらを見てください。自分はGAEの知識はなくSSLなしでも接続できてしまったら嫌なので、とりあえずベーシック認証のフィルタでreq.isSecure()がfalseなら問答無用で弾いています。

と、ここまでで作り上げたURLを先のチュートリアルのUrlパラメータの指定のところにHTTPSでベーシック認証をURLに埋め込んだ書式で渡してあげると日本語喋ってくれます。

Eclipseで実行したら電話がかかってくるなんて胸熱(最近あまり聞かない)。

ただ、実際に使い続けるなら料金が発生するので、個人で遊ぶなら頻度少な目だけど重要な通知の時に使える程度ですかね・・・。電話したらWake on lanとかカッコいいですかね。

カテゴリー: GAE, Java, Twilio, プログラミング関連 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です