【问题标题】:Sending a message from parent page to AWS Lex Bot从父页面向 AWS Lex Bot 发送消息
【发布时间】:2018-06-11 18:39:23
【问题描述】:

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

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

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

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

现在,我没有想法,任何帮助将不胜感激。

【问题讨论】:

    标签: aws-lambda amazon-lex


    【解决方案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); });
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 2020-02-08
      相关资源
      最近更新 更多