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

Posted

技术标签:

【中文标题】如何向 watson 对话响应添加操作?【英文标题】:How do I add an action to watson conversation response? 【发布时间】:2017-08-01 04:37:55 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

我为此使用了conversation simple。

在您的 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'
查看更多关于Context variables的信息。 查看更多关于Building a dialog的信息。

【讨论】:

如何通过云对话节点连接到我的nodejs函数。我正在通过 nodejs 应用程序调用我的本地 Web 服务,我希望我的对话节点中的 Web 服务的响应,以便它应该传递给我的 android 应用程序响应。 嗨@ManishPathak,请尝试用您的代码提出一个新问题并解释细节问题。【参考方案2】:

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

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

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

【讨论】:

以上是关于如何向 watson 对话响应添加操作?的主要内容,如果未能解决你的问题,请参考以下文章

IBM Watson Assistant:如何通过对话进行 API 调用

IBM Watson Assistant 响应来自机器人的延迟

如何实现具有多个工作空间的 Watson 对话

Watson Assistant - Facebook Messenger 中的选项响应类型

实时电话中的 Watson 对话

无法向 IBM Watson Studio 添加服务