我正在尝试制作一个脚本,该脚本从用户那里获取输入,通过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
。
如果有人可以将我引导到我所缺少的地方或问题所在,那就太好了!
答案 0 :(得分:0)
我知道了。经过许多次刷新后,我决定查看npm文档。原来有些白痴列出了最早的版本为4.0.3,最新版本为0.7.0。我需要明确地告诉它使用版本0.7.0,以便它正常工作。谢天谢地!
答案 1 :(得分:0)
我的工作是通过重新安装dialogflow程序包
npm卸载对话框流程
npm install dialogflow-保存
答案 2 :(得分:-2)
将代码放入try and catch块中。就我而言,这样做可以消除此错误。