Есть ли способ идентифицировать подключенных пользователей, когда они общаются с ботом? - PullRequest
0 голосов
/ 04 апреля 2019

Итак, я новичок в IBM Watson assistant, и мне интересно, когда я инициализирую сессию для текущего пользователя, отправившего сообщение, где я должен его сохранить и как я могу сказать Уотсону, что нужно различать session_id для user1 и user2 дляпример?

Прямо сейчас я попытался использовать глобальную переменную в nodejs, но, как я сказал таким образом, я не мог сделать разницу между сеансами нескольких пользователей.


const assistant = new WatsonAssistant({
  username: process.env.WATSON_USERNAME,
  password: process.env.WATSON_PASSWORD,
  url:      process.env.WATSON_URL,
  version: process.env.WATSON_VERSION

});


exports.getMessage = body => new Promise(async (resolve, reject) => {

  // Initializing session for current user
  if(!global.session_id){
    const createdSessionId = await assistant.createSession({
      assistant_id: process.env.WATSON_ASSISTANT_ID
    });
    global.session_id = createdSessionId.session_id;
  }

  assistant.message(
    {
      workspace_id: process.env.WATSON_WORKSPACE_ID,
      input: { text: body.input },
      session_id: global.session_id,
      assistant_id: process.env.WATSON_ASSISTANT_ID
    },
    function(err, response) {
      if (err) {
        console.log(err);
        reject(err);
      } else {
        resolve(response);
      }
    }
  );
});```

I would like to have session_id's of multiple users who have used my chatbot.

1 Ответ

0 голосов
/ 04 апреля 2019

Я бы порекомендовал использовать NodeJS Express в качестве веб-сервера, а затем некоторое промежуточное программное обеспечение сеанса Express для управления сеансом пользователя (между веб-браузером и сервером). Промежуточное программное обеспечение, которое я использовал, это «экспресс-сессия».

Например, я бы сделал это:

const session = require('express-session');

// use unique value for secret, here using the bot workspace ID
app.use(session({secret: process.env.WORKSPACE_ID}));

Затем у вас есть объект req.session, на котором вы можете хранить данные и извлекать их при последующих вызовах того же пользователя. Вы можете сохранить свой идентификатор сессии Assistant в этом объекте req.session, чтобы он был доступен. Другой пользователь получит другой экспресс-сеанс и, следовательно, другой сеанс помощника.

Реализация по умолчанию "express-session" использует память, поэтому в соответствии с README вы захотите использовать что-то вроде диска или базы данных для производственных целей.

...