亚马逊Lex Facebook Messenger Webhook并获取Page Scoped ID

时间:2017-10-11 22:49:14

标签: aws-lambda facebook-messenger amazon-lex

我目前正在使用Amazon Lex,Lambda以及针对聊天机器人的Facebook Messenger Webhook集成进行一些概念验证。

我通过Facebook的Webhook看到,当消息发送给Lex时,它们包含一个用户ID(我认为是Page Scoped ID)。

通过使用Amazon Lex进行Lambda初始化和验证,我没有看到这个页面作用域ID在Lambda中的 event 对象中的任何位置传递,这让我相信Lex格式化事件并删除从Facebook传递的任何正文内容。

有没有办法读取传入请求的正文内容?

1 个答案:

答案 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']