nodejs-dialogflow库返回TypeError:dialogflow.SessionsClient不是构造函数

时间:2018-10-19 20:01:39

标签: javascript node.js google-cloud-platform dialogflow

我正在尝试制作一个脚本,该脚本从用户那里获取输入,通过Dialogflow运行它,然后将其返回给用户。我从中获取输入信息的平台仅支持Node.js。我通过glitch.com托管了该机器人,但我认为这不是造成此问题的原因。我想先检查一下这里,然后再向GitHub repo.

提交错误报告

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用于处理任何私有内容的东西。因为我不希望随便的人都能得到我的项目ID,所以我将其隐藏在其中,而小故障则将其隐藏在我未明确邀请的任何人中。

每次执行此操作并尝试查询bot时,它都会返回错误Uncaught Promise Error: TypeError: dialogflow.SessionsClient is not a constructor

如果有人可以将我引导到我所缺少的地方或问题所在,那就太好了!

3 个答案:

答案 0 :(得分:0)

我知道了。经过许多次刷新后,我决定查看npm文档。原来有些白痴列出了最早的版本为4.0.3,最新版本为0.7.0。我需要明确地告诉它使用版本0.7.0,以便它正常工作。谢天谢地!

答案 1 :(得分:0)

我的工作是通过重新安装dialogflow程序包

npm卸载对话框流程

npm install dialogflow-保存

答案 2 :(得分:-2)

将代码放入try and catch块中。就我而言,这样做可以消除此错误。