Ibm watson 如何从用户输入中提取传递的原始日期值
背景: Watson对话机器人有一个节点,由用户的三个输入实体触发,这很好,但我希望机器人的回复是正确的 “检查你明天是否有课。给我一点时间” 然后,在后台有一个查询,用于生成稍后回复给用户的答案 strong word明天是一个@sys date实体,但我希望它回复用户所说的内容,而不是日期,因为机器人可以检查两周、两个月等所有有效的日期格式,如果我可以使用用户的原始文本,回复看起来会更好Ibm watson 如何从用户输入中提取传递的原始日期值,ibm-watson,watson-conversation,Ibm Watson,Watson Conversation,背景: Watson对话机器人有一个节点,由用户的三个输入实体触发,这很好,但我希望机器人的回复是正确的 “检查你明天是否有课。给我一点时间” 然后,在后台有一个查询,用于生成稍后回复给用户的答案 strong word明天是一个@sys date实体,但我希望它回复用户所说的内容,而不是日期,因为机器人可以检查两周、两个月等所有有效的日期格式,如果我可以使用用户的原始文本,回复看起来会更好 当我让它工作时,这种来源检索也将用于其他实体。在这种情况下,您可以使用上下文变量,如果您想要获取特定数据
当我让它工作时,这种来源检索也将用于其他实体。在这种情况下,您可以使用
上下文变量,如果您想要获取特定数据,您可以使用正则表达式来提取用户输入:
所有用户输入示例
"date": "<? input.text?>"
文档示例
:
我的问题是,文本输入中有3个实体,而过滤它以仅提取分配给@sys date实体的输入部分是不可能的。如果我更改触发器,整个节点将毫无用处,因为用户可以通过发送简单的输入遍历对话框树并获得相同的结果。此节点的目的是,用户只需一次输入即可触发正确的输出,而无需走3步进入另一个对话框。您可以编辑和添加对话的一部分吗?因为这样我才能更好地理解。我认为在这种情况下,我们可以用实体来解决。。但我需要看清楚输入:我这周有讲座吗?给出:好的,检查你是否有讲座2017-01-22。请给我一分钟。想要的结果:好的,检查你这周是否有讲座。请给我一分钟。Watson必须有后端逻辑分析输入,以便存储sys.date的原始值,但问题是检索此原始值并将其用作我回复用户时的输出
"date": "<?@sys-date.literal?>"
{
"context": {
"date": "<?@sys-date.literal?>"
},
"output": {
"text": {
"values": [
"Checking if you have a lecture $date. Give me a moment."
],
"selection_policy": "sequential"
}
}
}