Библиотека nodejs-dialogflow, возвращающая TypeError: dialogflow.SessionsClient не является конструктором - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь создать сценарий, который принимает ввод от пользователя, запускает его через Dialogflow, а затем возвращает его обратно пользователю.Платформа, от которой я получаю информацию, поддерживает только Node.js.Я размещаю бота через glitch.com, но не думаю, что это является причиной проблемы.Я хотел проверить здесь, прежде чем отправлять отчет об ошибках в репозиторий GitHub.

var bot = 'the platform i use to accept inputs and send outputs'

bot.on("message", async message => {

  console.log(message.content); // Log chat to console for debugging/testing

  if (message.content.indexOf(config.prefix) === 0) { // Message starts with your prefix

    let msg = message.content.slice(config.prefix.length); // slice of the prefix on the message

    let args = msg.split(" "); // break the message into part by spaces

    let cmd = args[0].toLowerCase(); // set the first word as the command in lowercase just in case

    args.shift(); // delete the first word from the args


    // You can find your project ID in your Dialogflow agent settings
    const projectId = process.env.PROJECT_ID; //https://dialogflow.com/docs/agents#settings
    const sessionId = 'quickstart-session-id';
    var query = msg;
    const languageCode = 'en-US';

    // Instantiate a DialogFlow client.
    const dialogflow = require('dialogflow');
    const sessionClient = new dialogflow.SessionsClient();

    // Define session path
    const sessionPath = sessionClient.sessionPath(projectId, sessionId);

    // The text query request.
    const request = {
      session: sessionPath,
      queryInput: {
        text: {
          text: query,
          languageCode: languageCode,
        },
      },
    };

    // Send request and log result
    sessionClient
      .detectIntent(request)
      .then(responses => {
        console.log('Detected intent');
        const result = responses[0].queryResult;
        console.log(`  Query: ${result.queryText}`);
        console.log(`  Response: ${result.fulfillmentText}`);
        if (result.intent) {
          console.log(`  Intent: ${result.intent.displayName}`);
        } else {
          console.log(`  No intent matched.`);
        }
      })
      .catch(err => {
        console.error('ERROR:', err);
      });
  }
  return;
});

Это соответствующая часть кода.Для тех, кому интересно, process.env.PROJECT_ID - это то, что glitch.com использует для чего-то частного.Поскольку я не хочу, чтобы случайные люди получали в руки мой идентификатор проекта, я скрываю его там, и сбой скрывает его от тех, кого я явно не приглашаю.

Каждый раз, когда я выполняю это и пытаюсь запроситьбот, он возвращает ошибку Uncaught Promise Error: TypeError: dialogflow.SessionsClient is not a constructor.

Если кто-то может указать мне, что мне не хватает, или в чем проблема, это было бы здорово!

1 Ответ

0 голосов
/ 19 октября 2018

Я понял это.После многих обновлений я решил посмотреть документацию по npm.Оказывается, какой-то идиот назвал самую раннюю версию 4.0.3, а последнюю версию - 0.7.0.Мне нужно было явно сказать ему, чтобы использовать версию 0.7.0 для того, чтобы он работал.Слава Богу!

...