我在IBM中创建了一个非常简单的云函数,我尝试通过Watson Assistant进行调用。当我调用它时,出现错误“直接CloudFunctions调用失败。Http响应代码为[401]”。
下面是我正在使用的代码。从用户那里获取“产品名”,并将其发送到函数以获取答案。当我调用它时,该函数运行良好。我从https://cloud.ibm.com/openwhisk/learn/api-key获得了ID和密码。
{
"context": {
"credentials": {
"user": "userID",
"password": "password"
}
},
"output": {
"text": {
"values": [
"$answer"
]
}
},
"actions": [
{
"name": "arllambi%2540gmail.com_Only/Watson/MovieBot",
"type": "cloud_function",
"parameters": {
"prodname": "$prodname"
},
"result_variable": "answer",
"credentials": "$credentials"
}
]
}
凭据是否可能存在问题?
在此先感谢您的帮助。
******重新编辑******
如data_henrik所建议,我提供了更多信息。我正在调用的函数如下,一个非常简单的echo函数:
function main(msg){
return {answer: "You said " +msg.prodname};
}
我将cloud_function更改为web_action,通过邮递员,web_action可以正常运行:
{
"output": {
"text": {
"values": [
"$answer"
]
}
},
"actions": [
{
"name": "arllambi@gmail.com_Only/Watson/MovieBot.json",
"type": "web_action",
"parameters": {
"prodname": "<?input.text?>"
},
"result_variable": "context.answer"
}
]
}
我现在收到的消息是“直接CloudFunctions调用未成功。Http响应代码为[404]”。助手还回答“带有{“ cloud_functions_call_error”:“所请求的资源不存在。”}
Adrià
答案 0 :(得分:0)
我的猜测是您的动作名称中的org部分是错误的。尝试用“%40”替换任何“ @”。否则,沃森会将其解释为其他内容。接下来,在更新对话框节点之后,请等待几秒钟,以使更改生效。
我刚刚尝试了一些部署的Web操作,可能会导致401和404。
"name": "arllambi%40gmail.com_Only/Watson/MovieBot.json"
答案 1 :(得分:0)
您好@data_henrik,感谢您的帮助。我确实看到了@,并在编辑后的代码中对其进行了更正,但出现了同样的问题。但是我想通了:助手被部署在华盛顿...我将其移至伦敦,现在可以使用了。再次感谢您的帮助,也很抱歉我的新手错误...