fluctでお手軽!EC2レスなAWS(API Gateway + Lambda)〜外部サービス(Questetra + Twilio)と連携する編【cloudpack 大阪 BLOG】
今回は、外部サービスと連携させて、もっともっとfluctを使ってみます。
連携させるのは以下のサービスです。
・Questetra
・Twilio
Questetraとは?
業務改善手法の一つに、BPMと言われるものがあります。
BPMは、UMLなどを策定しているOMGにて策定されています。
詳しくは本家サイトへ。
Questetraは、日本のQuestetra社によって開発されたBPMツールです。
BPMN(業務フロー図)を書くことで、webサービスや人的作業の流れを可視化するだけでなく、実際に処理をさばくことも出来てしまいます。
無料版もあるため、是非使ってみましょう!
Twilioとは?
Twilioは、インターネットと電話・SMSをつなぐAPIです。
コードから、電話をかけたり、SMSを送信したり出来てしまいます。
これらと、API Gateway & Lambdaを使って、自動モーニングコールシステムを組んでみます。
システムのイメージはこんなです。
Twilioの設定
こちらは、ネットに情報が多数落ちているので、細かい手順は割愛します。
アカウント作成後、ツールメニューに「電話をかける」ってのがあります。
必要事項を入力すると、ページの下部に書く言語向けのコードまで用意してくれます。
コピペで使いましょう。
ここでは、ちゃんと電話がかかることを確認しておいてください。
最初試したとき、ConditionalのUrlをブランクにしていたため、電話がかけられず少しハマりました。通話で話させたい内容をs3などに格納しておいてください。
API Gateway & Lambdaの構築
fluctで構築してしまいます。twilioを使うため、インストールしておきましょう。
$ fluct generate morningcall $ cd actions/morningcall/ $ npm install twilio
$ cd ../.. $ vi actions/morningcall/package.json $ vi actions/morningcall/index.js
package.jsonでは、pathを"/morningcall"に変更しました。
index.jsは以下のようにしています。
// Twilio Credentials var accountSid = '<accountSid>'; var authToken = '<authToken> '; var client = require('twilio')(accountSid, authToken); exports.handler = function (event, context) { client.calls.create({ to: "<かける側>", from: "<かけられる側>", url: "<http://hoge/voice.xml>", method: "GET", fallbackMethod: "GET", statusCallbackMethod: "GET", record: "false" }, function(err, call) { console.log(call.sid); context.succeed('Called!!'); }); };
ブラウザでアクセスしてみて、電話がかかってくることを確認してください。
Questetraの設定
アカウントを作りましょう。今回は無料版を使わせてもらいました。
今回は数分で使用できるようになりました。便利です!
今回のフローは以下とします。
① 毎日8:00にプロセスを起動する
② 先程作成したAPI GatewayにHTTPリクエストを発行する
③ プロセスを終了する
適当な名前でプロセスモデルを作成し、BPMNを描きます。
BPMNは以下のようになりました。
BPMNについては、また別の機会に紹介したいと思いますが、
今回のは至極シンプルです。
BPMNをご存知ない方にもほとんど直感的に描けると思います。
左側のメニューは、「advanced」を選択してください。
開始イベントは、「タイマー開始イベント」を選んでください。
開始時刻は毎日8:00に設定します。
次に「メッセージ送信中間イベント(HTTP)」を配置します。
アクセスURLは、先程作ったAPI Gatewayのもの、HTTP Methodは「GET」を選択します。
最後に終了イベントで閉じます。
作成したプロセスモデルをリリースすることで、プロセスが稼働状態になります。
さて、このまま設定した8:00を迎えると。。。
電話がきました!!
わずかな時間で、モーニングコールをかけるシステムが出来てしまいました。