電話とインターネットを簡単に繋いでくれるTwilio。
非常にありがたい存在ではあるけれども、使い始めるにあたってとっつきにくいところも。
自分が始めるときに理解に時間がかかった点、もたついた点を残しておくので、
これから始める人の敷居が少しでも下がれば幸い。
"Voice"と"Client"の違いが分からない問題
Twilioを始めようと思って、公式サイトをとりあえず眺めていると、
「Twilioには3つの機能があります」と出てくる。"Voice", "Client", "SMS"。
SMSはまぁ分かる。電話に対してメッセージ送れるんでしょ?(使ったことないけど)
問題はVoiceとClient。
機能一覧を見ると、一言一句同じなわけで…。なんなのさ?
とりあえず以下の認識があれば困らないと思う。
- Voice -> 一般の電話も扱えるよ!
- Client -> ブラウザやスマホアプリからも電話できるよ!
厳密なこと言い出すと通信回線が違うので音質が…とかあるんだろうけど、
通話できることには変わりないので気にしない。
機能一覧が全く同じということは、一般電話/ブラウザ/スマホアプリで、同等のことが実現可能ということ。
素晴らしい!
自分の知ってる「電話番号」と違う問題
Twilioで取得する「電話番号」は、普通の電話番号とは性質が異なるので、
メンタルモデルを構築するのにちょっと苦労する。
- 自分の知ってる「電話番号」
- 1対1の通話のみ
- 通話中であれば繋がらない
- Twilioで取得する「電話番号」
- 何人でも同時通話できる
- 誰かが通話中でも関係なく処理してくれる
一言で表すと、Twilio電話番号はTwilioにアクセスするためのインターフェース。
普通の電話のように電話番号の先に特定の端末があるのではなく、
Twilio電話番号の先にはTwilioのシステムがあり、
Twilioが設定に応じていい感じに通話の接続をしてくれる。
特定の端末ではなく、Twilioのシステムに向かって電話をかけているというイメージが重要。
こちらの記事も参照してもらえると、ちょっと具体的な話になっているので分かりやすいかも。
なんだかAPIとかの種類がいっぱいある問題
公式ドキュメントのTwilio Docsを見ると、
APIやライブラリのリファレンスが色々あって、何をどう使えばいいのか最初はちょっと戸惑う。
主に使うのは以下の4つ。
TwiML
Twilioにどういう動作をして欲しいかを記述するXMLで、Twilioの要。
電話を転送したり、文章を読み上げたり、MP3ファイルを再生したり、通話を録音したり、押されたキーの情報を取得したり(○○に関するお問い合せは1番を、…とかいうやつ)、いろいろできる。
TwiMLを直書きしてどこかのサーバに置くか、TwiMLを生成するWebアプリを作成するかして、
「このTwilio電話番号に着信があったら、このURLからTwiMLを取得して!」という感じで設定を行うことで、Twilioアプリは成り立っている。
Helperライブラリ
前述のTwiMLのところで書いた「TwiMLを生成するWebアプリ」を作成したり、
Webアプリ内で後述のREST APIの機能を使ったりするためのHelperライブラリ。
PHP, Ruby, Java, nodeなど、いろんな言語に対応している。
Client
ブラウザやスマホアプリ(Client)の動作を書くためのライブラリ。
普通の電話機に備わっている、着信を受け取ったり、通話を開始したりといった機能をコレで書く感じ。
自分で書けるので、着信があった時に画面にコレを表示して…など、いろいろと自由にできる。
Webアプリの場合はjs, スマホの場合はAndroid, iOS向けのSDKが用意されている。
REST API
Twilioの機能がひと通り使えるWeb API。
直接使ったことはないけど、Helperライブラリで機能を使うので、見ておいたほうが吉。
効率的に動作確認をするにはどうすればいいか分からない問題
いざ実装を始めると、やっぱり要所要所で動作確認がしたくなるもの。
でも、Twilioが動作するには、Twilioからアプリに対してアクセスできなければならない。
スマホアプリなら実機ですぐに試せるだろうけど、
Webアプリの場合はローカルで動作させていても動作確認できない!
とはいえ、ちょっと修正するごとにいちいちデプロイするのもめんどくさすぎる。。
そんなときはコレ。ngrok!!
macでhomebrewを使っていれば、コマンド2つでとりあえず外部からアクセスできるようになる。
$ brew cask install ngrok
$ ngrok 3000
ただ、これだとURLが毎回ランダムに変わってしまうので、
固定したい場合には登録(無料)が必要。
ココからサインアップを行い、
ダッシュボードのMainタブに出ているコマンドを実行すればOK。
$ ./ngrok authtoken 2ioCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
としたあとに、
$ ngrok -subdomain=hogehoge 3000
これでできたngrok経由のURLをTwilioに設定してあげれば、デプロイ無しで動作確認できる。
素晴らしい。
ngrokについてもうちょっと詳しく:http://liginc.co.jp/web/programming/156484
