0

我在 IBM 中创建了一个非常简单的云函数,我尝试通过 Watson 助手调用它。当我调用它时,出现错误“直接 CloudFunctions 调用不成功。Http 响应代码为 [401]”。

下面是我正在使用的代码。“prodname”取自用户并发送到函数以获取答案。当我调用它时,该功能工作正常。我从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 所建议的,我提供了更多信息。我调用的函数如下,一个非常简单的回显函数:

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]”。助手也回答“with {“cloud_functions_call_error”:“请求的资源不存在。”}

阿德里亚

4

2 回答 2

1

嗨@data_henrik,感谢您的帮助。我确实看到了@并在编辑的代码中更正了它,给出了同样的问题。但我想通了:助理被部署在华盛顿......我把它搬到了伦敦,现在它可以工作了。再次感谢您的帮助,并对我的新手错误感到抱歉...

于 2019-05-08T12:06:10.490 回答
0

我的猜测是您的操作名称中的 org 部分是错误的。尝试将任何“@”替换为“%40”。否则,Watson 会将其解释为其他内容。接下来,在更新对话节点后,等待几秒钟以使更改生效。

我刚刚尝试了我部署的 Web 操作,可能会导致 401 和 404。

"name": "arllambi%40gmail.com_Only/Watson/MovieBot.json"
于 2019-05-08T11:36:03.717 回答