关于Watson Assistant Slots功能的两项技术问题咨询
我来帮你搞定这两个Watson Assistant Slots的问题,都是日常使用里很常见的场景,咱们一个个拆解:
问题1:验证槽位输入为恰好5位数字
这里要注意@sys-number实体的一个特性:它会自动去掉输入数字的前导零,比如用户输入01234,它提取出的数值是1234,转成字符串后长度就是4,不符合要求。所以得分两种情况处理:
情况A:不需要前导零(输入为5位正整数,范围10000-99999)
- 打开你的槽位配置面板,找到「验证」模块
- 点击「添加验证」,选择「表达式」类型,输入验证规则:
String($number).length === 5 - 设置验证失败的提示语,比如:「不好意思,请输入一个恰好5位的数字哦,比如12345」
情况B:需要保留前导零(比如00123这种格式也合法)
这种情况下@sys-number就不适用了,得换成@sys-string实体来捕获输入:
- 把槽位关联的实体改成
@sys-string - 在验证规则里用正则表达式判断输入是否为5位纯数字:
$number.match(/^\d{5}$/) !== null - 失败提示语可以设为:「麻烦输入一个5位数字,允许带前导零,比如01234」
问题2:配置客户ID和订单ID两个数字型槽位
这个场景的配置核心是明确槽位的分工和收集逻辑,步骤如下:
创建两个独立槽位
- 第一个槽位命名为「客户ID」,关联
@sys-number实体,绑定上下文变量$customer_id,提示语设为「请提供您的客户ID」 - 第二个槽位命名为「订单ID」,关联
@sys-number实体,绑定上下文变量$order_id,提示语设为「请提供您的订单ID」
- 第一个槽位命名为「客户ID」,关联
设置槽位收集规则
- 在对应的对话节点里启用Slots功能,把这两个槽位添加进去
- 如果希望用户可以任意顺序输入(比如先讲订单ID再讲客户ID),保持默认的「允许乱序收集」开关打开即可;如果必须按固定顺序收集,就调整槽位的排列顺序并关闭乱序开关
可选:添加针对性验证
如果客户ID和订单ID有固定位数要求(比如客户ID是6位,订单ID是8位),可以给每个槽位单独加验证规则,参考问题1的方法就行测试多输入场景
Watson Assistant支持一次性提取多个实体,比如用户说「我的客户ID是123456,订单ID是78901234」,系统会自动把两个值分别填充到对应的槽位里,不需要用户分步输入
内容的提问来源于stack exchange,提问作者1980.learner
相关产品推荐
相关产品推荐

