Actions on google 谷歌行动有唯一的ID吗?

Actions on google 谷歌行动有唯一的ID吗?,actions-on-google,google-home,Actions On Google,Google Home,在为Alexa开发时,每个技能都有一个唯一的Id。这允许我开发多个技能,使用相同的lambda/codebase,根据技能Id返回唯一的信息 然而,从我在GoogleAssistant中看到的情况来看,操作没有ID。请求包括唯一的用户ID和会话ID。响应包括一个intentid——但无法识别动作本身 是否有任何我可能遗漏的想法/建议?有几种方法可以实现这一点,具体取决于您使用的webhook平台 对于Dialogflow和Action SDK,您始终可以指定唯一的查询参数作为webhook的一部

在为Alexa开发时,每个技能都有一个唯一的Id。这允许我开发多个技能,使用相同的lambda/codebase,根据技能Id返回唯一的信息

然而,从我在GoogleAssistant中看到的情况来看,操作没有ID。请求包括唯一的
用户ID
会话ID
。响应包括一个
intent
id——但无法识别动作本身


是否有任何我可能遗漏的想法/建议?

有几种方法可以实现这一点,具体取决于您使用的webhook平台

对于Dialogflow和Action SDK,您始终可以指定唯一的查询参数作为webhook的一部分,甚至可以让webhook的不同路径部分转到同一lambda并检查查询值或路径。这样做的好处是,您可以完全控制可能的值

如果您使用的是Dialogflow,那么每个意图都有一个唯一的IntentID。这可能是一种跟踪调用了哪一个的方法。但这似乎有点含糊不清

同样对于Dialogflow,您可以在Dialogflow控制台中设置唯一的头,然后在webhook中检查这些头的值。同样,这样做的好处是可以控制值


ActionSDK没有该功能,但它在授权头中传输JWT令牌。此标记是因为它来自正确的项目(和谷歌),但一旦您解码(并验证),则
aud
字段应包含与操作控制台中的项目相同的项目ID。

Thank@cap俘-设置标题/查询参数是一个很好的解决方案。在diagflow中甚至没有看到这一点。这可能有可能没有密切关系取决于“代码库”的确切含义,但你能通过它们发布到的端点来区分它们吗?样本倾向于发送到根目录,但这不是必需的。顺便说一句,我有一个操作托管在带有两个Express路由器的节点服务器中。一个字段来自Alexa,一个字段来自家中。它们共享“业务逻辑”。它使用Matt Kruse的fine alexa应用程序和alexa应用程序服务器库的一部分,这些库支持位于其自己子目录中的多种技能。