Artificial intelligence 如何为dialogflow webhook服务器上的每个请求添加中间件/拦截器

Artificial intelligence 如何为dialogflow webhook服务器上的每个请求添加中间件/拦截器,artificial-intelligence,actions-on-google,api-ai,dialogflow-es,Artificial Intelligence,Actions On Google,Api Ai,Dialogflow Es,在google library上使用Action和dialogflow应用程序时,如何为dialogflow webhook服务器上的每个请求添加中间件/拦截器, 目的是我想在每个请求上验证密钥是否仍然有效,并且我想检查该用户是否已经在管理组,然后获取组的所有成员并放入/userEntity 现在,我在wellcome intent中执行此操作,所以当用户在wellcome intent中说“与xyz应用程序对话”时,我会在数据库中检查用户是否正在管理一个组,然后获取该特定组的所有成员并放入用户

在google library上使用Action和dialogflow应用程序时,如何为dialogflow webhook服务器上的每个请求添加中间件/拦截器, 目的是我想在每个请求上验证密钥是否仍然有效,并且我想检查该用户是否已经在管理组,然后获取组的所有成员并放入/userEntity

现在,我在wellcome intent中执行此操作,所以当用户在wellcome intent中说“与xyz应用程序对话”时,我会在数据库中检查用户是否正在管理一个组,然后获取该特定组的所有成员并放入用户实体

但当用户直接说出一个命令时,这种逻辑就变成了垃圾,例如,如果用户不说
与我的xyz应用程序交谈
,而是说
询问我的xyz应用程序john wink是否存在
,则应用程序无法识别这个名称,请注意,我无法使用系统名称实体,因为在我的情况下,这些名称不是英文名称

目前,我限制了直接命令与上下文组合,但这并不好,例如:用户不能说直接命令,除非
欢迎_完成
上下文是出于wellcome意图的上下文

您提到的“直接命令”(
询问我的xyz应用程序john wink是否存在
)就是我们所说的“动作调用短语”. 由于要从动作短语中提取名称需要依赖于用户实体,因此只有在最近匹配了另一个意图的情况下,才能成功执行此操作,因为您添加的用户实体是

解决这一问题的一种方法可能是:。在添加用户实体之后,我们将通过Dialogflow再次运行用户查询

  • 在处理“操作调用”的意图中,使用
    @sys.any
    (本质上是一个通配符实体)捕获名称。为此目的启用webhook

  • 使用
    用户所说的
    示例创建另一个意图,这些示例与预期的“动作短语”匹配,类似于第一个意图,但不要将其添加到“其他触发意图”中。为此目的启用webhook

  • 在webhook中创建一个函数,用于处理步骤1中的意图

  • 在此函数中,查找用户及其组,并通过
    /userEntity
    添加成员

  • 现在已经创建了用户实体,使用用户所说的任何内容调用Dialogflow
    /query
    API

  • 由于用户实体现在已经创建,在步骤2中创建的意图将被匹配,因此
    /query
    API响应将包含您在步骤4中创建的实体的名称

  • 使用名称生成您想要生成的任何响应


  • 您使用的是什么应用程序服务器?您是否可以更新您的问题,使其包含代码,说明您现在如何处理一个意图,以及为什么您在其他意图中遇到问题?firebase函数,一个名为
    webhook
    的函数,很难理解指定的指令,仍在尝试消化:-)听起来像是解决方案,如果有人理解,请在评论中多解释一下,你需要帮助理解哪一部分?