【问题标题】:Amazon Lex Facebook Messenger Webhook and getting Page Scoped IDAmazon Lex Facebook Messenger Webhook 和获取 Page Scoped ID
【发布时间】:2017-10-11 22:49:14
【问题描述】:
我目前正在使用 Amazon Lex、Lambda 和用于聊天机器人的 Facebook Messenger Webhook 集成做一些概念验证工作。
我通过 Facebook 的 Webhook 看到,当消息发送到 Lex 时,它们包含一个用户 ID(我相信它是 Page Scoped ID)。
通过使用 Amazon Lex 进行 Lambda 初始化和验证,我没有看到在 Lambda 内部的 event 对象中的任何地方传递了这个页面范围的 ID,这让我相信 Lex 如果格式化事件并剥离删除从 Facebook 传递的任何正文内容。
有没有办法读取传入请求的正文内容?
【问题讨论】:
标签:
aws-lambda
facebook-messenger
amazon-lex
【解决方案1】:
通过 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']