我正在尝试通过Google助手创建自定义操作。我有由用户定义的自定义用户数据,我希望用户向我询问一些有关此数据的信息,并通过提供其名称来确定他们想了解哪些数据。
例如: 用户说“告诉我弗雷德” 助手回复“弗雷德是红色的”
[
{
"name":"Fred",
"info":"Fred is red"
}
]
我遇到的问题是,当用户提供不存在的名称时,如何添加培训短语或重新提示用户使用。
例如:
用户说“告诉我格雷格” 助理回答“我找不到'Greg'。您想知道谁?”
[
{
"name":"Fred",
"info":"Fred is red"
}
]
我尝试添加仅包含“名称”参数的培训响应,但是如果用户说“告诉我有关弗雷德”,则“名称”参数设置为“告诉我有关弗雷德”,而不仅仅是“ Fred”,这意味着它会忽略我设置的其他培训回复。
外面有谁可以成为我的Obi-wan Kenobi?
编辑: 我已经在同一项目中使用了Alexa,并已将elicitSlot指令发送给Alexa。可以实现类似的东西吗?
答案 0 :(得分:0)
在这种情况下,没有真正等同于 elicitSlot 指令(至少不是我通常看到的方式),但是它确实提供了多种工具来完成您要尝试执行的操作
通常的方法是,在发送回复时,您还要为回复设置Output Context。您可以将要保留的任何信息(提示的值以及可能已经收集的其他状态)设置为Context的参数。
然后,您可以将此上下文设置为输入上下文的Intent。然后,只有在上下文处于活动状态时,才会匹配Intent。此Intent可以匹配@sys.any
,或在这种情况下可能适合的其他任何实体类型。
此方法的一个优点是,它允许用户以更多的方式进行对话答复,或者将其答复从刚刚提出的提示性问题转移到其他地方。它允许用户在上下文中或通过您已经设置用于其他目的的其他Intent进行回答。