在我的示例中,我要求提供个人文档编号,该编号有 11 位数字,并且我需要,如果用户正确输入 11 个数字,watson 就会继续对话,如果没有,watson 将通知由我。这个怎么做?
我的情况:
沃森 说:
好的,我会检查一下。您的协议号是多少?
我说:
例如:35158811233
沃森 说:
您想完成服务吗?
沃森不认识这个号码,我的谈话就这样结束了。请问有人知道如何解决这个问题吗?
沃森明白:
"intents": [
{
"intent": "goodbye",
"confidence": 0.24506947419646477
}
],
"entities": [],
"input": {
"text": "35158811233"
},
"output": {
"log_messages": [],
"text": [
"Would you like to finish the service? \n \n <button id=\"button-yes\" onclick=\"yesBye();\">Yes</button> <button id=\"button-no\" onclick=\"noBye();\">No</button>"
],
要将号码与 Watson 对话服务匹配,您可以使用实体sys-number
可以在实体选项卡中打开 - 但这将匹配所有数字,而您的数字是特定的。
对于此用例,您可以添加对文本用户输入的额外检查。 Watson 对话支持正则表达式检查。如果您以这种方式创建对话节点的条件:input.text.matches('^[^\d]*[\d]{11}[^\d]*$')
那么这个节点只有在以下情况下才会匹配input.text
这是用户提交的确切文本字符串的访问器,将与定义为的正则表达式 (regexp) 匹配^[^\d]*[\d]{11}[^\d]*$
.
仅当输入中有 11 位数字且其他地方没有其他数字时,此特定表达式才会匹配,但允许在数字前后添加其他文本。
现在要将这个数字捕获到变量中,您可以将以下内容添加到context
与该编号匹配的对话节点的:
"context": {
"number": "<?input.text.extract('^[^\\d]*[\\d]{11}[^\\d]*$',0)?>"
}
请注意,有不同的转义\\d
由于 JSON 的性质,在上下文中context
field.
在对话节点的输出文本中,您可以编写类似的内容"Ok, number $number was matched."
在聊天窗口中显示号码。
另一件事 - 提供有关正则表达式信息的好地方,您还可以尝试各种类型的正则表达式以及它们匹配的内容正则表达式 101 网页.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)