首页 > 解决方案 > 从 Alexa 应用程序中的自定义意图调用其他意图是否合乎逻辑

问题描述

我的交互必须分两步执行。在第一步。Alexa 会向用户获取一些信息。根据发布的信息,Alexa 将要求根据用户的回答(是/否)采取另一项行动。

那么是否可以调用一个意图,并且基于先前意图通过重新提示的回复,我将能够调用alexa应用程序的另一个意图。

如果是这样,那么我该如何通过 akexa node js SDK v2 来做到这一点。

用例:
我的应用程序正在与第三方 API 连接,该 API 需要 Alexa 才能使用帐户链接。场景是,当我的帐户已链接并且我拥有有效的访问令牌时。以下是对话的进行方式:

用户:Alexa,请“a”给我拿逾期发票。
Alexa:您有“x”张发票。您要发送付款提醒吗?
用户:是的。
Alexa:您发送提醒的请求已被注册。还有什么我可以帮忙的吗?
用户:不,谢谢。

所以为此,我必须与外部 API 进行两次通信。一是获取逾期发票,二是发送提醒。

标签: alexaalexa-skills-kit

解决方案


从你的例子中,我猜你有invoices一个意图,然后reminders是另一个意图。如果reminders仅在 之后立即使用invoices,那么我会让它们成为一个单一的意图。但是,如果您希望用户在任何时候创建提醒,或者如果您有多个可以流入该意图的reminders意图,则可以使用单独的意图。

查看: 如何传递新意图

每个 Dialog 指令都包含一个updatedIntent可以采用 Intent 对象的属性。使用它来:

  • 以完全不同的意图触发对话。例如,在完成 BookFlight 意图的对话后,您可以返回Dialog.DelegateupdatedIntent设置BookRentalCar为开始新对话。

...
当您使用updatedIntent更改为不同的意图时,该指令会针对新意图而不是原始意图:

...
当您用于updatedIntent设置或更改原始意图的数据时,请确保意图名称和完整的插槽集与发送到您的技能的意图相匹配。

因此,要使用您的示例,您将执行以下操作:

  1. 用户:Alexa,让 SkillName 给我拿逾期发票。

    • 触发invoices意图。
    • 进行 API 调用,获取 # 个发票。
    • 返回Dialog.DelegateDialog.ElicitSlotDialog.ConfirmIntent设置updatedIntentreminders意图。(包括任何和所有插槽,必须是完整的意图对象)
    • 将 outputSpeech 设置为“您有 X 个发票。您要发送付款提醒吗?”
  2. Alexa:你有 X 张发票。您要发送付款提醒吗?

  3. 用户:是的。

    • 根据您选择使用的对话指令,它会以不同的方式返回用户的答案。填充您准备好的空位,或在confirmationStatus, 或AMAZON.YesIntent.
    • 检查其中一项是否正确,如果确认,请调用提醒 API。
    • 使用输出消息返回已完成的意图:
  4. Alexa:您发送提醒的请求已被注册。还有什么我可以帮忙的吗?


推荐阅读