Watson Assistant编程到Heroku Webhook无效

时间:2019-05-07 11:21:46

标签: ibm-cloud ibm-watson watson-assistant

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

我想通过编程调用将其与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"
     }
  ]
 }

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

我也尝试使用“ result_variable”:“ dataToSend”和“ result_variable”:“ $ dataToSend”没有成功,所以我猜想webhook没有被调用...

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

在任何情况下都要感谢!

Adrià

1 个答案:

答案 0 :(得分:0)

IBM Watson Assistant lists three different options of making a programmatic call来自对话框节点:

  1. 客户端:您的应用负责执行该操作
  2. 服务器 cloud_function :从Watson Assistant调用IBM Cloud Functions操作
  3. web_action :IBM Cloud Functions操作的Web操作是从Watson Assistant调用的

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

我为Watson conversation tool编写了这样的客户端操作示例。有关说明,请参见该回购。