Функция dialogflow nodejs, возвращающая пустой объект вместо строки - PullRequest
0 голосов
/ 13 марта 2020

Я пытался создать функцию для получения правильного ответа из диалогового потока, однако моя функция продолжала возвращать пустой объект, несмотря на то, что 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;
}

1 Ответ

1 голос
/ 13 марта 2020

Поскольку вы говорите, что оператор console.log во фрагменте правильно выводит намеченное значение, я предполагаю, что проблема заключается в том, как вы используете функцию getIntent.

async function main () {
  const intent = await getIntent(…)
  …
}

main().catch(console.error)

Здесь main функция должна await результат вызова getIntent, который является асинхронным. Если вы не используете это ключевое слово, намерение будет пустым обещанием, а не значением внутри.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...