Twilio。国内だとKDDIが代理店になっているWEBサービス。本国はロサンゼルスのベンチャー企業のようです。クラウド型電話API。簡単に言うとプログラムから電話をかけることが可能になります。どんな会社がサービスを展開しているか、まとめサイトがありました。
クラウド電話APIサービス
http://summary.fc2.com/summary.php?summary_cd=76209
その中でもおそらく最大手がTwilio。Free Trialですぐに無料で電話をかけることができます。プログラムから電話をかけるところまでを説明したいとおもいます。
注意:いたずら厳禁です!
——————————–
■■1 Twilioのユーザ登録
https://jp.twilio.com
適当に登録して、ログインするとウィザードみたいなのが表示され電話番号を1つ取得できます。このTwilioの管理画面、クソわかりづらいですが我慢して使いましょう。
電話番号、というメニューから取得した電話番号を確認できます。
■■2 APIキーの確認
Twitterみたくアプリを作らなくてもいいみたいです。ログインすると、ACCOUNT SID、AUTH TOKENがトップに表示されています。この2つをPHPプログラムに記載します。AUTH TOKENは伏せ字になっているので、鍵アイコンをクリックしてで表示させます。
■■3 PHPライブラリのダウンロードと設置
今回はPHPを使うので公式サイトからPHPのライブラリを落としてきます。https://jp.twilio.com/docs/libraries/phpComposerとかよくわからないので、ZIPでソースでDLしました。配置場所は/user/lib/zabbix/alertscriptsの中です。マニュアルだとフォルダ名がtwilio-phpになってるけど、実際はtwilio-php-masterになっててtwilio-php-masterをそのまま使うことにしました。
[root@wiki-web-2 alertscripts]# ls -Rl -rwxrwxrwx 1 zabbix zabbix 567 6 3 08:23 2016 alert-twilio_prisan.php drwxrwxrwx 5 zabbix zabbix 4096 2 27 02:29 2016 twilio-php-master ./twilio-php-master: -rwxrwxrwx 1 zabbix zabbix 641 2 27 02:29 2016 AUTHORS.md -rwxrwxrwx 1 zabbix zabbix 10662 2 27 02:29 2016 CHANGES.md -rwxrwxrwx 1 zabbix zabbix 1154 2 27 02:29 2016 LICENSE -rwxrwxrwx 1 zabbix zabbix 1855 2 27 02:29 2016 Makefile -rwxrwxrwx 1 zabbix zabbix 3775 2 27 02:29 2016 README.md drwxrwxrwx 3 zabbix zabbix 4096 2 27 02:29 2016 Services -rwxrwxrwx 1 zabbix zabbix 659 2 27 02:29 2016 composer.json -rwxrwxrwx 1 zabbix zabbix 36130 2 27 02:29 2016 composer.lock drwxrwxrwx 5 zabbix zabbix 4096 2 27 02:29 2016 docs -rwxrwxrwx 1 zabbix zabbix 515 2 27 02:29 2016 issue_template.md -rwxrwxrwx 1 zabbix zabbix 3275 2 27 02:29 2016 package.php drwxrwxrwx 3 zabbix zabbix 4096 2 27 02:29 2016 tests ./twilio-php-master/Services: v 32 drwxrwxrwx 5 zabbix zabbix 4096 2 27 02:29 2016 Twilio -rwxrwxrwx 1 zabbix zabbix 27616 2 27 02:29 2016 Twilio.php
■■4 PHPプログラムとXMLの設置
[root@wiki-web-2 alertscripts]# cat alert-twilio_prisan.php <?php require("/usr/lib/zabbix/alertscripts/twilio-php-master/Services/Twilio.php"); // ライブラリの場所 $sid = "AC6b90aed2c176bad2466a62ba5ee3XXXXX"; // Account Sid $token = "266d2b356bf61e88fbef15bc66bXXXXX"; // Auth Token $tel_to = "+8190612950XX"; //宛先電話番号 $tel_from = "+8150318730XX"; //Twilioで取得した電話番号 $twiml = "https://dl.dropboxusercontent.com/u/42879370/calling.xml"; // TwiML URL $client = new Services_Twilio($sid, $token); $call = $client->account->calls->create($tel_from, $tel_to, $twiml); ?> [root@wiki-web-2 alertscripts]#
alertscriptsの中にalert-twilio_prisan.phpを作成、中身が↑になります。ライブラリはフルパスで僕は書いてます。calling.xmlを必ず指定します。電話を受けた時にどんな音声を流すのかをXMLファイルで書きます。音声合成で喋らすこともできますし、音声ファイルを再生させることもできます。インターネット上に公開する必要がありますので、dropboxのpublixフォルダに置くのが一番簡単かとおもいます。XMLの中身はこんな感じにしてみました。
<?xml version="1.0" encoding="UTF-8"?> <Response> <Say language="ja-jp"> おいらはもーもー太郎 </Say> <Play> htts://dl.dropboxusercontent.com/u/42879370/testvoice.wav </Play> </Response>
編集が終わったらこのXMLの公開URLをさっきのPHPプログラムの中に書きます。testvoice.wavをpubilicフォルダ内に置いています。Sayで囲った文字は音声合成して読み上げてくれます。
■■5 実行してみる。ログを見てみる
実行してみましょう。
[root@wiki-web-2 alertscripts]# php alert-twilio_prisan.php
これで指定した電話番号に電話がかかってくるはずです。とても簡単ですね。
ZABBIXでアクションの登録をすれば、トリガー検知した時に電話をかけることができます。
■■6 ログについて
WEB画面上から電話した時のログを見てみます。
ログ
使用状況
プログラマブルVOICE
■■はまったこと
①
当初XMLは自宅サーバに置いていたのですが、オレオレ証明書だったので
Twilioから突くことができず、
「11237 – Certificate Invalid – Could not find path to certificate」
になってました。
②
FreeTrialで使えることがわかりづらいです。
一応ここに書いてあるんだけど、もっとわかりやすく書いてほしいです。
https://www.twilio.com/help/faq/twilio-basics/how-does-twilios-free-trial-work
24分で450円くらいの課金状況が表示されている状態でPHPを叩いたら
こんなエラーが突然出ました。
[root@wiki-web-2 zabbix]# nl /usr/lib/zabbix/alertscripts/twilio-php-master/Services/Twilio.phpphp /usr/lib/zabbix/alertscripts/alert-twilio_prisan.php PHP Fatal error: Uncaught exception 'Services_Twilio_RestException' with message 'Authenticate' in /usr/lib/zabbix/alertscripts/twilio-php-master/Services/Twilio.php:297 Stack trace: #0 /usr/lib/zabbix/alertscripts/twilio-php-master/Services/Twilio.php(180): Base_Services_Twilio->_processResponse(Array) #1 /usr/lib/zabbix/alertscripts/twilio-php-master/Services/Twilio/ListResource.php(92): Base_Services_Twilio->createData('/2010-04-01/Acc...', Array) #2 /usr/lib/zabbix/alertscripts/twilio-php-master/Services/Twilio/Rest/Calls.php(32): Services_Twilio_ListResource->_create(Array) #3 /usr/lib/zabbix/alertscripts/alert-twilio_prisan.php(11): Services_Twilio_Rest_Calls->create('+815031873036', '+819061295054', 'https://dl.drop...') #4 {main} thrown in /usr/lib/zabbix/alertscripts/twilio-php-master/Services/Twilio.php on line 297 [root@wiki-web-2 zabbix]#
課金することで解消。とほほ。
③
最初アカウント登録したら、登録直後にsuspendedになってしまいました。意味がわかりません。仕方なくもう1アカウント作って今回はそれで試しています。
One thought on “PHPでも勉強するか!その11 Twilioで電話をかけよう”