alexa - 从 Alexa 应用程序中的自定义意图调用其他意图是否合乎逻辑
问题描述
我的交互必须分两步执行。在第一步。Alexa 会向用户获取一些信息。根据发布的信息,Alexa 将要求根据用户的回答(是/否)采取另一项行动。
那么是否可以调用一个意图,并且基于先前意图通过重新提示的回复,我将能够调用alexa应用程序的另一个意图。
如果是这样,那么我该如何通过 akexa node js SDK v2 来做到这一点。
用例:
我的应用程序正在与第三方 API 连接,该 API 需要 Alexa 才能使用帐户链接。场景是,当我的帐户已链接并且我拥有有效的访问令牌时。以下是对话的进行方式:
用户:Alexa,请“a”给我拿逾期发票。
Alexa:您有“x”张发票。您要发送付款提醒吗?
用户:是的。
Alexa:您发送提醒的请求已被注册。还有什么我可以帮忙的吗?
用户:不,谢谢。
所以为此,我必须与外部 API 进行两次通信。一是获取逾期发票,二是发送提醒。
解决方案
从你的例子中,我猜你有invoices
一个意图,然后reminders
是另一个意图。如果reminders
仅在 之后立即使用invoices
,那么我会让它们成为一个单一的意图。但是,如果您希望用户在任何时候创建提醒,或者如果您有多个可以流入该意图的reminders
意图,则可以使用单独的意图。
查看: 如何传递新意图
每个 Dialog 指令都包含一个
updatedIntent
可以采用 Intent 对象的属性。使用它来:
- 以完全不同的意图触发对话。例如,在完成 BookFlight 意图的对话后,您可以返回
Dialog.Delegate
并updatedIntent
设置BookRentalCar
为开始新对话。...
当您使用updatedIntent
更改为不同的意图时,该指令会针对新意图而不是原始意图:...
当您用于updatedIntent
设置或更改原始意图的数据时,请确保意图名称和完整的插槽集与发送到您的技能的意图相匹配。
因此,要使用您的示例,您将执行以下操作:
用户:Alexa,让 SkillName 给我拿逾期发票。
- 触发
invoices
意图。 - 进行 API 调用,获取 # 个发票。
- 返回
Dialog.Delegate
或Dialog.ElicitSlot
或Dialog.ConfirmIntent
设置updatedIntent
为reminders
意图。(包括任何和所有插槽,必须是完整的意图对象) - 将 outputSpeech 设置为“您有 X 个发票。您要发送付款提醒吗?”
- 触发
Alexa:你有 X 张发票。您要发送付款提醒吗?
用户:是的。
- 根据您选择使用的对话指令,它会以不同的方式返回用户的答案。填充您准备好的空位,或在
confirmationStatus
, 或AMAZON.YesIntent
. - 检查其中一项是否正确,如果确认,请调用提醒 API。
- 使用输出消息返回已完成的意图:
- 根据您选择使用的对话指令,它会以不同的方式返回用户的答案。填充您准备好的空位,或在
Alexa:您发送提醒的请求已被注册。还有什么我可以帮忙的吗?
推荐阅读
- ios - 避免在 URLComponents 中对主机进行百分比编码
- java - 无法在 Firestore 中按字符串查询。RuntimeException 字段“纬度”不是 java.lang.String
- arrays - 向量化环移数组
- jquery - 在 4x3 li 网格中更改 select 'li' 的类
- html - @include 未被检测到并且媒体断点不起作用?
- android - 使用 liveData 返回 void 的函数
- android - 如何解决在android中下载文件时权限被拒绝的问题
- python - 如何在 pip 安装时修复 lxml 崩溃
- php - 在 mysql json 列中搜索
- microsoft-teams - 如何将应用程序添加到 MS Teams 中的群聊