Board logo

标题: Watson Conversation 对话原理以及高级应用-5 [打印本页]

作者: look_w    时间: 2018-3-17 11:53     标题: Watson Conversation 对话原理以及高级应用-5

新增插槽1. 确定要收集的信息单位。 例如,要为某人订购比萨饼,您可能需要收集以下信息:
2. 从对话框节点编辑视图中,单击自定义,然后选择插槽复选框。
图 10. 新增插槽 1
3. 为每个单位的所需信息添加一个插槽。
对于每一个插槽,需要指定如下信息
图 11. 新增插槽 1
Check for:确定要从用户对插槽提示符的响应中提取的信息类型。 在大多数情况下,您检查实体值,但您也可以检查一个意图。 您可以在此处使用 AND                和 OR 运算来定义更复杂的条件。
注意:避免检查上下文变量值。 检查值首先用作条件,然后成为在另存为字段中命名的上下文变量的值。                如果在条件中使用上下文变量,则在上下文中使用时可能会导致意外的行为。
Save as :提供用于将用户响应中感兴趣的值存储到插槽提示的上下文变量的名称。 不要指定对话框中较早使用的上下文变量,因此可能有一个值。                只有当插槽的上下文变量为空时才显示插槽的提示。
Prompt:写一个声明,从用户那里引出你需要的信息。 显示此提示后,会话暂停,服务等待用户响应。
如果您编辑插槽,您还可以定义响应以在用户响应插槽提示后显示。
此表显示了帮助用户放置比萨订单的节点的示例插槽值。

Information  Check for  Save as  Prompt  Follow-up if found  Follow-up if not found  Size  @size  $size  "What size pizza would you like?"  "$size it is."  "What size did you want? We have                            small, medium, and large."  DeliverBy  @sys-time  $time  "When do you need the pizza by?"  "For delivery by $time."  "What time did you want it                            delivered? We need at least a half hour to prepare it."                        Optional slots:如果要添加捕获信息但可选的插槽,请不要为其指定提示。
例如,您可以添加一个捕获饮食限制信息的插槽,以防用户指定任何信息。                但是,您不想向所有用户询问膳食信息,因为在大多数情况下,这些信息是无关紧要的。

Information  Check for  Save as  Wheat restriction  @dietary  $dietary 当您没有提示时添加插槽时,服务将该插槽视为可选。
注意:如果您选择一个插槽,则只能在节点级别的响应文本中引用其上下文变量,如果您可以将其设置为字母,即使没有为该插槽提供值也是有意义的。                例如,你可以这样写一个简短的陈述,"我订购一个$ size $的膳食比萨饼在$时间交货。"                如果没有提供膳食限制信息,例如无麸质或无乳制品,"所得的文字仍然是有道理的,"我在下午 3:00 订购大型比萨饼送货。"
4. 使用户可追踪:您可以选择定义提供响应的节点级处理程序,用户在交互期间可能会询问与问题目的相关的问题。
例如,用户可能会问一下关于番茄酱食谱或您的成分的地方。 要处理这种分歧,请单击管理处理程序链接,并为每个预期问题添加条件和响应。
图 12. 示例
在回应后,显示与当前空插槽相关联的提示。
如果用户在对话节点流动期间随时提供与处理程序条件匹配的输入,直到显示节点级响应,则触发此条件。
5. 添加节点级响应:在所有需要的插槽被填满之后,才执行这个节点级的响应。 您可以添加一个总结您收集的信息的响应。 例如,"A$sizepizza                is scheduled for delivery at$time. Enjoy!"
6. 添加重置插槽上下文变量的逻辑。
当您从每个插槽的用户处收集答案时,它们将保存在上下文变量中。 您可以使用上下文变量将信息传递到另一个节点或应用程序或外部服务以供使用。                但是,传递信息后,您必须将上下文变量设置为 null 以重置节点,以便可以重新开始收集信息。                您不能将当前节点中的上下文变量置空,因为在填充所需的插槽之前,服务将不会退出节点。 相反,请考虑使用以下方法之一:
使用插槽的提示例如,当客户想要订购比萨饼时触发节点时,您可以通过初步提示进行回复:"我可以采取您的比萨的顺序,告诉我你想要什么尺寸的比萨饼和你想要的时间。"
如果用户在初始请求中提供了这一信息,则不会显示该提示。例如,初始输入可能是"我想订一个大的比萨饼"。当服务分析输入时,它将"大"视为比萨尺寸,并使用提供的值填充"尺寸"插槽。因为其中一个插槽已经被填充,所以它跳过显示初始提示,以避免再次询问披萨尺寸信息。相反,它将显示缺少信息的任何剩余插槽的提示。
从您启用插槽功能的"自定义"窗格中,选择"提示全部"复选框以启用初始提示。此设置添加如果没有插槽预先填充,请将此第一个字段提交到节点,您可以在其中指定提示用户所有内容的文本。
例如,您可能想询问用户是否需要在比萨饼上浇注头盖。 为此,定义一个实体(@toppings),以及它接受的值(辣香肠,奶酪,蘑菇等)。                添加一个插槽,询问用户关于浇头。 使用实体类型的 values 属性捕获多个值(如果提供)。

Information  Check for  Save as  Prompt  Follow-up if found  Follow-up if not found  Toppings  @toppings.values  $toppings  Any toppings on that?  "Great addition."  "What toppings would you like? We                            offer ..." 要稍后引用用户指定的浇头,请使用<? $ entity-name.join(',')?>语法来列出 toppings                数组中的每个项目,并用逗号分隔值。 例如,"我订购了一个$ size 的比萨饼,这个比例是<?$                toppings.join(',')?
例如,时间值以 hh:mm:ss 格式保存。 您可以使用插槽的 JSON 编辑器重新格式化时间值,因为它保存它,所以它使用的时间:分钟 AM / PM                格式:
图 13. 格式化时间值

Information  Check for  Save as  Prompt  Follow-up if found  Follow-up if not found  Confirmation  #yes  $confirmation  "I'm going to order you                            a$sizepizza for delivery at$time. Should I go ahead?"  "Your pizza is on its way!"  see below 因为用户可能会在对话框中的其他时间包含肯定的语句(哦,是的,我们希望在下午 5 点之前发布比萨饼),使用 slot_in_focus                属性可以在插槽条件中清楚您正在为此提示输入"是"响应 插槽。
图 14. 使用属性




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0