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

More than 3 years have 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