首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alexa重定向到设置会话属性

Alexa重定向到设置会话属性
EN

Stack Overflow用户
提问于 2019-05-02 17:58:50
回答 1查看 221关注 0票数 1

是否有一种方法可以暂时将一个意图重定向到另一个意图,以填充时隙或会话属性,然后返回到要响应或实现的原始意图?

我的用例是请求帐户PIN作为帐户链接后的第二身份验证。例如,如果有人问“我的帐户详细信息是什么?”,如果会话属性存在,我希望该意图更改,如果不存在,则临时重定向到提示他们输入密码并设置it...then的意图--返回并回答他们的帐户详细信息请求。类似于下面的例子:

代码语言:javascript
复制
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
  }
}

我可以使用插槽填充提示符来完成这个任务,但是这是一个常见的任务,并且希望将它分开,这样就不需要在控制台中对所有需要的内容进行配置了。

FYI:使用ask-sdk for Node.js

这在当前版本的ask-sdk中可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-03 06:14:28

是的,Alexa使得现在很容易在意图之间切换,然后跳到为新的意图找到一个特定的插槽。

我将使用ElicitSlot对话指令并为新的意图包含updatedIntent对象。

updatedIntent 使用此选项可在对话框期间更改意图或设置槽值和确认状态。请参阅在对话框中更改意图或更新插槽值。如果不需要更改意图、槽值或确认状态,则可以将此属性排除在响应之外。 使用此参数切换意图时,Alexa将尝试在新意图上引出指定的槽值。下一个IntentRequest对你的技能将是新的意图,而不是原来的。

示例:

  1. 意图A缺少访问令牌。
  2. 意图A从意图B引导Alexa到elicitSlot "pin" (在sessionAttributes中包括信息,如"previousIntent“或"nextIntent”,作为指向意图B的指示)
  3. Alexa响应用户的意图B的引出提示插槽"pin"
  4. 用户提供引脚。
  5. Alexa提供用户输入意图B(而不是A)与插槽"pin"填充和意图B设置访问令牌在sessionAttribtues
  6. 然后意向B检查sessionAttribtues的方向,以确定返回到哪个意图,以及从该意图得到哪个时段。所以你可以用confirmIntent或者elicitSlot来表示意图A。
  7. 意图A将接收下一个用户输入,现在检测访问令牌。

请注意,您必须在切换意图之间使用某些内容对用户进行寻址。如果您正在使用confirmIntent,那么它可以是一个简单的是/否确认问题,例如:“谢谢您的密码,您想让我现在检索您的帐户详细信息吗?”用户说“是”,这将被发送回意图A来完成它启动的内容。

如果您不希望这个额外的与用户来回,那么据我所知,您将不得不构建pin插槽的每一个意图,您可能需要得到它。这样的话,你只需停留在意图A.效率较低的代码中,而是更有效的对话,所以这是一种权衡。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55957867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档