Facebook Bot용 앱을 AWS Lambda에서 구현
16151 단어 람다GClueAPIGatewayFacebookfabo
지금까지 준비
AWS API Gateway 및 AWS Lambda에서 HelloWorld 만들기
ぃ tp // 코 m / 아키라 사사키 / ms / b9 8 8 0330818 3b71d
AWS API Gateway 및 AWS Lambda에서 Facebook Bot 만들기
ぃ tp // 코 m / 아키라 사사키 / ms / 961cb7 아 1 아 7386764863
Facebook에서 보낸 JSON
Facebook에서 보낸 JSON{
"object":"page",
"entry":[
{
"id":PAGE_ID,
"time":1457764198246,
"messaging":[
{
"sender":{
"id":USER_ID
},
"recipient":{
"id":PAGE_ID
},
"timestamp":1457764197627,
"message":{
"mid":"mid.1457764197618:41d102a3e1ae206a38",
"seq":73,
"text":"hello, world!"
}
}
]
}
]
}
필드 이름
Description
유형
sender.id
Sender user id
Number
recipient.id
Recipient user id
Number
timestamp
Timestamp of message
Number
message
Message
Object
데이터 전송
Curl 예curl -X POST -H "Content-Type: application/json" -d '{
"recipient":{
"id":"USER_ID"
},
"message":{
"text":"hello, world!"
}
}' "https://graph.facebook.com/v2.6/me/messages?access_token=PAGE_ACCESS_TOKEN"
ACCESS_TOKEN 획득
귀환 보트 만들기
FacebookBotCallback.jsvar http = require ('https');
var accessToken = "アクセストークン";
var sendingCount = 0;
var myContext;
exports.handler = function(event, context) {
console.log('Received event:', JSON.stringify(event, null, 2));
myContext = context;
// パラメータチェック
var entry = event.entry;
if (!entry || entry.length === 0) {
context.fail("invalid parameter");
return;
}
// 各メッセージの処理
for (var i = 0; i < entry.length; i++) {
var messaging_events = entry[i].messaging;
var timestamp = entry[i].time;
for (var j = 0; j < messaging_events.length; j++) {
var messaging = entry[i].messaging[j];
var sender = messaging.sender.id;
// メッセージ
if (messaging.message && messaging.message.text) {
var text = messaging.message.text;
sendMessage(sender, {text: text});
}
}
}
// context.done();
};
// メッセージ送信
function sendMessage(sender, messageData) {
var json_data = {
recipient: {id: sender},
message: messageData
};
var post_data = JSON.stringify(json_data);
console.log("* sendMessage *" + post_data);
var post_options = {
host: 'graph.facebook.com',
port: '443',
path: '/v2.6/me/messages?access_token='+accessToken,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(post_data)
}
};
var post_req = http.request(post_options, function(res) {
res.setEncoding('utf8');
// res.on('data', function (chunk) {
// console.log('Response: ' + chunk);
// });
res.on('end', function () {
// console.log('End');
sendingCount -= 1;
if (sendingCount === 0) {
myContext.done();
}
});
});
post_req.on('error', function (e) {
console.error('HTTP error: ' + e.message);
sendingCount -= 1;
if (sendingCount === 0) {
myContext.done();
}
});
// post the data
post_req.write(post_data);
post_req.end();
}
Reference
이 문제에 관하여(Facebook Bot용 앱을 AWS Lambda에서 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akira-sasaki/items/cbb667653579db9743ec
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Facebook에서 보낸 JSON
{
"object":"page",
"entry":[
{
"id":PAGE_ID,
"time":1457764198246,
"messaging":[
{
"sender":{
"id":USER_ID
},
"recipient":{
"id":PAGE_ID
},
"timestamp":1457764197627,
"message":{
"mid":"mid.1457764197618:41d102a3e1ae206a38",
"seq":73,
"text":"hello, world!"
}
}
]
}
]
}
필드 이름
Description
유형
sender.id
Sender user id
Number
recipient.id
Recipient user id
Number
timestamp
Timestamp of message
Number
message
Message
Object
데이터 전송
Curl 예curl -X POST -H "Content-Type: application/json" -d '{
"recipient":{
"id":"USER_ID"
},
"message":{
"text":"hello, world!"
}
}' "https://graph.facebook.com/v2.6/me/messages?access_token=PAGE_ACCESS_TOKEN"
ACCESS_TOKEN 획득
귀환 보트 만들기
FacebookBotCallback.jsvar http = require ('https');
var accessToken = "アクセストークン";
var sendingCount = 0;
var myContext;
exports.handler = function(event, context) {
console.log('Received event:', JSON.stringify(event, null, 2));
myContext = context;
// パラメータチェック
var entry = event.entry;
if (!entry || entry.length === 0) {
context.fail("invalid parameter");
return;
}
// 各メッセージの処理
for (var i = 0; i < entry.length; i++) {
var messaging_events = entry[i].messaging;
var timestamp = entry[i].time;
for (var j = 0; j < messaging_events.length; j++) {
var messaging = entry[i].messaging[j];
var sender = messaging.sender.id;
// メッセージ
if (messaging.message && messaging.message.text) {
var text = messaging.message.text;
sendMessage(sender, {text: text});
}
}
}
// context.done();
};
// メッセージ送信
function sendMessage(sender, messageData) {
var json_data = {
recipient: {id: sender},
message: messageData
};
var post_data = JSON.stringify(json_data);
console.log("* sendMessage *" + post_data);
var post_options = {
host: 'graph.facebook.com',
port: '443',
path: '/v2.6/me/messages?access_token='+accessToken,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(post_data)
}
};
var post_req = http.request(post_options, function(res) {
res.setEncoding('utf8');
// res.on('data', function (chunk) {
// console.log('Response: ' + chunk);
// });
res.on('end', function () {
// console.log('End');
sendingCount -= 1;
if (sendingCount === 0) {
myContext.done();
}
});
});
post_req.on('error', function (e) {
console.error('HTTP error: ' + e.message);
sendingCount -= 1;
if (sendingCount === 0) {
myContext.done();
}
});
// post the data
post_req.write(post_data);
post_req.end();
}
Reference
이 문제에 관하여(Facebook Bot용 앱을 AWS Lambda에서 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akira-sasaki/items/cbb667653579db9743ec
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
curl -X POST -H "Content-Type: application/json" -d '{
"recipient":{
"id":"USER_ID"
},
"message":{
"text":"hello, world!"
}
}' "https://graph.facebook.com/v2.6/me/messages?access_token=PAGE_ACCESS_TOKEN"
귀환 보트 만들기
FacebookBotCallback.jsvar http = require ('https');
var accessToken = "アクセストークン";
var sendingCount = 0;
var myContext;
exports.handler = function(event, context) {
console.log('Received event:', JSON.stringify(event, null, 2));
myContext = context;
// パラメータチェック
var entry = event.entry;
if (!entry || entry.length === 0) {
context.fail("invalid parameter");
return;
}
// 各メッセージの処理
for (var i = 0; i < entry.length; i++) {
var messaging_events = entry[i].messaging;
var timestamp = entry[i].time;
for (var j = 0; j < messaging_events.length; j++) {
var messaging = entry[i].messaging[j];
var sender = messaging.sender.id;
// メッセージ
if (messaging.message && messaging.message.text) {
var text = messaging.message.text;
sendMessage(sender, {text: text});
}
}
}
// context.done();
};
// メッセージ送信
function sendMessage(sender, messageData) {
var json_data = {
recipient: {id: sender},
message: messageData
};
var post_data = JSON.stringify(json_data);
console.log("* sendMessage *" + post_data);
var post_options = {
host: 'graph.facebook.com',
port: '443',
path: '/v2.6/me/messages?access_token='+accessToken,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(post_data)
}
};
var post_req = http.request(post_options, function(res) {
res.setEncoding('utf8');
// res.on('data', function (chunk) {
// console.log('Response: ' + chunk);
// });
res.on('end', function () {
// console.log('End');
sendingCount -= 1;
if (sendingCount === 0) {
myContext.done();
}
});
});
post_req.on('error', function (e) {
console.error('HTTP error: ' + e.message);
sendingCount -= 1;
if (sendingCount === 0) {
myContext.done();
}
});
// post the data
post_req.write(post_data);
post_req.end();
}
Reference
이 문제에 관하여(Facebook Bot용 앱을 AWS Lambda에서 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akira-sasaki/items/cbb667653579db9743ec
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var http = require ('https');
var accessToken = "アクセストークン";
var sendingCount = 0;
var myContext;
exports.handler = function(event, context) {
console.log('Received event:', JSON.stringify(event, null, 2));
myContext = context;
// パラメータチェック
var entry = event.entry;
if (!entry || entry.length === 0) {
context.fail("invalid parameter");
return;
}
// 各メッセージの処理
for (var i = 0; i < entry.length; i++) {
var messaging_events = entry[i].messaging;
var timestamp = entry[i].time;
for (var j = 0; j < messaging_events.length; j++) {
var messaging = entry[i].messaging[j];
var sender = messaging.sender.id;
// メッセージ
if (messaging.message && messaging.message.text) {
var text = messaging.message.text;
sendMessage(sender, {text: text});
}
}
}
// context.done();
};
// メッセージ送信
function sendMessage(sender, messageData) {
var json_data = {
recipient: {id: sender},
message: messageData
};
var post_data = JSON.stringify(json_data);
console.log("* sendMessage *" + post_data);
var post_options = {
host: 'graph.facebook.com',
port: '443',
path: '/v2.6/me/messages?access_token='+accessToken,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(post_data)
}
};
var post_req = http.request(post_options, function(res) {
res.setEncoding('utf8');
// res.on('data', function (chunk) {
// console.log('Response: ' + chunk);
// });
res.on('end', function () {
// console.log('End');
sendingCount -= 1;
if (sendingCount === 0) {
myContext.done();
}
});
});
post_req.on('error', function (e) {
console.error('HTTP error: ' + e.message);
sendingCount -= 1;
if (sendingCount === 0) {
myContext.done();
}
});
// post the data
post_req.write(post_data);
post_req.end();
}
Reference
이 문제에 관하여(Facebook Bot용 앱을 AWS Lambda에서 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akira-sasaki/items/cbb667653579db9743ec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)