我目前正在使用Amazon Lex,Lambda以及针对聊天机器人的Facebook Messenger Webhook集成进行一些概念验证。
我通过Facebook的Webhook看到,当消息发送给Lex时,它们包含一个用户ID(我认为是Page Scoped ID)。
通过使用Amazon Lex进行Lambda初始化和验证,我没有看到这个页面作用域ID在Lambda中的 event 对象中的任何位置传递,这让我相信Lex格式化事件并删除从Facebook传递的任何正文内容。
有没有办法读取传入请求的正文内容?
答案 0 :(得分: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(Page Scoped ID) = event.requestAttributes['x-amz-lex:user-id']