Facebook
lambda
APIGateway
GClue
fabo

AWS API GatewayとAWS Lambdaで、Facebook Botを作成する

More than 1 year has passed since last update.

事前準備

AWS API GatewayとAWS Lambdaで、HelloWorldを作成する
http://qiita.com/akira-sasaki/items/b9e8e8a0330818e3b71d

Facebookアプリの作成

https://developers.facebook.com/quickstarts/?platform=web

bot001.png

bot002.png

bot003.png

bot004.png

Reloadを押す。

bot005.png

bot007.png

Facebook Pageの作成

https://www.facebook.com/pages/create/

page001.png

page002.png

page003.png

page004.png

page005.png

page006.png

AWS Lamdbaの作成

lamdba001.png

メッセージ受信用のScript

FacebookBotCallback
exports.handler = function(event, context) {
    console.log('Received event:', JSON.stringify(event, null, 2));
}

lamdba002.png

lamdba003.png

lamdba004.png

lamdba005.png

lamdba006.png

lamdba007.png

lamdba008.png

lamdba009.png

lamdba010.png

lamdba011.png

lamdba012.png

Cloud Watchでログをチェック

lamdba013.png

watch001.png

watch002.png

watch003.png

watch004.png

watch005.png

Validation用のScript

FacebookBotValidation
var validationToken = "ValidationToken";

exports.handler = function(event, context) {
    console.log('Received event:', JSON.stringify(event, null, 2));

    if (!event["hub.verify_token"] || !event["hub.challenge"]) {
        context.fail("invalid parameter");
        return;
    }

    if (event["hub.verify_token"] === validationToken) {
        context.done(null, Number(event["hub.challenge"]));
    } else {
        context.fail("validation failed");
    }
};

val001.png

lamdba003.png

val002.png

val003.png

val004.png

val006.png

AWS API Gateway

api001.png

api002.png

api101_1.png

受信用のPOSTメソッドを作成

api102_1.png

api103_1.png

api104_1.png

api105_1.png

Curlで呼び出してみる。

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POd '{"key1":"test1","key2":"test2","key3":"test3"}' https://#####.execute-api.ap-northeast-1.amazonaws.com/botcallback/botcallback

Cloud Watchでログ確認

watch001.png

watch002.png

watch003.png

watch004.png

api017.png

Validation用のGETメソッドを作成

api201_1.png

api202.png

api204.png

api205.png

api206.png

api207.png

api208.png

api209.png

  • hub.challenge
  • hub.verify_token

を追加。

api210.png

api211.png

api212.png

api213.png

application/json
{
  "hub.verify_token": "$input.params('hub.verify_token')",
  "hub.challenge": "$input.params('hub.challenge')"
}

FacebookとAWS API Gatewayを連携

fb001.png

fb002.png

fb003.png

curl -ik -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=トークン"

をコマンドラインで実行。

fb004.png

fb005.png

fb006.png

作成したページでメッセージ書き込み

作成したページのメッセージを書き込む

Cloud Watchでログ確認

watch001.png

watch002.png

watch003.png

watch004.png

メッセージがログにでたら成功!

おうむ返しBotのプログラム作成 

http://qiita.com/akira-sasaki/items/cbb667653579db9743ec