在IBM Watson聊天机器人上,我创建了2个实体,一个名为@serial_number,另一个名为@material_number。
序列号的模式是(\d{7,9})-(\d{2,4})-(\d{1,3})
材料编号的模式是(\d{3}).(\d{3}).(\d{3}).(\d{3})
。
在“欢迎”节点中,机器人询问用户的名称,如果机器人识别出名称,则在下面的节点中,它还会搜索其他类型的输入。我希望机器人能够从输入中捕获序列号和材料号。因此我激活了插槽模式,然后添加了2个带有变量$ serialnumber和$ materialnumber的插槽。对于它们的值,我使用了“文字”函数,因此机器人可以将用户的输入存储到上下文变量中。
当有一个输入,如“你好,我是Henrik。我有一支笔。它的序列号是1234567-123-12,其物质编号是123.123.123.123”,机器人的响应如下:
“好的,序列号是1234567-123-12”
“好的,材料编号是1234567”
它根据提供的模式正确捕获序列号。然而,它却使材料编号错误。它应该捕获的材料编号是123.123.123.123,但它捕获1234567,即使在提供的@material_number模式中没有这样的模式。
不知何故,我需要让机器人捕获正确的东西。
如果有人可以帮助我,我会很高兴。提前致谢。
这是因为正则表达式中的.
匹配任何字符。如果要指定文字.
,则需要在表达式中对其进行转义。即。
(\d{3})\.(\d{3})\.(\d{3})\.(\d{3})