Как сделать древовидное структурированное диалоговое действие на основе Google? - PullRequest
0 голосов
/ 07 июля 2019

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

1 Ответ

0 голосов
/ 08 июля 2019

Существует два основных способа сделать это.

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

Альтернативой является хранение данных, таких как ответы на вопросы и трудности, в данных сеанса и иметь единственное намерение Dialogflow, способноеперехватите ответ пользователя, дайте ему пропуск / неудачу и задайте следующий вопрос.

app.intent('My Question', (conv, {answer}) => {
  const {currentQuestion} = conv.data
  if (currentQuestion.answer === answer) {
    conv.ask('Correct!')
    conv.data.difficulty++
  } else {
    conv.ask('Wrong!')
    conv.data.difficulty--
  }
  const nextQuestion = customShuffle(conv.data.allQuestions, conv.data.difficulty)
  conv.data.allQuestions[nextQuestion.id] = undefined
  conv.ask('Next question! ' + nextQuestion.question)
})
...