Actions on google 如何使用Dialogflow设计有状态对话

Actions on google 如何使用Dialogflow设计有状态对话,actions-on-google,google-home,dialogflow-es,Actions On Google,Google Home,Dialogflow Es,我正试图通过Google Home和Dialogflow制作一个在我办公室预订会议室的应用程序。 这是我的计划: Me: "OK Google, is there any available room now?" Google Home: "Room 1 is available until 16:00." Me: "Book it." Google Home: "Booked Room 1." 当前的问题是如何使Google Home的响应有状态。在我的计划中,当我说“预订”时,Googl

我正试图通过Google Home和Dialogflow制作一个在我办公室预订会议室的应用程序。 这是我的计划:

Me: "OK Google, is there any available room now?"
Google Home: "Room 1 is available until 16:00."
Me:  "Book it."
Google Home: "Booked Room 1."
当前的问题是如何使Google Home的响应有状态。在我的计划中,当我说“预订”时,Google Home必须记住房间1。但我不知道如何让它发生

我阅读了会话API的文档,但我不明白在同一个会话Id中保存变量或状态是可能的。


有人知道吗?

完全有可能,甚至相当容易,在用户与您的操作的对话中保留状态。Dialogflow使他们所说的变得特别容易,它以几种方式使用它:

  • 作为实现的一部分,您可以设置上下文、上下文适用的生存期(会话中的步骤数)以及此上下文的任何参数/值对。以您的示例为例,当操作以房间号和时间进行答复时,您可能会设置一个“挂起的_请求”上下文,上下文对为{“房间”:“1”}和{“时间”:“2017-11-15T16:00Z”},生存期为5

  • 作为意图的一部分,您可以指示必须设置哪些上下文才能在对话中选择该意图。因此,在“挂起的请求”上下文处于活动状态时询问“谁有空?”可能会触发一种意图,即查看当时谁有空,谁可以在该房间会面(可能是因为他们在同一栋大楼中)。但是,如果上下文未处于活动状态,则可能会触发一种意图,即查看您现在可以呼叫的可用用户(即使他们在不同的建筑中)

  • 您在上下文中设置的参数在调用的意图中可用。因此,您将能够了解在实现意图方面设置了哪些空间和时间

  • 如果不更新上下文,则在选定的交换次数后,上下文将消失。这意味着,在您询问房间后,您可以询问您今天是否有任何约会(与房间或时间无关的问题),并且短语“Book it”(预订)仍然具有可用的上下文

  • 如果您使用的是来自Google的,则可以使用
    app.getContext()
    app.setContext()
    。如果使用JSON,则需要直接在响应中提供上下文信息

    Google还提供了一个更通用的
    app.data
    对象,您可以使用node.js客户端库对其设置属性,并且这些属性在对话期间(尽管不是在对话之间)会保留。它在幕后使用上下文,尽管它没有上下文那么强大,因为您不能将其用作意图匹配的一部分


    (顺便说一句,您提供的链接指向API的版本1。该版本已被弃用,并将于2018年5月关闭。它也是针对Actions API而不是Dialogflow的。等效文档位于,但如果您使用Dialogflow,这可能不是您想要的。)

    我不知道上下文功能。非常感谢!