IBM Watson Assistant:如何动态设置 'jump to' 目标节点(即使用上下文变量)

IBM Watson Assistant: How to set a 'jump to' target node dynamically (i.e. using context variables)

我想从对话节点跳转到 ID 存储在上下文变量中的节点。

我正在尝试解决与题外话有关的问题,此处已对其进行了描述:

Conditionally return from digression in watson assistant

特别是这张图表形象化了问题:

在我看来,A.H。提出了一个非常合理和相关的问题,但没有可行的答案。

据我所见,题外话设置无法解决问题。根级节点(通过匹配意图 # Want_to_speak_to_someone 触发)设置为 'return after digression' 或者不是。

如果此离题节点的离题设置设置为 'return',它将始终 return - 无论在此离题的对话流中进一步发生什么。即使用户确认他想与某人交谈(即他不想 return),对话也会 return 到离题开始的节点。

当我从 yes-node(用户确认他想与某个人交谈)跳到任何其他节点时,甚至会发生这种情况。一旦分支(或用户跳转到的分支)结束对话 returns 到离题开始的节点。

如果此离题节点的离题设置设置为 'does not return',则 return 是不可能的 - 即使用户决定不与某人交谈并选择 return到他所在的地方。

什么A.H。我想要的是用户可以从对话流中脱离出来,并且仍然可以决定他是否想要return。我认为这是对话的一个非常自然和重要的特征。人们喜欢改变他们的决定,或者他们甚至可能无意中偏离给定的对话流程。

Akaykay 提议有两个不同的节点 - 允许 returning 的 'yes-node' 和不允许 returning 的 'no-node'。但这不起作用,因为在此之前我必须有另一个节点要求用户确认 - 并且这个 'confirmation-node' 必须设置为 'return' 或 'does not return' (产生问题如上所述)。

出于这个原因,我试图找出一个解决方法:我将对话从中退出的对话节点 ID 存储在上下文变量中。

它是一个上下文变量


"context": {
        "last_node": "<? output.nodes_visited [0]?>",
        ...
      },

在允许离题的对话流的每个节点中更新。

在示例中,如果用户想要 return,我可以跳回 $last_node,如果用户想与某个人交谈,我可以跳转到另一个(固定的)节点- 'digression node' 的离题设置不会干扰,可以设置为 'does not return'。

然后我尝试在我技能的 json 文件中编辑相应的节点(从 return 到 $last_node):

"next_step": {
        "behavior": "jump_to",
        "selector": "user_input",
        "dialog_node": "$last_node"
      },

但是当我再次重新导入 skill-json-file 时,我收到此错误消息:

我可以接受任何一种解决方案 - 使用离题设置的解决方案或允许动态设置 'jump to' 目标节点的解决方案。我非常感谢任何帮助 - 谢谢!

如果您想阻止 Watson Assistent return 离题,只需在您不希望 Watson Assistant return 离题的节点中调用 <? clearDialogStack() ?> 函数,这就是它。

在您的图表中,您可以在节点 "Ok, click here." 的输出文本中写入 "Ok, click here. <?clearDialogStack()?>",这应该可以解决问题。

在本节的文档中:https://cloud.ibm.com/docs/services/assistant?topic=assistant-dialog-runtime#dialog-runtime-digressions

另请注意,目前无法使用 Watson Assistant 创建动态 goto。您唯一可以做的就是创建一个对话节点,其中包含所有需要的 goto 由其下方的某些内容决定,然后您将转到该节点。很难手动创建,但可以自动生成。要了解 WA 的更多魔力,请查看此项目:

https://github.com/IBM/watson-assistant-workbench

完全不用UI.

也可以用WA开发聊天机器人