启用Watson Assist sys-location实体后,能否根据国名返回国家代码?
完全可以实现这个需求!
其实Watson Assistant的sys-location实体本身就内置了国家代码的属性,不需要额外复杂配置就能满足你的需求,下面分两种场景给你具体实现步骤:
一、直接利用sys-location的内置属性(推荐)
当sys-location识别到用户输入的是国家名称时,它会返回包含国家代码的结构化数据,其中alpha-2字段就是你需要的两位国家代码(比如JP、CN)。具体操作如下:
确认实体配置:
- 进入你的Watson Assistant技能,打开实体面板,找到
sys-location实体 - 确保实体的识别类型里勾选了
Country(这是默认启用的,但建议确认一下)
- 进入你的Watson Assistant技能,打开实体面板,找到
在对话框中获取并返回代码:
- 在处理用户输入的对话框节点里,你可以直接通过变量访问国家代码:
$sys-location.country.alpha-2 - 比如设置响应文本为:
你输入的国家代码是:$sys-location.country.alpha-2 - 测试一下:用户输入"Japan",系统会返回"你输入的国家代码是:JP";输入"China"则返回"你输入的国家代码是:CN"
- 在处理用户输入的对话框节点里,你可以直接通过变量访问国家代码:
二、自定义映射处理特殊场景
如果遇到某些国家名称识别有偏差,或者需要支持自定义别名(比如用户输入"米国"对应US),可以通过脚本添加自定义映射表:
添加脚本节点:
在对话框节点的"Script"标签里,添加以下代码:// 定义自定义国家名称-代码映射表 const customCountryMap = { "米国": "US", "天朝": "CN", // 可以根据需求添加更多条目 }; // 优先从自定义映射获取,如果没有则用内置的alpha-2代码 let countryCode = null; const recognizedCountryName = $sys-location?.country?.name; if (recognizedCountryName && customCountryMap[recognizedCountryName]) { countryCode = customCountryMap[recognizedCountryName]; } else { countryCode = $sys-location?.country?.alpha-2; } // 将结果存入上下文变量,方便后续使用 context.set("custom_country_code", countryCode);在响应中使用变量:
设置响应文本为:对应的国家代码是:$custom_country_code
额外注意事项
- 对于多语言输入(比如中文"中国"、英文"China"),
sys-location都能正确识别并返回对应的CN代码,无需额外配置 - 如果发现某些国家名称识别不准确,可以在技能的"Training"面板添加示例 utterance,帮助Watson提升识别精度
内容的提问来源于stack exchange,提问作者george jiang
相关产品推荐
相关产品推荐

