如何让 Watson 捕获数字序列 (input.text.extract)
How to make Watson capture a sequence of numbers (input.text.extract)
在我的示例中,我要求提供个人证件编号,该编号有 11 位数字,我需要这样,以防用户正确键入 11 位数字,watson 会继续对话,否则,watson 会通知由我定义的消息。如何做到这一点?
我的情况:
沃森说:
好的,我会检查。你的协议号是多少?
我说:
例如:35158811233
华生说:
您要结束服务吗?
Watson 没有重新识别号码,我的谈话就结束了。请问有人知道怎么解决吗?
Watson 理解:
"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
是用户提交的确切文本字符串的访问器与正则表达式匹配时,该节点才会匹配(正则表达式)定义为 ^[^\d]*[\d]{11}[^\d]*$
。
仅当输入中有 11 位数字且其他地方没有其他数字时,此特定表达式才会匹配,但允许在数字前后添加文本。
现在要将此数字捕获到变量中,您可以将以下内容添加到与此数字匹配的对话节点的 context
中:
"context": {
"number": "<?input.text.extract('^[^\d]*[\d]{11}[^\d]*$',0)?>"
}
请注意,由于 context
字段的 JSON 性质,\d
在上下文中有不同的转义。
在对话节点的输出文本中,您可以编写类似 "Ok, number $number was matched."
的内容来显示聊天中的号码 window。
还有一件事 - 提供有关正则表达式的信息的好地方,您还可以在其中尝试各种类型的正则表达式,它们匹配的是 Regex 101 web page。
在我的示例中,我要求提供个人证件编号,该编号有 11 位数字,我需要这样,以防用户正确键入 11 位数字,watson 会继续对话,否则,watson 会通知由我定义的消息。如何做到这一点?
我的情况: 沃森说: 好的,我会检查。你的协议号是多少?
我说: 例如:35158811233
华生说: 您要结束服务吗?
Watson 没有重新识别号码,我的谈话就结束了。请问有人知道怎么解决吗?
Watson 理解:
"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
是用户提交的确切文本字符串的访问器与正则表达式匹配时,该节点才会匹配(正则表达式)定义为 ^[^\d]*[\d]{11}[^\d]*$
。
仅当输入中有 11 位数字且其他地方没有其他数字时,此特定表达式才会匹配,但允许在数字前后添加文本。
现在要将此数字捕获到变量中,您可以将以下内容添加到与此数字匹配的对话节点的 context
中:
"context": {
"number": "<?input.text.extract('^[^\d]*[\d]{11}[^\d]*$',0)?>"
}
请注意,由于 context
字段的 JSON 性质,\d
在上下文中有不同的转义。
在对话节点的输出文本中,您可以编写类似 "Ok, number $number was matched."
的内容来显示聊天中的号码 window。
还有一件事 - 提供有关正则表达式的信息的好地方,您还可以在其中尝试各种类型的正则表达式,它们匹配的是 Regex 101 web page。