如何在使用Action-on-google库并使用dialogflow应用程序时为dialogflow webhook服务器中的每个请求添加中间件/截取者, 目的是我想要在密钥仍然有效的每个请求上进行身份验证,并且我还想检查该用户是否已经在管理组然后获取组的所有成员并放入/ userEntity,
现在我正在以良好的意图来做这件事,所以当用户在健康意图中说talk to xyz app
时,如果用户正在管理一个组,则检查数据库,然后获取该特定组的所有成员并放入用户实体,< / p>
但是当用户直接说出命令时,例如如果用户没有说talk to my xyz app
而他说ask my xyz app john wink is present or not
然后app无法识别此名称,请注意我无法使用此逻辑系统名称实体,因为在我的情况下,这些是不是英文名称
现在我已经限制了带有上下文组合的直接命令,但它并不好,例如:用户不能说直接命令,除非WELCOME_DONE
上下文是惠顾意图的上下文
答案 0 :(得分:1)
&#34;直接命令&#34;你提到(ask my xyz app john wink is present or not
)就是我们所说的&#34;动作调用短语&#34;。由于您依赖于用户实体以从动作短语中提取名称,因此如果最近匹配了另一个意图,则您只能成功执行此操作,因为您添加的用户实体是{ {3}}
解决这个问题的方法可能如下。在添加用户实体后,我们将通过Dialogflow第二次运行用户查询来做一些聪明的事情。
在处理&#34;动作调用&#34;的意图中,使用@sys.any
(实际上是一个通配符实体)来捕获名称。为此意图启用webhook。
使用符合预期&#34;动作词组&#34;的User says
示例创建另一个意图,类似于第一个意图,但不要将其添加到您的&#34;额外的触发意图&#34;。为此意图启用webhook。
在您的webhook中创建一个处理步骤1中意图的功能。
在此功能中,查找用户及其群组,并通过/userEntity
添加成员。
现在已经创建了用户实体,请使用用户说的任何内容调用Dialogflow /query
API。
由于现在已创建用户实体,因此将匹配步骤2中创建的意图,因此/query
API响应将包含您在步骤4中创建的实体的名称。
使用该名称生成您想要生成的任何回复。