У меня есть капсула, которая рассчитывает что-то на основе пользовательского ввода.Пользователь должен сообщить моей капсуле страну происхождения (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)}")
}
}
}
}
}