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 将是一个空承诺,而不是其中的值。