gpt4 book ai didi

node.js - 无法处理 Alexa intent

转载 作者:太空宇宙 更新时间:2023-11-03 23:54:15 25 4
gpt4 key购买 nike

我的代码无法运行,有人可以帮忙吗?无法说出文本,我可以返回处理程序输入响应吗?测试函数是一个http调用,可能需要tieme。

function test(url, number)
{
return 5;
}

function speak(handlerInput) {
return handlerInput.responseBuilder
.getResponse();
}

const NumberFactIntentHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
&& Alexa.getIntentName(handlerInput.requestEnvelope) === 'NumberFactIntent';
},

handle(handlerInput) {

const theNumber = handlerInput.requestEnvelope.request.intent.slots.number.value;
const repromptOutput = " Would you like another fact?";
const URL = "http://numbersapi.com";

test(URL, theNumber).then(function (data) {
console.log("data is " + data);
handlerInput.responseBuilder
.speak("Test Data")
.reprompt(repromptOutput)

return speak(handlerInput);
}).catch(function (data) {

console.log("error is " + data);
handlerInput.responseBuilder
.speak(`I wasn't able to find a fact for ${theNumber}` )
.reprompt(repromptOutput)
return speak(handlerInput);
});
}
};

最佳答案

首先,您的 test 函数不会返回 promise 。我不知道这是否是故意的,你只是削减了 api 调用代码以使其更简单,但如果你想在其上使用 then ,它应该返回一个 promise 。

如果它在完整示例中返回一个 promise ,那么您缺少的是在 test 之前添加一个 return。此外,您还应该从您的 promise 中返回handlerInput。代码应该如下所示(我将删除一些不相关的代码):

const NumberFactIntentHandler = {
canHandle(handlerInput) {},

handle(handlerInput) {

const repromptOutput = " Would you like another fact?";
const URL = "http://numbersapi.com";

return test(URL, theNumber).then(function (data) {
return handlerInput.responseBuilder
.speak("Test Data")
.reprompt(repromptOutput)
}).catch(function (data) {
return handlerInput.responseBuilder
.speak(`I wasn't able to find a fact for ${theNumber}` )
.reprompt(repromptOutput)
});
}
};

现在您可能想知道为什么需要这些返回。这是因为 JS 函数隐式返回 undefined,因此在这种情况下,您必须显式告知 handle 函数应该返回什么。这同样适用于 promise 内部。

关于node.js - 无法处理 Alexa intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58066124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com