2017-10-11 129 views
0

我目前正在做一些与Amazon Lex,Lambda和Facebook Messenger Webhook集成chatbots的概念证明。亚马逊Lex Facebook的信使Webhook和页面作用域ID

我通过Facebook的Webhook看到,当邮件发送给Lex时,它们包含一个用户ID(我相信它是页面作用域ID)。

通过LAMBDA初始化和验证与亚马逊莱克斯,我没有看到这个页面作用域确定为ID在LAMBDA内的事件对象,这使我相信莱克斯如果格式化事件并剔除任何主体内容在任​​何地方通过这是从Facebook传来的。

有没有办法读取传入请求的主体内容?

回答

0

当通过Facebook访问Lex时,Lex会将Facebook数据传递给event.requestAttributes内的Lambda函数。这是如下结构:

"requestAttributes": { 
    "x-amz-lex:facebook-page-id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 
    "x-amz-lex:channel-id": "XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", 
    "x-amz-lex:webhook-endpoint-url": "https://channels.lex.us-east-1.amazonaws.com/facebook/webhook/XXX-XXXX-XXXXXXXXX", 
    "x-amz-lex:accept-content-types": "PlainText", 
    "x-amz-lex:user-id": "XXXXXXXXXXXXXXX", 
    "x-amz-lex:channel-name": "FacebookLexBotAppName", 
    "x-amz-lex:channel-type": "Facebook" 
}, 

为了得到页访问令牌 = event.requestAttributes['x-amz-lex:facebook-page-id']
为了得到PSID(页作用域ID) = event.requestAttributes['x-amz-lex:user-id']