Как повторить вопрос в викторине с другой речью - PullRequest
0 голосов
/ 01 ноября 2019

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

Вот мое обновление, которое задает вопрос и воспроизводит файл:

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 приводит к тому, что оно никогда не будет обновляться снова?

1 Ответ

0 голосов
/ 06 ноября 2019

Я думаю, вы можете переназначить значение say на "" (пустая строка с пробелом), что будет эквивалентно отсутствию речи.

...