【エンジニア天国(仮)議事録】 Twilio API を試す

こんにちは。エンジニアの重田です。

2014年最初のエンジニア天国(仮)の議事録です。

coding.jpg

Twilio

今日は@masiuchiさんによるTwilioの話です 。

  • TwilioAPIを使って電話をかけたり、SMSを送信したりすることができるサービスです。日本でもサービスがはじまっています。
  • 各種プログラミング言語のライブラリが存在するので、自分のアプリケーションに組み込むことが容易です。
  • TwiMLと呼ばれる形式のXMLを使って各種命令を作ります。
  • TwiML作成に便利なサイトとしてTwimlbinがあります。TwimlbinでXMLを作ると生成したXMLを返すパーマリンクが作られるので、APIから利用できます。
  • GitHubでTC-browser-phoneというブラウザで電話ができるサンプルがあります。@masiuchiさんがそれでデモしました。
  • 二段階認証など利用する場面がありそうなので、Movable Typeのプラグインにあると面白そう

Writer's Eye ~ 重田の視点

せっかくなので Perl のライブラリ WWW::Twilio::APIを試してみました。SYNOPSISの通りでテスト送信できました。Test Credentialを使ってテストしました。料金がかかるサービスなので、ご利用は計画的に!(一応ID関連は伏字としました)


$ vi cpanfile
$ cat cpanfile
requires 'WWW::Twilio::API';
$ carton install
$ vi twilio-api.pl
$ cat twilio-api.pl
#!/usr/bin/env perl
use strict;
use warnings;
use feature qw/say/;
use WWW::Twilio::API;
my %TEST_CREDENTIAL = (
sid   => 'あなたのsid',
token => 'あなたのtoken',
);
my $twilio = WWW::Twilio::API->new(
AccountSid => $TEST_CREDENTIAL{sid},
AuthToken  => $TEST_CREDENTIAL{token},
);
my $response = $twilio->POST(
'Calls',
From => '送信元電話',
To   => '送信先電話',
Url  => 'https://demo.twilio.com/welcome/voice/ja/',
);
say $response->{content};
__END__
$ carton exec perl twilio-test.pl
<?xml version="1.0" encoding="UTF-8"?>
<TwilioResponse><Call><Sid>今回のCallSid</Sid><DateCreated>Wed, 15 Jan 2014 01:25:41 +0000</DateCreated><DateUpdated>Wed, 15 Jan 2014 01:25:41 +0000</DateUpdated><ParentCallSid/><AccountSid>あなたのsid</AccountSid><To>送信先電話</To><ToFormatted>送信先電話</ToFormatted><From>送信元電話</From><FromFormatted>送信元電話</FromFormatted><PhoneNumberSid/><Status>queued</Status><StartTime/><EndTime/><Duration/><Price/><PriceUnit>JPY</PriceUnit><Direction>outbound-api</Direction><AnsweredBy/><ApiVersion>2010-04-01</ApiVersion><Annotation/><ForwardedFrom/><GroupSid/><CallerName/><Uri>/2010-04-01/Accounts/あなたのsid/Calls/今回のCallSid</Uri><SubresourceUris><Notifications>/2010-04-01/Accounts/あなたのsid/Calls/今回のCallSid/Notifications</Notifications><Recordings>/2010-04-01/Accounts/あなたのsid/Calls/今回のCallSid/Recordings</Recordings></SubresourceUris></Call></TwilioResponse>

ライブラリを使うと簡単に処理できますね。


diff --git twilio-test.pl twilio-test.pl
index b9bae84..b8e08fc 100644
--- twilio-test.pl
+++ twilio-test.pl
@@ -17,7 +17,7 @@ my $twilio = WWW::Twilio::API->new(
);
my $response = $twilio->POST(
-    'Calls',
+    'Calls.json',
From => '送信元電話番号',
To   => '送信先電話番号',
Url  => 'https://demo.twilio.com/welcome/voice/ja/',

こうすることで、JSON形式でデータを取得することもできます。

サービス監視をしていて閾値を超えたときに担当者に電話する場面はあるので、監視ツールと組み合わせてTwilio APIを利用したりサービスの二段階認証で利用するといったあたりが現実的な実装だと思いました。

2013年に開かれたMashup Awards 9では、Twilio APIを利用したサービスが最優秀賞を獲得しましたので、いろいろと面白い使い方がありそうですね。

実際に使う場合は通信料が発生しますのでご利用は計画的に!

Six Apart をフォローしませんか?

次の記事へ

【シックス・アパートの勉強法】 電車内で立ったままプログラミングする仰天の方法

前の記事へ

Web業界人として&個人としての新都知事への期待 #ぼくらの政策