OpenWhisk 从一个动作中调用 watson 文本到语音动作
OpenWhisk invoke watson text to speech action from an action
我正在尝试从 OpenWhisk 操作调用包含在 Watson 系统包(文本到语音)中的操作。
我已经绑定了服务并设置了凭据,所以我可以从 CLI 看到
wsk list
entities in namespace: xxxxxx
packages
/xxxxxx/myWatson private binding
这是我的 OpenWhisk 操作:
function main(param) {
//code here for my action. At the end, I invoke the text to speech
if (...) {
textToSpeech(param.text);
}
else {
return whisk.error(error);
}
return whisk.async();
}
function textToSpeech(text){
whisk.invoke({
name:'myWatson/textToSpeech',
parameters:{
payload: text,
voice: 'en-US_MichaelVoice',
accept: 'audio/wav',
encoding: 'base64'
},
blocking: true,
next: function(error, activation){
if(error){
return whisk.error(error);
}
else{
return whisk.done({msg:'success'});
}
}
});
}
然后出现以下错误
"response": {
"result": {
"error": "The requested resource does not exist. (undefined)"
},
"status": "application error",
"success": false
}
你能帮助理解我做错了什么吗?
操作的名称应该完全限定以包含命名空间。从您的 CLI 输出来看,您的包似乎是 /xxxxxx/myWatson
,因此您在 whisk.invoke
中的操作引用应该是 /xxxxxx/myWatson/textToSpeech
.
我正在尝试从 OpenWhisk 操作调用包含在 Watson 系统包(文本到语音)中的操作。
我已经绑定了服务并设置了凭据,所以我可以从 CLI 看到
wsk list
entities in namespace: xxxxxx
packages
/xxxxxx/myWatson private binding
这是我的 OpenWhisk 操作:
function main(param) {
//code here for my action. At the end, I invoke the text to speech
if (...) {
textToSpeech(param.text);
}
else {
return whisk.error(error);
}
return whisk.async();
}
function textToSpeech(text){
whisk.invoke({
name:'myWatson/textToSpeech',
parameters:{
payload: text,
voice: 'en-US_MichaelVoice',
accept: 'audio/wav',
encoding: 'base64'
},
blocking: true,
next: function(error, activation){
if(error){
return whisk.error(error);
}
else{
return whisk.done({msg:'success'});
}
}
});
}
然后出现以下错误
"response": {
"result": {
"error": "The requested resource does not exist. (undefined)"
},
"status": "application error",
"success": false
}
你能帮助理解我做错了什么吗?
操作的名称应该完全限定以包含命名空间。从您的 CLI 输出来看,您的包似乎是 /xxxxxx/myWatson
,因此您在 whisk.invoke
中的操作引用应该是 /xxxxxx/myWatson/textToSpeech
.