Google 操作是否具有唯一 ID?
Do Google Actions have unique ids?
在为 Alexa 开发时,每个技能都有一个唯一的 ID。这让我可以开发多种技能,使用相同的 lambda / 代码库,return 基于技能 ID 的独特信息。
但是,根据我在 Google 助手中看到的情况,操作没有 ID。请求包括唯一的 userId
和 conversationId
。 Responses 包含一个 intent
id——但没有办法识别操作本身。
关于我可能错过的事情的任何想法/指示?
有几种方法可以解决这个问题,具体取决于您为 webhook 使用的平台。
对于 Dialogflow 和 Action SDK,您始终可以指定一个唯一的查询参数作为 webhook 的一部分,甚至可以让 webhook 的不同路径部分转到相同的 lambda 并检查查询值或路径。这样做的好处是您可以完全控制可能的值。
如果您使用的是 Dialogflow,则通过的每个 Intent 都有一个唯一的 IntentID。这可能是一种跟踪调用了哪一个的方法。但这似乎有点笨拙。
同样对于 Dialogflow,您可以在 Dialogflow 控制台中设置唯一的 header,然后在您的 webhook 中检查这些 header 的值。同样,这样做的好处是让您可以控制该值。
Action SDK 没有该功能,但它确实在 授权 header 中传输 JWT 令牌。此标记用于 verifying,它来自正确的项目(以及来自 Google),但是一旦您对其进行解码(并验证),aud
字段应包含相同的内容项目 ID 作为操作控制台中的项目。
在为 Alexa 开发时,每个技能都有一个唯一的 ID。这让我可以开发多种技能,使用相同的 lambda / 代码库,return 基于技能 ID 的独特信息。
但是,根据我在 Google 助手中看到的情况,操作没有 ID。请求包括唯一的 userId
和 conversationId
。 Responses 包含一个 intent
id——但没有办法识别操作本身。
关于我可能错过的事情的任何想法/指示?
有几种方法可以解决这个问题,具体取决于您为 webhook 使用的平台。
对于 Dialogflow 和 Action SDK,您始终可以指定一个唯一的查询参数作为 webhook 的一部分,甚至可以让 webhook 的不同路径部分转到相同的 lambda 并检查查询值或路径。这样做的好处是您可以完全控制可能的值。
如果您使用的是 Dialogflow,则通过的每个 Intent 都有一个唯一的 IntentID。这可能是一种跟踪调用了哪一个的方法。但这似乎有点笨拙。
同样对于 Dialogflow,您可以在 Dialogflow 控制台中设置唯一的 header,然后在您的 webhook 中检查这些 header 的值。同样,这样做的好处是让您可以控制该值。
Action SDK 没有该功能,但它确实在 授权 header 中传输 JWT 令牌。此标记用于 verifying,它来自正确的项目(以及来自 Google),但是一旦您对其进行解码(并验证),aud
字段应包含相同的内容项目 ID 作为操作控制台中的项目。