You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Assistant SDK自定义动作无法被识别,求问题排查

问题诊断与修复方案

我帮你排查了这份Action配置文件,发现几个关键问题导致Assistant无法识别你的自定义查询,下面逐一说明并给出修正方案:

1. 自定义类型命名错误

你在types里把类型名写成了$actname,这是参数变量,不是合法的类型名称。自定义类型需要一个唯一的命名空间格式名称(比如com.example.types.ActName),这样才能和intent参数正确关联。

修正后的types部分:

"types": [
  {
    "name": "com.example.types.ActName",
    "entities": [
      {
        "key": "games",
        "synonyms": ["fun", "time killer"]
      }
    ]
  }
]

2. Intent参数类型未关联自定义实体

你的intent参数actname指定的类型是SchemaOrg_Text,但你定义了自定义实体类型,应该把参数类型指向刚创建的自定义类型,这样Assistant才能识别你设置的同义词映射。

修正后的intent.parameters部分:

"parameters": [
  {
    "name": "actname",
    "type": "com.example.types.ActName"
  }
]

3. 设备执行命令的参数名不匹配

在deviceExecution.params里你写的是testname,但intent参数名是actname,这会导致设备端无法正确接收参数值,需要统一参数名称。

修正后的deviceExecution部分:

{
  "deviceExecution": {
    "command": "com.example.commands.StartSomething",
    "params": {
      "actname": "$actname"
    }
  }
}

4. 触发查询需包含Invocation Name

自定义Action必须通过Invocation Name唤起,你不能直接说"start games",正确的查询格式应该是:

Hey Google, ask Start Something to start games
或者
Hey Google, tell Start Something to start fun online

如果想省略Invocation Name,需要将你的intent关联到Google的内置intent(比如actions.intent.DO_SOMETHING),但对于自定义设备命令,推荐保留Invocation Name来避免冲突。

完整修正后的配置文件

{
  "manifest": {
    "displayName": "Start Something",
    "invocationName": "Start Something",
    "category": "PRODUCTIVITY"
  },
  "actions": [
    {
      "name": "com.example.actions.StartSomething",
      "availability": {
        "deviceClasses": [
          {
            "assistantSdkDevice": {}
          }
        ]
      },
      "intent": {
        "name": "com.example.intents.StartSomething",
        "parameters": [
          {
            "name": "actname",
            "type": "com.example.types.ActName"
          }
        ],
        "trigger": {
          "queryPatterns": [
            "start ($com.example.types.ActName:actname)?",
            "start this ($com.example.types.ActName:actname)? online"
          ]
        }
      },
      "fulfillment": {
        "staticFulfillment": {
          "templatedResponse": {
            "items": [
              {
                "simpleResponse": {
                  "textToSpeech": "Starting $actname online"
                }
              },
              {
                "deviceExecution": {
                  "command": "com.example.commands.StartSomething",
                  "params": {
                    "actname": "$actname"
                  }
                }
              }
            ]
          }
        }
      }
    }
  ],
  "types": [
    {
      "name": "com.example.types.ActName",
      "entities": [
        {
          "key": "games",
          "synonyms": ["fun", "time killer"]
        }
      ]
    }
  ]
}

最后验证步骤

  1. 重新部署修正后的配置文件到你的Assistant项目
  2. 重启本地的Assistant SDK服务
  3. 使用包含Invocation Name的查询测试,比如"Hey Google, ask Start Something to start time killer online"

内容的提问来源于stack exchange,提问作者unholy_me

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:35:31