dialogflow nodejs 函数返回空对象而不是字符串
dialogflow nodejs function returning empty object instead of string
我一直在尝试创建一个函数来从 dialogflow 获得正确的响应,但是,尽管 console.log 返回了正确的回复,我的函数仍然返回一个空对象,已经停留了很长一段时间时间,想知道我哪里做错了。
TLDR 我的函数没有返回字符串,而是返回一个空对象。
async function getIntent(projectId,sessionId,query, languageCode='en'){
const dialogflow = require('dialogflow');
const sessionClient = new dialogflow.SessionsClient({
keyFileName:"../service-account.json"
});
const sessionPath = sessionClient.sessionPath(projectId, sessionId);
const request = {
session: sessionPath,
queryInput: {
text: {
text: query,
languageCode: languageCode,
},
},
};
const response = await sessionClient.detectIntent(request);
console.log(response[0].queryResult.fulfillmentText)
return response[0].queryResult.fulfillmentText;
}
正如您所说,代码段中的 console.log
语句正确输出了预期值,我认为问题在于您如何使用 getIntent
函数。
async function main () {
const intent = await getIntent(…)
…
}
main().catch(console.error)
此处,main
函数需要 await
异步调用 getIntent
的结果。如果不使用此关键字,intent 将是一个空承诺,而不是其中的值。
我一直在尝试创建一个函数来从 dialogflow 获得正确的响应,但是,尽管 console.log 返回了正确的回复,我的函数仍然返回一个空对象,已经停留了很长一段时间时间,想知道我哪里做错了。
TLDR 我的函数没有返回字符串,而是返回一个空对象。
async function getIntent(projectId,sessionId,query, languageCode='en'){
const dialogflow = require('dialogflow');
const sessionClient = new dialogflow.SessionsClient({
keyFileName:"../service-account.json"
});
const sessionPath = sessionClient.sessionPath(projectId, sessionId);
const request = {
session: sessionPath,
queryInput: {
text: {
text: query,
languageCode: languageCode,
},
},
};
const response = await sessionClient.detectIntent(request);
console.log(response[0].queryResult.fulfillmentText)
return response[0].queryResult.fulfillmentText;
}
正如您所说,代码段中的 console.log
语句正确输出了预期值,我认为问题在于您如何使用 getIntent
函数。
async function main () {
const intent = await getIntent(…)
…
}
main().catch(console.error)
此处,main
函数需要 await
异步调用 getIntent
的结果。如果不使用此关键字,intent 将是一个空承诺,而不是其中的值。