Node.js 如何将watson Assistant v2与Aws Lambda中的亚马逊技能套件连接?
你好我想用alexa设备连接我的watson助手, 为此,我需要亚马逊开发技能工具包和AWS lambda。但我无法连接watson,因为我的承诺有问题,而且在amazon开发者控制台中看不到我的代码日志。我的助手负责nodeJs应用程序 以下是我的沃森的标题:Node.js 如何将watson Assistant v2与Aws Lambda中的亚马逊技能套件连接?,node.js,promise,aws-lambda,alexa-skills-kit,watson-assistant,Node.js,Promise,Aws Lambda,Alexa Skills Kit,Watson Assistant,你好我想用alexa设备连接我的watson助手, 为此,我需要亚马逊开发技能工具包和AWS lambda。但我无法连接watson,因为我的承诺有问题,而且在amazon开发者控制台中看不到我的代码日志。我的助手负责nodeJs应用程序 以下是我的沃森的标题: const assistant = new AssistantV2({ version: '2019-02-28', iam_apikey: 'apiSecretKey', url: 'https://gateway-lon
const assistant = new AssistantV2({
version: '2019-02-28',
iam_apikey: 'apiSecretKey',
url: 'https://gateway-lon.watsonplatform.net/assistant/api'
});
const assistant_id = "assistantIDSecret" ;
我尝试了一些代码:
const MyNameIsIntentHandler = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest'
&& handlerInput.requestEnvelope.request.intent.name === 'SearchIntent';
},
async handle(handlerInput) {
assistant.createSession({
assistant_id: assistant_id
})
.then(res => {
session_id = res.session_id;
})
.catch(err => {
console.log(err);
});
assistant.message({
assistant_id: assistant_id,
session_id: session_id,
input: {
'message_type': 'text',
'text': "hello"
}
})
.then(res => {
console.log(JSON.stringify(res, null, 2));
speechText = res.output.generic.response.text;
})
.catch(err => {
speechText = err;
});
}, function(err){
speechText = "Problem with Api call";
});
return handlerInput.responseBuilder
.speak(speechText)
.getResponse();
},
};
我试着替换,然后等待:
try{
let res = await assistant.createSession({
assistant_id: assistant_id
});
session_id = res.session_id;
let message = await assistant.message({
assistant_id: assistant_id,
session_id: session_id,
input: {
'message_type': 'text',
'text': "hello"
}
});
speechText = message.output.generic.response.text;
}catch(err){
speechText = err;
}
speechText的结果应该会给我“你好”,这是来自沃森的回应。但现在Alexa说“对不起,我听不懂命令。请再说一遍。”
你有其他的方法来尝试这个吗?谢谢你 听起来您已经设法呼叫了Watson Assistant,如果您的对话框节点中配置的响应是“祝您好运”——这是您收到的,那么该连接正在工作。但是,如果我没记错的话,Alexa期望的响应是JSON对象,而不是字符串。因此,您需要格式化响应以满足Alexa的需求
快速浏览此网站:
表示下面是一个很好的示例,用于显示所需的响应json数据包
{
"version": "string",
"sessionAttributes": {
"key": "value"
},
"response": {
"outputSpeech": {
"type": "PlainText",
"text": "Plain text string to speak",
"playBehavior": "REPLACE_ENQUEUED"
},
"reprompt": {
"outputSpeech": {
"type": "PlainText",
"text": "Plain text string to speak",
"playBehavior": "REPLACE_ENQUEUED"
}
},
"shouldEndSession": true
}
}
注意。我无法确认,因为我从未将Alexa技能用于生产(仅在开发环境下作为演示构建,并与少数人共享)。但我已经被告知,亚马逊不高兴他们的技能将工作转给沃森。真可惜 听起来您已经设法呼叫了Watson Assistant,如果您的对话框节点中配置的响应是“祝您好运”——这是您收到的,那么该连接正在工作。但是,如果我没记错的话,Alexa期望的响应是JSON对象,而不是字符串。因此,您需要格式化响应以满足Alexa的需求
快速浏览此网站:
表示下面是一个很好的示例,用于显示所需的响应json数据包
{
"version": "string",
"sessionAttributes": {
"key": "value"
},
"response": {
"outputSpeech": {
"type": "PlainText",
"text": "Plain text string to speak",
"playBehavior": "REPLACE_ENQUEUED"
},
"reprompt": {
"outputSpeech": {
"type": "PlainText",
"text": "Plain text string to speak",
"playBehavior": "REPLACE_ENQUEUED"
}
},
"shouldEndSession": true
}
}
注意。我无法确认,因为我从未将Alexa技能用于生产(仅在开发环境下作为演示构建,并与少数人共享)。但我已经被告知,亚马逊不高兴他们的技能将工作转给沃森。真可惜