Posted at

Twilioはじめの一歩

More than 3 years have passed since last update.

Twilioを始めようと思う。まずはその取っ掛かりから。


Twilioとは?

公式サイトのTwilioツアーを見てみると、最初に


「電話」とインターネットをつなぐ


と出てくる。一言で言うとコレ。

ここであんまり色々書いてもイメージが湧かないと思うので、

とりあえずはじめの一歩を踏み出してみる。


とりあえずやってみる

https://jp.twilio.com/try-twilio/kddi-web からアカウントを作っておく。最初は無料のトライアルモードで始められる(メールアドレスと電話が必要)。

まずは、以下のファイルを用意する。


test.xml

<Response>

<Say voice="alice" language="ja-JP">東京特許許可局</Say>
</Response>

これを、どこかインターネットからアクセスできる場所に置く。

ブラウザでアクセスして、xmlが表示される状態であればOK。

(今回はAmazonS3に置いてみた。)

次に、Twilioにログインして、一番上のメニューから「電話番号」を選択し、左側の赤く表示されている電話番号をクリック。

スクリーンショット 2015-01-18 0.10.08.png

「音声通話」の項目があるので、そこに先ほどのXMLのURLを入れ、メソッドをHTTP GETにする。

スクリーンショット 2015-01-18 0.19.24.png

そして設定を保存し、自分の電話から、twilioの番号に電話をかける。

うまくいっていれば、どこかぎこちない自動音声が流れるはず。

※トライアルモードの場合は、最初にトライアルモードである旨の案内が流れます。


何が起こっているのか?

この時点で、すでに電話とインターネットを繋げることに成功している。

動きを追っていくと、次のようなイメージになるかと思う。


  • 自分の電話からTwilio電話番号に向けて電話をかける

  • Twilioは、かかってきたTwilio電話番号に設定されている「音声通話」のリクエストURLに対してリクエストを行う

  • Twilioは、リクエストの結果としてtest.xmlの内容を取得する

  • このXMLは、Twilioに対してSayタグの中身を読み上げさせる命令になっているので(TwiML:後述)、Twilioは着信元の電話に対して「東京特許許可局」と音声を流す

つまり、電話からTwilio経由でインターネット上の情報(test.xml)をリクエストし、その内容を(Twilioに音声に変換してもらって)取得している、ということになる。

自分の電話=ブラウザ、Twilio電話番号=URL、Twilio=Webサーバと考えれば、イメージしやすいかも?

Twilio電話番号は、普通の電話番号と違って、電話機に紐付けられているわけではない。あくまでTwilioの機能にアクセスするためのインターフェース。なので、先ほどの例でも複数の電話からTwilio電話番号にかけても、通話中にならずに全て受け付けらる。…という考え方でいいはず。


TwiMLって?

今回アップロードしたXMLは、TwiMLと呼ばれるもので、Twilioに対して動作の指定を行う。

Twilioでアプリケーションを作る際の要となる。

今回使ったテキストの読み上げのほかにも、mp3ファイルを再生したり、通話を転送したり、通話を録音したり、番号のプッシュを受け付けたり、いろいろなことができる。

詳細は公式リファレンスを参照。

もちろん、インターネット上にあるTwiMLファイルをそのまま使わずとも、WebアプリからTwiMLを生成して渡してもよい。

ということは、時間帯によって動作を変えたり、着信番号によって動作を変えたり(リクエスト中のパラメータに着信番号等の通話情報が含まれる)といったことができる!

いろいろなことができる気がしてこないだろうか…?


ほかにはどんなことができる?

今回は電話からTwilioに向けて発信したが、Twilioから電話に向けて発信することもできる。

また、音声を送受信する端末としてブラウザも使えるので、電話<->ブラウザ間の通話や、ブラウザ同士での通話も可能。普通の電話と違って1対1の通話ではないので、複数の端末が同時に通話に参加することも可能となる。

さらにSMSも扱えるらしい(けどこれはよく知らない…)。

Webアプリを作るとしても、主要な言語に対してライブラリが用意されているので安心。


まとめ

なんだかTwilioの回し者みたいになってしまったけど、Twilio楽しい!