如何向 watson 对话响应添加操作?

IT技术 javascript node.js ibm-cloud ibm-watson watson-assistant
2021-03-10 09:35:03

我已经毫无问题地创建了意图、实体和对话框。但现在我正试图做到这一点,当用户发送“再见”时,应用程序将关闭。根据文档,我必须命名一个符合意图的动作。我怎么做?是通过代码还是通过对话工作区平台?

2个回答

你可以使用context variablesaction variables如何使用上下文变量?在您的高级响应中添加“上下文”和值,请查看我的示例。

为此,我使用了简单对话

在您的 Watson Developer Cloud - IBM Bluemix - Watson Conversation 中,在高级响应中添加这个 JSON 示例,假设您的应用程序将在此对话节点中执行某些操作:

{
  "context": {
    "verified": true;
  },
  "output": {
    "text": {
      "values": [
        "Please wait and I'll verified your request."
      ],
      "selection_policy": "sequential"
    }
  }
}

示例(app.js):

function updateMessage(input, data, req, res) {
  if (data.context.verified === true){
    searchRequest(data, req, res);
    } else if (data.output && data.output.text) {
    return res.json(data);
    }
    return data;
}

您可以使用数据在对话流中发送某些内容。

function searchRequest(data, req, res){
    // something to do and return value
    var sendRequest = "Thanks for wait, the request is" + valueRequest;
    data.output.text[0] = sendRequest;
    return data;
}

编辑:

您可以添加一个 JSON 对象,例如“action”,您的代码将识别此变量,与 @Mikko 所说的示例相同。您可以通过以下方式检查:

data.output.action === 'close'
嗨@ManishPathak,请尝试用您的代码提出一个新问题并解释细节出了什么问题。
2021-04-24 09:35:03
如何通过云对话节点连接到我的 nodejs 功能。我正在通过 nodejs 应用程序调用我的本地 web 服务,我想要来自我的对话节点中的 web 服务的响应,以便它应该被传递到我的 android 应用程序响应。
2021-05-17 09:35:03

您需要小心上下文变量,因为您的下一个对话节点可能会也可能不会更新它们。另一种选择是在输出中添加自定义变量。这是 GitHub 中提供的对话发现示例中使用的解决方案。

  "output": {
    "text": {
      "values": [
        "Goodbye..."
      ],
      "selection_policy": "sequential"
    },
    "action": "close"
  }

请注意,这会在关闭 JSON 编辑器时引发警告。