Watson Conversation对客户进行程序化调用

时间:2018-02-08 16:30:36

标签: ibm-cloud watson-conversation

我有一个使用Watson Conversation服务的节点应用程序。我能够使用它用于回复的JSON通过对话节点成功触发对另一个API的调用。然而,在阅读之后,我似乎做错了。我通过向上下文添加动作属性来触发我的客户端服务器进行REST调用。

{
  "context": {
  "action": "lookup"
  },
  "output": {}
}

当我得到我的结果时,我将它添加到上下文对象并将其传递回对话服务。这似乎工作正常,但它会导致一些问题。 1)在触发我想要的东西后必须手动删除这些道具 2)在对话中我必须等待用户输入,即使我实际上并没有在前端请求用户输入,而是我的客户端应用程序正在发送没有输入文本的消息以及上下文对象上的REST调用的结果。返回到触发操作的节点处的对话的此消息是触发子节点的消息。似乎有一种标准化的方式IBM希望您进行这些编程调用,无论它是IBM云功能还是您自己的客户端应用程序。 https://console.bluemix.net/docs/services/conversation/dialog-actions.html#dialog-actions docs方法:

{
  "context": {
    "variable_name" : "variable_value"
  },
  "actions": [
    {
      "name":"<actionName>",
      "type":"client | server",
      "parameters": {
        "<parameter_name>":"<parameter_value>",
        "<parameter_name>":"<parameter_value>"
      },
      "result_variable": "<result_variable_name>",
      "credentials": "<reference_to_credentials>"
    }
  ],
  "output": {
    "text": "response text"
  }
}

这是一项新功能吗?我正在为我自己的应用程序引用示例项目,但我没有看到这种模式。通过使用这种格式,它会告诉父节点在尝试处理子节点之前等待响应回来吗?它是否会阻止我从上下文对象中删除属性,以便在进一步的对话中我不会反复使用相同的参数调用相同的操作?

0 个答案:

没有答案