DialogFlow 在不等待语音命令的情况下保持会话打开

DialogFlow keep session open without waiting for a voice command

我正在开发一个 Dialogflow 项目,我需要一种方法 tellask 用户无需等待语音命令,但我还需要会话保持打开状态。 我不能使用 tell 因为它基本上会立即终止会话。 Ask 始终等待用户的语音命令。如果它无法获得任何语音命令,那么它就会结束对话。

假设用户在该状态下有多个选项,并且用户可以随时说出可用命令之一,如 nextprevious,流程将继续工作。

比如我们得到我们想要的状态然后:

user: next
google-home: got it! (Do not kill the session here and do not expect user voice command)
after 10 minutes...
user: previous
google-home: got it! (Do not kill the session here and do not expect user voice command)

在 DialogFlow 中是否有任何构建方式可以实现此目的。

谢谢。

不,目前这是不可能的,通常这是一个糟糕的设计目标。 Google 一般不鼓励打开麦克风,因为这可能是一个隐私问题。

您有几种解决方法:

  • 如果 "Ok, Got it" 确实是一个可接受的响应,您可以设置一个 IFTTT 触发器(或几个),它会使用执行任何操作所需的参数触发您的 webhook "next"或者 "previous" 会做。然后用户只需要说 "Hey Google, Next",你就会得到一个通用的回复,动作就会发生,麦克风就会关闭。这不涉及 Dialogflow。

  • 如果您需要更真实的回复,您可以创建一个使用额外短语的操作。所以像 "Hey Google, ask ultimate slide advancer to go to the next slide" 这样的东西会

    • 开始"ultimate slide advancer"动作,所以Google会说"Ok, getting Ultimate Slide Advancer"

    • 激活一个匹配 "Go to the next slide"

    • 的 Intent
    • 该意图将采取行动(转到下一张幻灯片)并做出相应响应。

    • 如果这听起来很啰嗦,您的用户可以将 "next slide" 的快捷方式设置为 "ask ultimate slide advancer to go to the next slide"。不过,Google 助理仍会以整个例程进行响应。

(有些情况下开放式麦克风是可以接受的,但它们应该被视为退化的情况,特别是因为它们很难与开放式麦克风被滥用的情况区分开来。)