0

我创建了一个 Webhook ( https://moviebotdf.herokuapp.com/get-movie-details ),它通过邮递员和对话流进行了测试并且工作正常。

我想通过编程调用将它与 IBM Watson Assistant 集成,但这并没有返回任何内容(即输出为“”)。

我检查了 IBM 支持(https://cloud.ibm.com/docs/services/assistant?topic=assistant-dialog-actions&locale=en)以及其他解决方案作为调用可以调用 webhook 的函数,但我什至有那里的成功较少。正如我从支持人员那里了解到的那样,应该可以从助手直接调用 Webhook(对于像我这样的新手来说更容易),因此是我寻求的解决方案。助手中的代码如下:

{
  "context": {
    "skip_user_input": true,
    "prodname": "$prodname"
  },
  "output": {
     "text": {
        "values": [
             "$dataToSend"
        ],
     "selection_policy": "sequential"
    }
  },
  "actions": [
     {
       "name": "https://moviebotdf.herokuapp.com/get-movie-details",
       "type": "client",
       "parameters": {
           "prodname": "$prodname"
       },
      "result_variable": "context.dataToSend"
     }
  ]
 }

因此,Watson Assistant 在前一个节点中捕获了“prodname”(我检查了它,它工作正常)并发送到 Webhook。Webhook 中使用的变量也称为“prodname”。Webhook 的预期输出存储在变量“dataToSend”中,但如上所述,Watson 中的答案只有“”,因为“$dataToSend”是“”。

我也尝试使用 "result_variable": "dataToSend" 和 "result_variable": "$dataToSend" 没有成功,所以我猜是没有调用 webhook...

我是该主题的新手,因此请随时纠正我帖子中的任何问题。

无论如何提前谢谢!

阿德里亚

4

1 回答 1

0

IBM Watson Assistant 列出了从对话节点中进行编程调用的三个不同选项:

  1. 客户端:您的应用负责调用操作
  2. servercloud_function:从 Watson Assistant 调用 IBM Cloud Functions 操作
  3. web_action:从 Watson Assistant 调用 IBM Cloud Functions 操作的 Web 操作

如果您在 IBM Cloud Functions 上托管 Webhook,那么 Watson Assistant 可以直接调用它。指定您当前的主机和客户端后,由您的应用负责。在这种情况下,您的应用程序需要检查上下文是否包含有关客户端操作的信息、提取相关元数据、调用 Webhook 并将数据发送回 Watson Assistant。

我已经为我的Watson 对话工具编写了这样一个客户端操作的示例。有关说明,请参阅该存储库。

于 2019-05-07T11:37:01.430 回答