如何让使用Jovo4与Google Actions的Bot不将自身名称识别为contactName实体
Jovo4 + Google Actions 实体误识别解决办法
1. 利用Google Actions原生排除值功能
Google Actions 实体配置原生支持你所说的「非期望识别值」分类能力,不需要额外开发:
- 打开Actions Builder控制台,进入你创建的
contactName实体编辑页 - 找到排除值配置模块,将Bot的正式名称、常用别名全部录入
- 保存后重新发布模型即可,所有录入的排除值即使触发模糊匹配规则,也不会被判定为
contactName实体的有效值。
2. Jovo4 业务层兜底校验
由于你开启了「接受未知值」功能,建议加一层业务逻辑校验避免漏网的误识别:
- 提前维护一份黑名单数组,存入所有不需要识别为联系人的关键词(包含Bot全量名称、别名)
- 在对应意图的handler逻辑最前面,先校验提取到的实体值是否命中黑名单,命中则直接忽略该实体值,走未识别到联系人的提示逻辑
示例代码如下:
// 替换数组内容为实际的Bot名称/别名 const CONTACT_BLACKLIST = ['助手小A', '智能客服', '小帮']; async queryContactHandler() { const targetContact = this.$entities.contactName?.value?.trim(); // 命中黑名单直接忽略实体,引导用户输入正确联系人 if (targetContact && CONTACT_BLACKLIST.includes(targetContact)) { return this.$send('我没有听清你要查找的联系人姓名,可以再告诉我一次吗?'); } // 后续正常业务逻辑 }
3. 可选优化:降低泛化匹配概率
你可以给contactName实体补充更多真实的联系人姓名训练样本,不要加入和Bot名称读音、写法接近的训练值,降低模型泛化识别到无关词汇的概率。
内容的提问来源于stack exchange,提问作者vpego
相关产品推荐
相关产品推荐

