从后端为Watson Conversation设置上下文变量。

时间:2018-04-10 13:24:48

标签: node.js ibm-watson chatbot watson watson-conversation

从Node应用程序向Watson Conversation发送上下文变量时,我遇到了一个问题。

我正在尝试实施以下内容,

  1. 用户输入他们的电话号码。
  2. 获取与该电话号码对应的数据并显示在下一个节点中。
  3. 例如:

      

    当用户输入他的电话号码时,下一个节点应该问候   用户名字;这是从数据库中获得的。

         

    节点1:输入您的电话号码?
      节点2:< 用户输入电话号码>
      从数据库中提取与电话号码对应的数据,并将其作为上下文变量传递给Watson
      节点3:嘿,$user_name。你好吗?   节点4:< 等待用户输入>

    我面临的问题是,

    节点应用程序仅在需要用户输入时才返回上下文变量,因此,在此之前,Watson Conversation不会获取新的上下文变量集。所以这里它只用节点3 发送新的上下文变量集,但我想要的是,我希望Watson Conversation在输入我的电话号码后拥有一组新的上下文变量。

    即用户在节点2 中输入phone_number后,Node应用会立即获取与其对应的user_name,并将该值设置为Node app中的上下文变量并将其发送回Watson Conversation。因此,在节点3 打印之前,Watson Conversation具有一组新的上下文变量。 但实际发生的情况是,当用户输入电话号码时,我会在我的Node App上获取与其对应的user_name,但上下文变量为 NOT on Watson Conversation,所以现在当Watson响应时,$user_name的值仍为undefined,因此它返回为空字符串。

    任何人都可以帮我解决这个问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

  

节点应用程序仅在需要用户输入时才返回上下文变量,因此,在此之前,Watson Conversation不会获取新的上下文变量集。

这是预期的行为。沃森助理是无国籍的。在您将上下文对象发回给它之前,它不了解上下文变量或您在对话中的位置。

所以你必须将值发送给它。如果您是,那么您需要发布示例JSON请求/响应以更好地了解正在发生的事情。

另一种方法是云功能。您可以在Watson Assistant中创建云功能,该功能执行查找,在对话中将其传回,您的节点应用程序将获取上下文响应对象中的值。

云功能虽然对时间敏感。因此,如果有任何可能的延迟,那么节点应用程序中的代码就是如此。