gpt4 book ai didi

node.js - Alexa SDK 重定向以设置 session 属性

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:23 26 4
gpt4 key购买 nike

有没有一种方法可以暂时从一个 intent 重定向到另一个 intent ,以便填充槽或 session 属性,然后返回到原始 intent 以进行响应或实现?

我的用例是要求提供帐户 PIN 作为帐户链接后的辅助身份验证。例如,如果有人问“我的帐户详细信息是什么?”,我希望在 session 属性中更改该 intent (如果存在),如果不存在,则暂时重定向到提示他们输入 PIN 的 intent 并进行设置...然后返回并回答他们的帐户详细信息请求。类似于下面的例子:

const IntentHandler = {
canHandle(input) {
return (
input.requestEnvelope.request.type === 'IntentRequest' &&
input.requestEnvelope.request.intent.name === 'MyIntent'
},
handle(input) {
const { accessToken } = input.requestEnvelope.context.System.user
// ... do stuff with accessToken

if (!input.attributesManager.getSessionAttributes().pin) {
// redirect to other intent to set the pin session attribute
}

// ...response to intent request
}
}

我可以使用插槽填充提示来处理单个 intent ,但这是多个 intent 的常见任务,并且希望将其分开,这样就不必在控制台中为所有需要它的人进行配置。

仅供引用:使用 Node.js 的 ask-sdk

当前版本的ask-sdk可以实现这一点吗?

最佳答案

是的,Alexa 现在可以轻松地在 intent 之间切换并直接跳转到为新 intent 引出特定位置。

我会使用 ElicitSlot Dialog Directive 并包含新 intent 的 updatedIntent 对象。

updatedIntent

Use this to change intents during the dialog or set slot values and confirmation status. See Change the intent or update slot values during the dialog. If you don't need to change the intent, slot values, or confirmation statuses, you can leave this property out of your response.

When you switch intents with this parameter, Alexa attempts to elicit the specified slot value on the new intent. The next IntentRequest to your skill will be the new intent, not the original.

示例:

  1. intent A 缺少访问 token 。
  2. intent A 引导 Alexa 从 intent B 获取 elicitSlot "pin"。(在 sessionAttributes 中包含信息,例如“previousIntent”或“nextIntent”,用作指向 intent B 的方向)
  3. Alexa 通过 intent B 的插槽“pin” 引出提示来响应用户。
  4. 用户提供 PIN 码。
  5. Alexa 向 Intent B(而非 A)提供用户输入,并填充插槽 "pin",并且 Intent B 在 sessionAttribtues 中设置访问 token 。
  6. 然后 Intent B 检查 sessionAttribtues 以了解要返回哪个 Intent 的方向以及从该 Intent 中引出哪个槽。因此,您可以为 intent A 使用 confirmIntentelicitSlot
  7. intent A 将接收下一个用户输入,并且现在检测访问 token 。

请注意,您必须向用户提供切换 intent 之间的信息。如果您使用 confirmIntent,那么它可以是一个简单的是/否确认问题,例如“感谢您的 PIN,您希望我现在检索您的帐户详细信息吗?”。用户说"is",然后将其发送回 intent A 以完成其启动的操作。

如果您不希望与用户进行额外的来回交互,那么据我所知,您必须将 pin 插槽构建到您可能需要引发它的每个 intent 中。这样,您只需停留在 intent A 内。代码效率较低,但对话效率较高,因此这是一种权衡。

关于node.js - Alexa SDK 重定向以设置 session 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55957867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com