Watson Assistant CURL API:如何发送跟进消息?

时间:2018-06-22 08:01:21

标签: php curl ibm-cloud watson-conversation watson-assistant

我正在尝试IBM Watson Assistant。最终目标是通过Watson Assistant's cURL API Endpoints (因为还没有完整的PHP SDK)将其与我的自定义PHP后端集成。

让我告诉我到目前为止我做了什么:

  1. 从培训数据集中导入了一个示例工作区。
  2. 然后我尝试了一下,效果很好。

enter image description here

  1. 然后我通过cURL API尝试了同样的事情,得到了如下响应:(美化了json输出格式)

{
  "intents": [
    {
      "intent": "locate_amenity",
      "confidence": 0.999901008605957
    }
  ],
  "entities": [
    {
      "entity": "amenity",
      "location": [
        7,
        10
      ],
      "value": "gas",
      "confidence": 1
    }
  ],
  "input": {
    "text": "i need some gas"
  },
  "output": {
    "text": [
      "Hi. It looks like a nice drive today. What would you like me to do?  "
    ],
    "nodes_visited": [
      "Start And Initialize Context"
    ],
    "log_messages": []
  },
  "context": {
    "conversation_id": "153c18ee-1015-4b6a-ae04-789e29bf4a05",
    "system": {
      "dialog_stack": [
        {
          "dialog_node": "root"
        }
      ],
      "dialog_turn_counter": 1,
      "dialog_request_counter": 1,
      "_node_output_map": {
        "Start And Initialize Context": [
          0,
          0
        ]
      },
      "branch_exited": true,
      "branch_exited_reason": "completed"
    },
    "AConoff": "off",
    "lightonoff": "off",
    "musiconoff": "off",
    "appl_action": "",
    "heateronoff": "off",
    "volumeonoff": "off",
    "wipersonoff": "off",
    "default_counter": 0,
    "previous_cuisine": "",
    "previous_restaurant_date": "",
    "previous_restaurant_time": ""
  }
}

现在请让我在这里了解两件事。

问题(1)

这时,我期望API返回一条消息:

  

“附近有加油站。您想开车去哪一个?”

但是为什么不呢?如果可以的话,我该如何实现?

问题(2)

我如何正确"Go to number 5."回复,以使API理解我是指上一次呼叫? (aka)如何继续对话流程? (注意:我尝试使用先前的“上下文”,“实体”,“意图”发回,但仍被认为是新消息。)

请给我分享一个cURL调用示例,以跟进上一条消息。


由于还没有完整的PHP SDK,仅通过cURL API调用使我很难理解。 API文档也没有对此细节进行解释。请帮忙。

谢谢大家。

1 个答案:

答案 0 :(得分:3)

Watson Assistant的消息API是无状态的。处理请求所需的所有内容均作为参数提交。这包括消息本身,还包括上下文。上下文保存有关对话在对话框树中的位置的状态。它还可以保存从WA传输到应用程序的信息,例如,以处理客户端操作。或从应用到WA,例如使用数据库中的记录。

应您的要求:

  • 当开始新的对话时,您的对话框可能会发出该响应。我看到它与“试用”中的相同。
  • 您首先需要发送“ Hi”或空消息,等待WA的响应,然后将您的“我需要加油”以及从WA接收到的上下文数据一起发送。当您查看详细信息时,您会看到对话框堆栈,转计数器等等。对话ID是该当前聊天的标识符。
  • 有了上述内容,WA的下一个响应应该与“尝试一下”中的完全一样,因为您进入了对话框树。