从父页面发送消息到AWS Lex Bot

时间:2018-01-02 01:02:41

标签: aws-lambda amazon-lex

我试图限制我的Lex Bot只显示某个用户有权访问的SQL搜索结果。例如,如果用户A只能访问属于用户A的记录,则Bot将不允许用户A搜索属于用户B的记录。

现在,我已经在我通过AWS S3托管的网站上设置了我的Bot。我现在面临的问题是从父页面(我在S3中设置的网站)获取用户的登录信息,然后将其发送到我的Lex Bot(我的#B;嵌入为iframe)。

登录页面是通过Google登录完成的,该登录在我的SQL数据库中保存了访问令牌。我想知道如何将此访问令牌发送到我的Lex Bot,以便我可以通过Lambda对其进行身份验证。 (我已经完成了Lambda部分,只需要知道如何从父页面获取消息。理想情况下,这部分发生在用户与Bot对话之前,这意味着回发消息所以用户看不到这个信息)

我尝试过的事情:
- 我尝试过单独使用lambda函数来处理这个部分,但是我真的不知道如何将它集成到网站中。
- 我尝试过使用事件监听器但不太确定该消息是发送到机器人还是仅仅是IFrame。

现在,我没有想法,任何帮助都会受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

我设法最终通过添加Javascript函数来发布消息。它看起来不太专业但是有效。

function isBotMinimized() {
        return $('.' + lexWebUi.options.containerClass)
            .hasClass('lex-web-ui--minimize');
    }

    function sendMessage() {            
        return Promise.resolve()
            .then(function () {
                return !isBotMinimized() ||
                    lexWebUi.sendMessageToIframe({ event: 'toggleMinimizeUi' });
            })
            .then(function () {
                return lexWebUi.sendMessageToIframe({ event: 'postText', message: "Welcome"});
            })
            .then(function () { console.log('message succesfully sent'); })
            .catch(function (error) { console.error('error sending message ', error); });
    }