首页 > 解决方案 > 如何进行对话流会话

问题描述

我想在对话流中为不同的用户设置不同的会话。

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.`);
  }
}

标签: node.jsnpmdialogflow-es

解决方案


    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)


推荐阅读