koeだめ 過去アーカイブ[〜2013-12-14]

最新情報は https://www.pixiv.net/fanbox/creator/3780274 にて

Twilioを使って指定番号への電話をトリガーとしてサーバサイド処理走らせる

Twilioには、Twilio電話番号にコールしたときに指定したURLにあるTwiMLを実行する機能があります。*1
言い換えると、Twilio電話番号にコールしたときに指定したWebAPIを呼び出してくれるわけです。
つまり、Twilio電話番号にコールしたらサーバサイド処理走らせる事を極めて簡単に実装することができます。

設定方法

1. Twilioの番号管理画面に行く

画面上部のメニューの「電話番号」をクリック。*2

2. 電話番号管理画面からTwilio電話番号の設定画面に行く

3. 呼び出したいURLとHTTPメソッドを指定する

指定できるURLは3種類

Voice Request URL

(Twilioからみて)電話を受ける時、つまりこちらからTwilio番号にコールしたら呼ばれるURL

Voice Fallback URL

上記リクエストに失敗したら/到達できなかったら呼ばれる、異常系処理用のURL

Status Callback URL

コール後、通話が終了したら呼ばれるURL

URLが呼ばれた時についてくる発信(者)情報

発信元電話番号をはじめ、色々なパラメータが引き渡ってきます。

項目は、http://jp.twilio.com/docs/api/twiml/twilio_request を参照。

POSTの場合はメッセージボディで、GETの場合はクエリとして渡されます。確か。

活用方法例

  • 普段cronで回している情報取得処理や更新処理を、電話をかけることで即時実行する
  • 緊急事態の時にWebサイトを「混み合ってます」表示に切り替える
  • Jenkinsのジョブをキックしてデプロイ処理走らせたりスケールアウトさせたりする
  • 電話をかけてサーバサイドから今日休みますメールのような定型文を送信する

などなど、こちらからのトリガーで行いたいことを電話という極めてこなれた伝統的インターフェイスによって発動することができます。

注意すること

「Twilio電話番号にコールしたらサーバサイド処理走らせる」内容によっては、発信者電話番号をみるとか別の認証を用意するとかして、特定ユーザからのみ受け付けるする事を考えましょう。