業務上でTwilioとお友達になる必要があるので、すこし使ってみました。
サインアップ
とりあえずサインアップするだけならすぐにできます。
Twilioは電話番号を起点とするサービスになっていますが、 日本ではローカル電話番号の取得はかなり厳密になっており、企業・法人としてこの電話番号を取得するためにはそれなりの手続きが必要になります。
このため、無料サインアップを行った時には、1つだけアメリカの番号が割り当てられます。
電話をかけてみる
特定の番号に電話する場合は以下のようなHTTPリクエストを送ります。
ここで、VERIFIED_NUMBER
はサインアップ時に登録した自分の電話番号です。
ACCOUNT_SID
とAUTH_TOKEN
は、アカウントIDとシークレットと考えれば良いでしょう。
TWILIO_NUMBER
はサインアップ時にTwilioが払い出してくれた電話番号です。
$ VERIFIED_NUMBER=+81xxxxxxxxxxx $ ACCOUNT_SID=xxxxxxxxxxxxxxxxxxxxxxxxxx $ AUTH_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxx $ TWILIO_NUMBER=+xxxxxxxxxxxxxx $ curl -X POST https://api.twilio.com/2010-04-01/Accounts/$ACCOUNT_SID/Calls.json \ --data-urlencode "Url=http://demo.twilio.com/docs/voice.xml" \ --data-urlencode "To=$VERIFIED_NUMBER" \ --data-urlencode "From=$TWILIO_NUMBER" \ -u $ACCOUNT_SID:$AUTH_TOKEN > hoge
このコマンドを実行すると、アメリカから電話がかかってきます。
Url
パラメータで示されるのは、TwiMLと呼ばれるマークアップで、
電話がかかってきたときにTwilioへ何をしてほしいのかを表現します。
上記で設定されたURLにアクセスすると以下のようなTwiMLになっており、Say
とPlay
で表現されていることが分かります。
$ curl -Lo - http://demo.twilio.com/docs/voice.xml <?xml version="1.0" encoding="UTF-8"?> <Response> <Say voice="alice">Thanks for trying our documentation. Enjoy!</Say> <Play>http://demo.twilio.com/docs/classic.mp3</Play> </Response>
Say
はいわゆるTTS、テキストを読んでくれるというVerbです。
Play
はMP3やWAVといったファイルを電話で再生してくれるVerbですね。
受電時の動き
以下はRespond to Incoming Phone Calls in Javaからの引用です。 Twilioの電話番号に電話がかかってくると、Twilioのシステムから我々が作るアプリにHTTPリクエストが送信されます。 HTTPレスポンスとしてTwiMLを返却すると、Twilio側が転送や録音といった動作をしてくれる、というのが基本的な動きです。
架電時の動き
「電話をかけてみる」で記載したcurlコマンドがまさにこれです。
「どの番号から」(from
)「どの番号へ」(to
)電話をかけて、何をするのか(url
or 'Twiml`)を記載します。
下記はMake Outbound Phone Calls with Node.jsにあるJSでの架電サンプル。
const accountSid = process.env.TWILIO_ACCOUNT_SID; const authToken = process.env.TWILIO_AUTH_TOKEN; const client = require('twilio')(accountSid, authToken); client.calls .create({ twiml: '<Response><Say>Ahoy, World!</Say></Response>', to: '+1xxxxxxxx', from: '+1xxxxxxxx' }) .then(call => console.log(call.sid));
いろいろできそうなので、時間のある時に遊んでみます。