gpt4 book ai didi

javascript - NodeJS中传递回调函数变成Object

转载 作者:行者123 更新时间:2023-12-02 14:46:30 25 4
gpt4 key购买 nike

我正在 NodeJS 中使用 AWS Lambda 函数制作 Alexa 技能。

当我调用 Intent 时,应用程序抛出错误:

“errorMessage”:“异常:TypeError:对象不是函数”

首先,我的应用程序收到一个事件。如果它是一个 Intent,它会调用:

exports.handler = function (event, context) {

try {
...
else if (event.request.type === "IntentRequest") {

onIntent(
event.request,
event.session,
function intent_callback(sessionAttributes, speechletResponse) {
context.succeed(buildResponse(sessionAttributes, speechletResponse));
}
);

您可以看到上面将回调传递给了onIntent()。它检查它是什么 intent 。 Console.logging 此处将传递的回调显示为函数:

function onIntent(intentRequest, session, callback) {

if ("ItemIntent" === intentName) {
console.log(callback); // This is a function

getOrderResponse(intent, session, callback);

然而,getOrderResponse() 中的callback 类型不知何故变成了一个对象?这就是我收到该错误的原因,但我不明白它为什么不是 function 类型。为什么它是一个对象?

function getOrderResponse(callback) {

console.log('getOrderResponse', callback); // type = Object: { name: 'ItemIntent', slots: { Item: { name: 'Item' } } }

var card_title = config.data().CARD_TITLE;

var sessionAttributes = {},
speechOutput = 'So you want quick order',
shouldEndSession = false,
repromptText = 'Hello';

sessionAttributes = {
'speechOutput': repromptText,
'repromptText': repromptText,
'questions': 'some questions'
};

callback(sessionAttributes, buildSpeechletResponse(card_title, speechOutput, repromptText, shouldEndSession));
}

最佳答案

回调必须是第三个参数。

getOrderResponse(intent, session,callback); 您发送的第一个参数是 intent 对象。

函数 getOrderResponse(callback) {

应该是

函数 getOrderResponse( intent 、 session 、回调){

关于javascript - NodeJS中传递回调函数变成Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36560558/

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