Technical information

外部との連携 KompiraからTwilioで電話をかける

Twilioとは電話やSMSの受発信をWeb APIを通じて利用できるサービスです。(電話以外にも二要素認証のAuthyやアプリケーションの同期を行うSyncなどがあります。)

今回はTwilioの電話をかける機能を利用して、Kompiraのジョブフローから指定した電話番号に対して自動音声通知をするジョブフローを作成します。

 
Twilioの準備

Twilioを利用するためには、最初にアカウントの設定が必要です。日本ではKDDIウェブコミュニケーションズ(KWC)社が代理店を行っており、サイトからサインアップできます。
(注意:TwilioのアカウントはUSのtwilio.comの方からもアカウントを作成する事が出来ますが、日本とは別に管理されており、提供されているサービスに差があります。日本国内の電話番号にかける場合にはKWC社のサイトからアカウントを取得してください。また日本の050番の電話番号ではSMSの送受信は出来ません。)

アカウントを作成したら、クレジットカードを登録してチャージしてください。(2000円以上でポイントを購入します。料金表はつぎのリンクを参照ください。)

API認証情報の取得

Twilio Console

コンソール画面の「アカウントサマリー」の「Account SID」と「Auth Token」の2つの値を記録しておいてください。API呼び出しの際に認証に利用します。

電話番号の購入

続いて通知するための電話番号(050/0120/0800/その他番号)を購入します。Twilioコンソールの画面左の#マーク -> “Buy a number” -> 国名として「Japan」を、「利用可能な機能」に「音声通話」のチェックを入れて「検索」を選択しましょう。

Buy a number

電話番号のリストが表示されるので、好みの番号を選んで「購入」してください。この番号も記録しておきます。

TwiML Binsの設定

TwiMLはTwilioの電話の機能を設定するXMLファイルです。TwiMLはTwilio社のサーバーからアクセスできるインターネット上のWebサーバーなどに配置する必要があります。(URLを持てるストレージであればOKです。)ここではTwilioの簡易的な運用を行うためのTwiML Binsの機能を利用します。

Twilioコンソールのデベロッパーセンター(左側の「>」マーク) -> 「TwiML Bins」をクリック -> 「+」ボタンをクリック

ここでTwiMLの内容を記載するページが表示されます。”Friendly Name”はTwiMLの内容を識別する名前で任意につけてください。
“TwiML”欄には、例えば以下のように記載します。

保存したら、”Properties”の”URL”は記録しておいてください。

ここまでで、”Twilio”側の設定は完了です。

 
Kompiraのジョブフローの作成

続いて、Kompira側の設定です。ここではKompiraサーバーのCurlコマンドを呼び出して、TwilioのAPIを呼び出します。

”To”には電話をかける相手の番号を国番号から指定します。また電話番号先頭の0を取ります。(上の例は、日本の国番号は”+81″で、”03-1234-5678″にかける事を想定しています。”+810312345678″ではない事に注意してください。)
“From”はTwilioで購入した電話番号を記入します。
“AcountSID”、”AuthToken”は、それぞれTwilioのコンソールに表示されていた文字列を記載してください。
“Timeout”は相手が電話をとるまでに呼び続ける秒数です。(最大600秒まで。ただし受ける側が一定時間後に留守番電話設定にするなどの場合は、これより早く処理される可能性があります。)
“TwiMLurl”は、TwilioのサーバーがTwiMLを取得するためのURLです。今回の例では先に設定したTwiML BinsのURLを記入します。

コマンドの戻り値は、JSON形式の応答を辞書型変数resultに格納しています。このコマンドを実行した段階では、Twilio側の呼び出しのキューに入れられるところまでです。したがって変数resultには実際に電話をかけた結果の情報はないことに注意してください。

このジョブフローを実行して、指定した電話番号に電話がかかってくれば成功です。

 
通話内容のカスタマイズ

ここまでで固定メッセージで相手の電話を呼び出すジョブフローが出来ました。うまく電話が鳴りましたでしょうか。
次に、通知のメッセージを呼び出し時にカスタマイズをしたい場合の対応を行います。
たとえば、サーバー名を追加したい場合はTwiML Binsのテンプレートの機能を利用します。
登録されているTwiMLを以下のように変更してください。

続いて、ジョブフローを以下のように変更します。

このようにTwiML Binを呼び出すURLに”?Machine=****”パラメータを付与しています。これがテンプレートに内挿されて再生されます。(上記の例では「サーバー一号機が停止しました。・・・」と再生されます。)複数のパラメータを埋め込む事が可能です。

今回の例では、指定した音声が電話口で読み上げられるシンプルな使い方をご紹介しました。
TwiMLの記法を使うことで、電話を受けた人が押した電話のボタンの値を記録したり、それによって次に再生される内容を分岐することなども可能です。詳細はTwiMLのドキュメントを参照してください。
本記事ではTwiMLを返す機能としてTwiML Binsを使用しましたが、もちろん任意のWebサーバーやクラウドストレージを利用することも可能です。特に動的にメッセージの内容を変更したい場合には、TwiMLを返すWebアプリケーションを作成してください。