Category Archives: Ruby

RubyでTwilio使って電話してみた

池澤あやかさんがTwilio使って電話しているのを見まして(MacPeople)、面白そうだなあと思ったので、私もやってみました。前に「Zabbix Conference Japan 2013」で「Zabbix × Twilio でサーバー監視電話連絡の自動化」という発表を聞いたことがあって、Twilioが気になってはいたんですよね。けけけ、けっして、池澤あやかさんがやってたから真似した訳ではないです。

そもそもTwilioとは何か?
公式ページから引用しましょう。

「Twilio を使えば、標準的なウェブ言語を使用して、簡単に、インテリジェントな音声通話アプリケーションを構築できます。 Twilio は従来のテレコム サービスの世界と IPコミュニケーションの橋渡しをします。」

自由かつオープンにテレコムサービスを利用できる。素晴らしいです。本来はNGN(Next Generation Network)にこのような役割が期待されていたと思うんですけどね。残念ながら、いまだNGNは自由でもオープンでもないですからねえ。残念なことです。

利用するにはまず登録が必要です。Twilioのサイトに行く。
日本だとKDDIのグループ会社であるKDDIウェブコミュニケーションズが事業として運営しているようです。うーん、通信キャリアの色が付くのは微妙だなあ。
ともあれ、登録。利用登録ボタンから登録するだけです。テストコールもかかってきます。トライアル中は無料。ただ、いつトライアル終わるのかが不明瞭です。使用量が一定量に達したら使えなくなるみたいです。

Rubyから電話をかける方法は、Twilioのブログに載っていますし、ログイン後の「Api Explorer」というコーナーでサンプルスクリプトを見ることもできます。サンプルは、なんと、Curl/Ruby/PHP/Python/Node.js/Java/C#が用意されています。好きな言語で書けるのはいいですなあ。

Twilioはマークアップ言語TwiMLを使います。TwiMLでTwilioにしゃべらす内容などを書きます。TwiMLはTwilioが読める場所に無いといけません。つまりインターネット公開する必要があります。私は自分のWebサーバを使いました。持っていない人は、TwiML用のホスティングサービスなどがありますので、そちらを使うといいかも。

日本語も話せますが、とりあえず英語にしてみました。

このwelcome.xmlをWebサーバに置きます。
ここでは仮にhttp://hogehoge/welcome.xmlとしておきます。

続いて、Rubyでコードを書きます。Ruby 2.1.1を使用。
まずはtwilio-rubyを入れます。

# gem install twilio-ruby

サンプルを参考に(というかそのまま)書く。

これで準備完了。

$ ruby call.rb

と実行すると、電話がかかってきました!
試用期間中はTwilioの宣伝文言が入りますが、その後、男性の声で「Welcome to Twilio!」と話してくれました。

TwilioのWebサイトを見てみると、IVRとかも作れちゃうようです。
これは色々な可能性があるなあ。

さくらのVPSにRuby 2.1.1を入れた

さくらのVPS(CentOS 6.5)にRuby 2.1.1を入れました。
こちらのサイトを参考にさせていただきました。

普通にyumでインストールしようとしたのですが、

# yum install ruby
================================================================================
 Package                Arch         Version                Repository     Size
================================================================================
Installing:
 ruby                   x86_64       1.8.7.352-13.el6       updates       534 k

なー、古い!

インストール方法をいろいろと調べたところ、Ruby Version Manager(RVM)というものを使うべきだそうな。本家でも紹介されていました。

事前準備。

# yum install gcc-c++ patch readline readline-devel zlib zlib-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison gdbm-devel tcl-devel tk-devel libxslt-devel libxml2-devel
# yum install --enablerepo=epel libyaml-devel

RVMのインストール。私しか使わないサーバなので、ユーザ毎に環境を作る必要性はなく、rootでインストールすることにしました。/usr/local配下にインストールされます。

# curl -L https://get.rvm.io | bash -s stable
...
  * First you need to add all users that will be using rvm to 'rvm' group,
    and logout - login again, anyone using rvm will be operating with `umask u=rwx,g=rwx,o=rx`.

  * To start using RVM you need to run `source /etc/profile.d/rvm.sh`
    in all your open shell windows, in rare cases you need to reopen all shell windows.

上記のメッセージが出ますが、rootで使うだけだったら、いったんログアウトしてログインすればオッケーみたい。

# rvm -v
rvm 1.25.22 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

# rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-p374]
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p320]
[ruby-]1.9.3[-p545]
[ruby-]2.0.0-p353
[ruby-]2.0.0[-p451]
[ruby-]2.1[.1]
[ruby-]2.1-head
ruby-head

インストール。コンパイルするので時間がかかります。

# rvm install 2.1.1
# rvm docs generate-ri

無事にインストールできました。

# ruby -v
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux]

# irb
2.1.1 :001 > puts "Hello! World!"
Hello! World!
 => nil 

一般ユーザでもRubyを使う場合は、source /etc/profile.d/rvm.shを実行します。

$ source /etc/profile.d/rvm.sh

$ ruby -v
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux]

$ irb
2.1.1 :001 > puts "Hello! World!"
Hello! World!
 => nil 

終わり。