Можно ли сохранить счетчик разговора в редакторе Inline Fulfillment Dialogflow? - PullRequest
1 голос
/ 17 октября 2019

Я делаю многопользовательскую викторину в диалоге, используя встроенный редактор. На данный момент у меня работает 1 и 2 тур, но подсчет очков еще нет.

Так что, может быть, это глупо, но я подумал: о, я сделаю переменную и сохраню счет в этом. Каждый раз, когда функция находится в хорошем ответе, de count будет делать ++ и т. Д. И т. Д. "

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

  var pointsp1 = 0;
  var pointsp2 = 0;

//round 2 player 1

  function vraag1triva(agent) {  
  const goed = agent.parameters.goed;
  const fout = agent.parameters.any;


    if (goed=='tv tas') {
     pointsp1++;
      agent.add("<speak><audio src=\"https://actions.google.com/sounds/v1/transportation/ship_bell.ogg\"></audio>uit welk land komt de avocado?</speak>");
    } else if (fout) {
        agent.add("Je antwoord is fout, het juiste antwoord was tv-tas,uit welk land komt de avocado?");
    }
  }
  //round 2 player 2
  function vraag2triva(agent) {  
    const goed = agent.parameters.goed;
    const fout = agent.parameters.any;
      if (goed=='mexico') {
        pointsp2++;
          agent.add("Goedzo, Mexico is het juiste antwoord. Van wie is het nummer Don't worry, be happy?");
      } else if (fout) {
          agent.add("Je antwoord is fout, het juiste antwoord was mexico, Van wie is het nummer Don't worry, be happy?");
      }
  }
 //score
  function totalscore(agent) {  
    if (pointsp1>pointsp2) {
      agent.add("Player 1 wins"); 
    }else if (pointsp1<pointsp2)
      agent.add("Player 2 wins");
  }

Я ожидал, что когда я назову эту функцию, «общее количество баллов»'. Он говорит, какой игрок выиграл раунд в соответствии с наиболее хорошими ответами.

редактировать, пытался пользовательское хранилище:

let conv = agent.conv(); // create an instance
    conv.data.pointspt1 = 0;
    conv.data.pointsp2 = 0;

   //score
  function totalscore(agent) {  
    if (conv.data.pointsp1>conv.data.pointsp2) {
      agent.add("Player 1 wins round 2"); 
    }else if (conv.data.pointsp1<conv.data.pointsp2)
      agent.add("Player 2 wins round2");
  }


//round 2 player 1

  function vraag1triva(agent) {  
  const goed = agent.parameters.goed;
  const fout = agent.parameters.any;

    if (goed=='tv tas') {
    //save score
      agent.add("<speak><audio src=\"https://actions.google.com/sounds/v1/transportation/ship_bell.ogg\"></audio>uit welk land komt de avocado?</speak>");
      conv.user.storage.pointspt1++; 
    } else if (fout) {
        agent.add("Je antwoord is fout, het juiste antwoord was tv-tas,uit welk land komt de avocado?");
    }
  }

1 Ответ

0 голосов
/ 18 октября 2019

Вы можете сохранить счет в встроенном редакторе. Существует два варианта хранения данных, и вы можете выбрать, в зависимости от того, хотите ли вы сохранить данные в беседе или в разных беседах. Если речь идет о разговоре (ваш игровой счет за текущий сеанс), используйте conversationToken. Пример:

let conv = agent.conv(); // create an instance
conv.data.pointspt1 = 0;
conv.data.pointsp2 = 1;
const total = conv.data.pointspt1 + conv.data.pointspt2;
agent.add(`Your total score is ${total}`);
// If you want to save data across conversations
conv.user.storage.pointspt1 = 0; // This works only for verified users

Для получения дополнительной информации см. Следующую ссылку: Сохранение данных в разговоре

...