Google Actions是否拥有唯一ID?基于Alexa开发场景的技术问询
嘿,这个问题问得好!确实Google Assistant的Action标识逻辑和Alexa的Skill ID不太一样,但它其实也有对应的唯一标识来区分不同的Action,只是藏在请求结构的不同位置,我来给你梳理几个实用的思路:
项目ID(Project ID):每个Google Assistant Action都绑定一个唯一的GCP项目ID,这是区分不同Action的核心标识。在Webhook请求里,你可以轻松获取它——比如用Actions SDK的Node.js版本时,直接通过
conv.session.projectId就能拿到;如果是直接处理HTTP请求,它会出现在请求体的session字段下的projectId属性里。这个ID是全局唯一的,作用和Alexa的Skill ID完全一致,能精准识别当前请求来自哪个Action。Action专属的标识字段:如果你在同一个GCP项目里创建了多个Action(比如用Actions Builder的多Action功能),每个Action会有自己专属的
action名称。在请求的inputs[0].action字段里会显示这个值,比如你给两个Action分别命名为coffee-order-action和weather-check-action,请求里的action字段就会对应匹配,这样就能区分同一个项目下的不同Action。自定义配置参数:如果你的多个Action共享同一套Webhook代码,还可以给每个Action配置自定义标识。比如在Dialogflow的Fulfillment设置里添加专属环境变量,或者在Actions Builder的Webhook配置中设置自定义HTTP请求头,然后在Webhook代码里读取这些自定义值来判断当前请求所属的Action。这种方式灵活度拉满,适合根据业务需求自定义规则。
另外补充下,如果你用的是Dialogflow,每个Dialogflow代理对应一个Action,代理的agentId也是唯一的,你可以在Webhook请求的originalDetectIntentRequest.payload.agentId里获取到,同样能用来区分不同的Action。
内容的提问来源于stack exchange,提问作者nealrs

