从父页面向 AWS Lex Bot 发送消息
Sending a message from parent page to AWS Lex Bot
我试图限制我的 Lex Bot 只显示特定用户有权访问的 SQL 搜索的结果。例如,如果用户 A 只能访问属于用户 A 的记录,则机器人将不允许用户 A 搜索属于用户 B 的记录。
现在,我已经在通过 AWS S3 托管的网站上设置了我的机器人。我现在面临的问题是从父页面(我在 S3 中设置的网站)获取用户的登录信息并将其发送到我的 Lex Bot(我已将其作为 Iframe 嵌入)。
页面的登录是通过 Google 登录完成的,它在我的 SQL 数据库中保存了一个访问令牌。我想知道如何将此访问令牌发送到我的 Lex Bot,以便我可以通过 Lambda 对其进行身份验证。 (我已经完成了 Lambda 部分,只需要知道如何从父页面获取消息。理想情况下,这部分发生在用户与 Bot 对话之前,这意味着回发消息,因此用户看不到此信息)
我尝试过的事情:
- 我试过做一个单独的 lambda 函数来处理这部分,但真的不知道如何将它集成到网站中。
- 我试过使用事件侦听器,但不太确定消息是发送到机器人还是仅发送到 IFrame。
现在,我没有想法,任何帮助将不胜感激。
我最终通过向 post 消息添加 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); });
}
我试图限制我的 Lex Bot 只显示特定用户有权访问的 SQL 搜索的结果。例如,如果用户 A 只能访问属于用户 A 的记录,则机器人将不允许用户 A 搜索属于用户 B 的记录。
现在,我已经在通过 AWS S3 托管的网站上设置了我的机器人。我现在面临的问题是从父页面(我在 S3 中设置的网站)获取用户的登录信息并将其发送到我的 Lex Bot(我已将其作为 Iframe 嵌入)。
页面的登录是通过 Google 登录完成的,它在我的 SQL 数据库中保存了一个访问令牌。我想知道如何将此访问令牌发送到我的 Lex Bot,以便我可以通过 Lambda 对其进行身份验证。 (我已经完成了 Lambda 部分,只需要知道如何从父页面获取消息。理想情况下,这部分发生在用户与 Bot 对话之前,这意味着回发消息,因此用户看不到此信息)
我尝试过的事情:
- 我试过做一个单独的 lambda 函数来处理这部分,但真的不知道如何将它集成到网站中。
- 我试过使用事件侦听器,但不太确定消息是发送到机器人还是仅发送到 IFrame。
现在,我没有想法,任何帮助将不胜感激。
我最终通过向 post 消息添加 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); });
}