node.js - 如何进行对话流会话
问题描述
我想在对话流中为不同的用户设置不同的会话。
https://www.npmjs.com/package/dialogflow
我为此参考了以下站点,但程序没有返回任何输出。
const dialogflow = require('dialogflow');
const uuid = require('uuid');
/**
* Send a query to the dialogflow agent, and return the query result.
* @param {string} projectId The project to be used
*/
async function runSample(projectId = 'your-project-id') {
// A unique identifier for the given session
const sessionId = uuid.v4();
// Create a new session
const sessionClient = new dialogflow.SessionsClient();
const sessionPath = sessionClient.sessionPath(projectId, sessionId);
// The text query request.
const request = {
session: sessionPath,
queryInput: {
text: {
// The query to send to the dialogflow agent
text: 'hello',
// The language used by the client (en-US)
languageCode: 'en-US',
},
},
};
// Send request and log result
const responses = await sessionClient.detectIntent(request);
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.`);
}
}
解决方案
const functions = require('firebase-functions');
const dialogflow = require('dialogflow');
const cors = require('cors')({origin: true});
const admin = require('firebase-admin');
admin.initializeApp();
// Create and Deploy Your First Cloud Functions
// https://firebase.google.com/docs/functions/write-firebase-functions
exports.connectChat = functions.https.onRequest((req, response) => {
cors(req, response, () => {
const projectId = '******';
const query = req.query.text;
const session= req.query.session;
const languageCode = 'en-US';
var result="";
let privateKey = "-----BEGIN PRIVATE KEY-----******\n-----END PRIVATE KEY-----\n";
// as per goolgle json
let clientEmail = "*****@.gserviceaccount.com";
let config = {
credentials: {
private_key: privateKey,
client_email: clientEmail
}
}
const sessionClient = new dialogflow.SessionsClient(config);
// Define session path
const sessionPath = sessionClient.sessionPath(projectId, session);
// The text query request.
const request = {
session: sessionPath,
queryInput: {
text: {
text: query,
languageCode: languageCode,
},
},
};
// Send request and log result
sessionClient
.detectIntent(request)
.then(responses => {
result = responses[0].queryResult;
response.send(result);
return null;
})
.catch(err => {
console.error('ERROR:', err);
response.send('ERROR');
return null;
});
});
});
projectId、clientEmail、privateKey 是从从https://console.cloud.google.com/iam-admin下载的 JSON 文件中获取的
在javascript中从客户端创建您的会话ID(req.query.session)
推荐阅读
- reactjs - react-i18next:如何获取不是我当前选择的语言的文本?
- python - 如何随机播放已转换为张量的图像文件夹
- sql - 在 SQL Server 中将行转置为列
- api - 如何将任何类型的文件转换为 base64,并且转换后的文件应使用 Flutter 上传到 REST API?
- mongodb - 在哪个集合中放置有关平均评分的数据?
- c# - 如何创建自定义车牌 Haar cascades
- javascript - React:我怎样才能为明暗模式动态更改整个背景?Redux 持有我的 darkMode 状态
- r - 首先`bookdown::render_book("foo.Rmd", output_format = "bookdown::pfd_book")`总是失败
- api - 从 API 调用图像时请求失败,状态码 404 错误
- python - 使用 Excel 样条的 Scipy Cubicspline 与 Real Stats