我通过执行来实现一个基本的智能家居服务SYNC
,EXECUTE
以及DISCONNECT
行动.在SYNC
操作中,所有设备都已willReportState
设置为false
.
但是,在https://developers.google.com/actions/smarthome/report-state上,我读到我们需要自己报告状态更改.这意味着所有设备必须willReportState
设置为true
,我假设?
我的主要问题是,如果上次报告的状态与现实不同,会发生什么?
例如,假设我们在5分钟前报告某个设备(具有该OnOff
特征)已关闭.几秒钟前,客户通过按下电源按钮手动为设备供电.让我们假设智能家居图尚未报告或知道此事实.
如果客户要求助理,现在会发生什么:关闭我的设备?这个请求会被拒绝吗?也就是说,即使Graph Home服务认为设备已经断电,履行服务是否会收到此后端?
另外,QUERY
如果我们实施报告国家,我们还需要实施这项行动吗?或者都是必需的?
在旁注中,该文件也没有真正解决必须报告状态变化的频率.它是否记录在其他地方?
在我的Dialog Flow代理中,我有一个实体@city
.可能的值是New York
,, Berlin
......但Amsterdam
不在该列表中.
有没有办法根据我的SQL数据库中的值动态验证实体值?例如,如果用户写道Amsterdam
,我想给用户一个他应该要求另一个城市的提示.这可以通过webhook完成吗?
或者我应该定期将我的数据库城市与代理同步?如果是这样,可以通过API完成吗?
我不确定这里的标准方法是什么.
在Dialog Flow (API.ai) 中的数据上下文在哪里,我询问了如何保留特定于用户的数据。例如,用户要求提供城市列表,webhook 服务随机选择三个。如果您稍后想引用此列表中的城市,则需要以某种方式存储它。这个问题的答案是它可以在上下文中来回转移。
现在我在文档中阅读了有关用户实体的信息。这对我来说是一个未知的概念。我现在的问题是:我们是否也可以将用户实体用于这样的流程?例如:
@user-cities
通过 REST API 为正在进行的会话创建一个用户实体。我们甚至可以将 SQL 标识符作为键,将城市名称作为可能的同义词。@user-cities
for 参数。当根据他之前的城市列表向 webhook 服务提供有效城市时,将提供标识符。然后,Webhook 服务可以使用此标识符来提供有关该城市的其他信息。示例流程:
User: Please provide me some interesting cities.
Agent: What about New York, Berlin and Barcelona?
User: Please tell me more about Barcelona!
Agent: Sure, Barcelona is ...
Run Code Online (Sandbox Code Playgroud)
我还没有尝试过这个,但我想知道这是否是用户实体的一个很好的应用程序?后续问题是:何时使用用户实体,何时将数据保留在上下文中?
我一直在阅读关于Dialog Flow的内容,有一件事对我来说还不清楚.我试着举个例子.
我想实现如下转换:
User: Hello Google, what are some interesting cities?
Bot: Hello there! Sydney, New York and Berlin are nice.
User: Could you tell more about the second city?
Bot: Sure. New York is amazing. In New York, you can ...
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在构建数据上下文.在第一个问题之后,我们应该记住我们回答了Sydney, New York and Berlin
,所以我们理解the second city
第二个问题中实际意味着什么.
我们应该将这些数据存储在webhook服务中还是存储在Dialog Flow中的上下文中?如果我们必须在webhook服务中存储这些数据,我们如何区分不同的持续对话?