Y-Ken Studio

新しもの好きのデータエンジニアが四方山話をお届けします。

Twilioのマークアップ言語TwiMLを無料ホスティングするサービス「twimlbin」をRubyから利用する「twilio-twimlbin」を公開しました

Twilioを利用して電話を掛ける際、外部からアクセスできるXMLのURLを指定する必要があります。
それはつまり外部公開サーバの用意が必要となるので、利用の敷居が高いと思われがちです。

そこで、Twilioが公式に提供する「twimletsというサービスがあります。
GETパラメータのみ対応しているため、文字列の長さが限定されるという問題がありました。

さて、Pastebinという、GitHubのgist的なサービスをご存じでしょうか。
これのTwilio向けサービスとも言える「Twimlbin.com」を見つけたので、
早速プログラムから扱えるようRubyでラッパークラスを作りGem化しましたので紹介します。

更新履歴

  • 2013年7月8日 twilio-twimlbin v0.0.3リリースに伴いプログラムサンプルを更新
  • 2013年9月3日 twimlbin.comの仕様変更による不具合を修正し、v0.0.4をリリース

概要

Twimlbin.comの機能をラッパーしたクラスです。
自分のサーバを持つこと無く、Twilioを用いて荷電する際の挙動を制御するTwiMLをPOSTすると、
それを公開するための専用のURLが付与されるという物です。

f:id:yoshi-ken:20130531003310p:plain

インストール方法

http://rubygems.org/gems/twilio-twimlbin を使います。

$ sudo gem install twilio-twimlbin

利用方法

以下のように外部から開けるURLを生成することが出来ます。

事前準備

何らかの方法でtwilio-rubyを入れます。

  • gem install twilio-ruby
  • Gemfileに書いたうえでbundle install --path=vendor/bundle

rubyコード

以下コードを用意し、実行してみましょう。

# -*- encoding: utf-8 -*-
require 'twilio-twimlbin'
require 'twilio-ruby'

response = Twilio::TwiML::Response.new do |r|
  r.Say '隣の客はよく柿食う客だ。', :voice => 'woman', :language => 'ja-jp'
end

twiml = Twimlbin.new
twiml.create(response.text)
puts twiml.external_url

URLの内容を確認

表示されたURLをブラウザで開いて表示できることを確認出来たら、 次はコマンドラインから取得してみましょう。

$ curl -A "TwilioProxy" http://twimlbin.com/external/4db02ba3abeb2156
<?xml version="1.0" encoding="UTF-8"?><Response><Say voice="woman" language="ja-jp">隣の客はよく柿食う客だ。</Say></Response>

簡単ですね。