Как я могу позволить пользователю вводить NL, показывая ему представление ввода? - PullRequest
1 голос
/ 23 мая 2019

У меня есть капсула, которая рассчитывает что-то на основе пользовательского ввода.Пользователь должен сообщить моей капсуле страну происхождения (FromCountryConcept), страну назначения (ToCountryConcept) и текст (LetterContentConcept).Поскольку понятия страны enum, input-view для них просты selection-of.Для input-view для текста я использую textarea.Весь код приведен ниже и доступен на github в этом репозитории: SendLetter-Bixby

Когда пользователь использует представления Bixby для предоставления необходимого ввода в Bixby, все работает должным образом.

Как разрешить пользователю вводить данные для показанного input-view с использованием (разговорного или набранного) ввода NL?

Мое действие SendLetter.model.bxb выглядит следующим образом:

action (SendLetter) {
  description (Sends a Letter from one country to another and calculates the cost based on the letter content length.)
  type (Calculation)
  collect {
    input (fromCountry) {
      type (FromCountryConcept)
      min (Required)
      max (One)
      default-init {
        intent {
          goal: FromCountryConcept
          value-set: FromCountryConcept {
            FromCountryConcept(Germany)
            FromCountryConcept(South Korea)
            FromCountryConcept(USA)
            FromCountryConcept(Spain)
            FromCountryConcept(Austria)
            FromCountryConcept(France)
          }
        }
      }
    }
    input (toCountry) {
      type (ToCountryConcept)
      min (Required)
      max (One)
      default-init {
        intent {
          goal: ToCountryConcept
          value-set: ToCountryConcept {
            ToCountryConcept(Austria)
            ToCountryConcept(South Korea)
            ToCountryConcept(USA)
            ToCountryConcept(Spain)
            ToCountryConcept(Germany)
            ToCountryConcept(France)
          }
        }
      }
    }
    input (letterContent) {
      type (LetterContentConcept)
      min (Required)
      max (One)
    }
  }
  output (SendLetterResponseConcept)
}

input-view для концепций страны FromCountry_Input.view.bxb выглядит следующим образом (ToCountry_Input.view.bxb эквивалентно):

input-view {
  match: FromCountryConcept(this)
  message {
    template ("Select the country this letter will be sent from")
  }
  render {
    selection-of (this) {
      where-each (fromCountry) {
        // default-layout used
      }
    }
  }
}

input-view для текста, который я хочу, чтобы пользовательбыть в состоянии ввести в LetterContent_Input.view.bxb:

input-view {
  match: LetterContentConcept(this)
  message {
    template ("Write the content of the letter.")
  }
  render {
    form {
      on-submit {
        goal: LetterContentConcept
        value {
          viv.core.FormElement(letterContent)
        }
      }
      elements {
        textarea {
          id (letterContent)
          label ("Letter Content")
          type (LetterContentConcept)
          value ("#{value(this)}")
        }
      }
    }
  }
}

enter image description here

1 Ответ

2 голосов
/ 23 мая 2019

Вы в момент подсказки, поэтому вам нужно добавить быстрое обучение.

Это позволит пользователю использовать NL для ответа на ваш запрос.

На вкладке обучения это выглядит так: enter image description here

https://bixbydevelopers.com/dev/docs/dev-guide/developers/training.intro-training#add-training-examples-for-prompts

...