pict3の日記

AWSネタを中心に

fluctでお手軽!EC2レスなAWS(API Gateway + Lambda)〜外部サービス(Questetra + Twilio)と連携する編【cloudpack 大阪 BLOG】

f:id:pict3:20150915210230p:plain

今回は、外部サービスと連携させて、もっともっとfluctを使ってみます。

連携させるのは以下のサービスです。

・Questetra 

・Twilio 

Questetraとは?

f:id:pict3:20150915214212p:plain

業務改善手法の一つに、BPMと言われるものがあります。

BPMは、UMLなどを策定しているOMGにて策定されています。

詳しくは本家サイトへ。

Questetraは、日本のQuestetra社によって開発されたBPMツールです。

BPMN(業務フロー図)を書くことで、webサービスや人的作業の流れを可視化するだけでなく、実際に処理をさばくことも出来てしまいます。

無料版もあるため、是非使ってみましょう!

 

Twilioとは?

f:id:pict3:20150915214223p:plain

Twilioは、インターネットと電話・SMSをつなぐAPIです。

コードから、電話をかけたり、SMSを送信したり出来てしまいます。

 

これらと、API Gateway & Lambdaを使って、自動モーニングコールシステムを組んでみます。

システムのイメージはこんなです。

 

f:id:pict3:20150915215908p:plain

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は以下のようになりました。

f:id:pict3:20150917141136p:plain

BPMNについては、また別の機会に紹介したいと思いますが、

今回のは至極シンプルです。

BPMNをご存知ない方にもほとんど直感的に描けると思います。

 

左側のメニューは、「advanced」を選択してください。

開始イベントは、「タイマー開始イベント」を選んでください。

開始時刻は毎日8:00に設定します。

次に「メッセージ送信中間イベント(HTTP)」を配置します。

アクセスURLは、先程作ったAPI Gatewayのもの、HTTP Methodは「GET」を選択します。

最後に終了イベントで閉じます。

 

作成したプロセスモデルをリリースすることで、プロセスが稼働状態になります。

 

さて、このまま設定した8:00を迎えると。。。
電話がきました!!

 

わずかな時間で、モーニングコールをかけるシステムが出来てしまいました。

API Gateway + Lambdaに期待が高まります。