我已经创建了一个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à
答案 0 :(得分:0)
IBM Watson Assistant lists three different options of making a programmatic call来自对话框节点:
如果将Webhook托管在IBM Cloud Functions上,则Watson Assistant可以直接调用它。在指定当前托管服务器和客户端后,您的应用将由您负责。在这种情况下,您的应用程序需要检查上下文是否包含有关客户端操作的信息,提取相关的元数据,调用Webhook并将数据发送回Watson Assistant。
我为Watson conversation tool编写了这样的客户端操作示例。有关说明,请参见该回购。