如何在 google 上制作基于结构化对话动作的树状结构?
How to make a tree like based structured conversational action on google?
我想做一个动作,问用户一个问题,然后用“是”或“否”来回答。答案影响玩家的未来,并根据用户的答案得到不同的问题。而且我还想存储状态,以便用户之后可以恢复。我认为类似结构的二叉树可以工作,但如何在 dialogflow 中实现它。
有两种主要方法可以做到这一点。
第一种方式是使用contexts,可以动态配置,限制可以触发的intent类型。这将允许您以非常精确的方式开发 tree-like 结构。但是,随着规模的扩大,这种方法会更难管理。
另一种方法是在 session data 中存储已回答问题和难度等数据,并有一个能够捕获用户答案的 Dialogflow 意图,给他们一个 pass/fail,并提供下一个问题。
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)
})
我想做一个动作,问用户一个问题,然后用“是”或“否”来回答。答案影响玩家的未来,并根据用户的答案得到不同的问题。而且我还想存储状态,以便用户之后可以恢复。我认为类似结构的二叉树可以工作,但如何在 dialogflow 中实现它。
有两种主要方法可以做到这一点。
第一种方式是使用contexts,可以动态配置,限制可以触发的intent类型。这将允许您以非常精确的方式开发 tree-like 结构。但是,随着规模的扩大,这种方法会更难管理。
另一种方法是在 session data 中存储已回答问题和难度等数据,并有一个能够捕获用户答案的 Dialogflow 意图,给他们一个 pass/fail,并提供下一个问题。
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)
})