Я пытаюсь создать игру-викторину, которая задает вопрос, а затем воспроизводит короткий аудиофайл. Я хотел бы дать пользователю возможность воспроизводить аудиофайл снова, но без речи. Как мне это сделать?
Вот мое обновление, которое задает вопрос и воспроизводит файл:
action (UpdateGame) {
description (Evaluate user's answer and updates the game state.)
type (UpdateTransaction)
collect {
input (state) {
type (State)
min (Required) max (One)
}
input (fileToPlay) {
description (Create the playlist to play)
type (audioPlayer.AudioInfo)
min (Optional) max (One)
default-init {
intent {
goal: fileAudioInfo
}
}
hidden
}
computed-input (play) {
description (Ask the client to play our sound.)
type (audioPlayer.Result)
compute {
intent {
goal: audioPlayer.PlayAudio
value: $expr(fileToPlay)
}
}
hidden
}
input (answer){
type (Answer)
min (Required) max (One)
default-init {
intent {
goal: ChooseAnswer
}
}
}
}
output (State)
}
Мой объект состояния выглядит следующим образом:
structure (State) {
description (Holds the game state.)
features {
transaction
transient
}
property (game) {
type (Game)
min (Required) max (One)
visibility (Private)
}
property (currentQuestion) {
type (Question)
min (Required) max (One)
visibility (Private)
}
property (restartQuestion){
type (RestartQuestion)
min (Required) max (Many)
visibility (Private)
}
property (completed) {
type (core.Boolean)
min (Optional) max (One)
visibility (Private)
}
property (change) {
type (core.Boolean)
min (Optional) max (One)
visibility (Private)
}
property (say) {
type (core.Text)
min (Optional) max (One)
description(Should the introductory be read or not?)
}
property (display) {
type (core.Text)
min (Required) max (One)
description(Should the introductory be read or not?)
visibility (Private)
}
}
У меня есть действие ReplayAudio, которое выглядит следующим образом:
action (ReplayAudio) {
description (__DESCRIPTION__)
type (UpdateTransaction)
collect {
input (state) {
type (State)
min (Required) max (One)
default-init {
intent {
goal: ReplayAudio
}
}
validate {
replan{
intent{
goal: UpdateGame
value: State {
currentQuestion: $expr(state.currentQuestion)
display: $expr(state.display)
game: $expr(state.game)
restartQuestion: $expr(state.restartQuestion)
}
}
}
}
}
}
output (State)
}
Поэтому я пытаюсь пропустить поле say
. Проблема в том, что когда я снова устанавливаю поле say в UpdateGame
, оно остается пустым, и я никогда не могу его сбросить.
Почему удаление поля say
приводит к тому, что оно никогда не будет обновляться снова?