Twilio 盛り上がってきていますね。電話という身近でありながらシステムとして扱うには複雑な仕組みが必要なものを単純な API で操作できるというのは面白いサービスです。
先日大阪で行われたTwilio API勉強会@大阪にて、PHP から Twilio を触ってみるハンズオンセッションを行ないました。Twilio を使うと簡単な PHP コードで、自分の携帯を鳴らしたり、携帯から電話をかけてみたり、簡単に試すことができるので、これはハンズオンとしてもなかなか楽しかったです。
お声がけいただき、ありがとうございましたm(_ _)m
発表資料はこちら。
ハンズオンの手順は、Gist に書いています。ここでは、Composer を使って、twilio-php(PHP版のTwilioライブラリ)をインストールしています。
https://gist.github.com/shin1x1/7006593
Twilio は使いやすいサービスなのですが、はじめる際に知っておくと良いポイントを挙げてみます。
1. まず Twilio をはじめるならこれ
Twilio 公式ドキュメントは内容が豊富で、リファレンスだけでなく実用例など役立つ内容なのですが、はじめて触る人は迷ってしまいまいがちです。
まず、Twilio とは何ぞや、ざっくりどう使えば良いかを掴むには、Twilio サイトにある「ゼロからはじめるぜ!Twilio」という連載がオススメです。
アカウント作成から、Twilio を使った電話のインバウンド、アウトバウンド、そしてPHPによるサンプルコードの実装など、まず第一歩を踏み出すには分かりやすい内容ですので、まずTwilioを触ってみようという人はこの連載を第一回から通して見てみるのが良いでしょう。
ゼロからはじめるぜ! Twilio – Twilio for KDDI Web Communications
2. 処理の流れをつかむ
Twilio と連携ライブラリには様々な機能があるので、はじめはどの局面でどれを使えば良いかが分からない場合があります。
まずは、Twilio と Web アプリケーションとでどういった連携を行うかを流れとして掴んでおくと良いでしょう。
Twilio とWebアプリケーション間ではHTTPリクエストで通信して連携を行ないます。これには、Twilio からアプリケーションWebアプリケーションへHTTPリクエストが送られるパターンと、反対にWebアプリケーションからTwilioへHTTPリクエストを送るパターンがあります。
まずは、Twilio から Web アプリケーションへ HTTP リクエストが送信するパターン。電話のインバウンドがこれにあたります。
この場合、Web アプリケーションでは、TwiML を生成して、返します。twilio-php を使う場合、Services_Twilio_Twiml
クラスを利用します。
次に、Web アプリケーションから Twilio へ HTTP リクエストを送信するパターン。電話のアウトバウンドがこれにあたります。
この場合、Web アプリケーションでは、REST API を実行します。twilio-php を使う場合、Services_Twilio
クラスを利用します。
つまり、用途に応じて、TwiML と返せば良いのか、REST API を実行すれば良いのかの見極めが重要となります。(とりあえず REST API を実行すれば良いのかと思い、REST API ばかり調べて「?」となりました:-p)
3. アプリケーションの検証は、まずはブラウザで
twilio-php で、Twilio 連携部分を実装した場合、いきなり電話をかけてテストするのではなく、まずはブラウザ等で TwiML が正常に生成されているかを確認しましょう。
ハンズオンでもあったのですが、そもそも PHP レベルでエラーとなっていると、電話をかけても正常に動作しません。電話ではエラーの原因もわからないので、まずはブラウザ等で動作確認してから、電話での確認を行うと良いです。(電話代もかかりますしね)
4. セキュリティ
- を見ると「おやっ?」と気づく人もいると思うのですが、Twilio からの Web アプリケーションへの通信は、単なる HTTP 通信なので、何も対応していないと Twilio を偽装したリクエストを Web アプリケーションへ送信することができてしまいます。
Web アプリケーション側では、送信されてきた HTTP リクエストが Twilio からのものかを検証する方法が用意されているので、本番環境ではこれらを対応しておくと良いでしょう。
- HTTPS による通信
- Basic認証 or Digest認証
- Twilio からのリクエストをバリデーション
5. SMS は、海外番号からしか送受信できない
Twilio でまず使いたくなるのが、SMS の送受信なのですが、現状(2013/10/30)、日本国内の番号からは利用することができません。
海外番号を入手するには、Twilio にクレジットカードを登録して、本アカウントに切り替える必要があります。
2要素認証など、SMS を活用したい場面があると思うので、お試しアカウントでも触れると便利なのですが。
6. そして Twilio 公式ドキュメント
こうして Twilio の概要をおさえた後は、Twilio 公式ドキュメントが大いに役立ちます。特にユースケース毎の実装例などは、仕組みを理解するにも良いですね。
Twilio ドキュメント
Twilio – ガイドとハウツー(実装例)
おまけ. SMS が、au より Softbank の方が安い
KDDI Web Communications のサービスなのですが、なぜか SMS 送信料が、au(9.6円)よりSoftbank(1.5円)の方が安くなっています。
不思議に思ったのですが、色々な事情があるようです。