0

关于 Bixby 工作室的问题。

我试图弄清楚如何接受用户的文本输入。

我有一个 Filter 结构,其中包含一些字段,例如 SearchField、Genre、Platforms(游戏控制台)和 Themes(其他一些条目)

默认情况下,所有这些都是可选的,尤其是搜索字段。但是,我希望用户能够清楚地看到启用了哪些过滤器,并能够选择和更改它们的值(这些值可以被 NLP 训练覆盖,但我不知道如何禁用该字段.)

我为我的过滤器创建了一个结果视图,并设置了输入单元格以选择要修改的特定字段。(在本例中为 SearchField。)。我已成功重定向到输入视图,但似乎无论我在此处输入什么文本,它都不会保存或应用于我的过滤器。

寻找对问题的一些洞察力,并愿意根据需要提供更多信息。

我过去尝试过的一些事情似乎想要在过滤器(可能不存在)中采用现有的上下文“SearchField”并将其应用于新的“搜索字段”。但是,这不起作用,并且似乎创建了一个循环。

我也尝试prompt-behavior (AlwaysSelection)在 SetSearchField 的动作模型中设置,但它似乎什么也没做。

// Result View for Filters
result-view {
  match {
    Filter(this)
  }
  message {
    template (Active Filters){
      speech (Would you like to change any filters?)
    }
  }
  render {
    layout-macro (filter-details) {
      param (filter) {
        expression (this)
      }
    }
  }
}
// Layout Macro

layout-macro-def(filter-details) {
  params {
    param (filter) {
      type (Filter)
      min (Required)
      max (One)
    }
  }

  content {
    section {
      title (Filters)
      content {
        input-cell {
          label (Search Name)
          value ("#{value(filter.name)}")
          on-click {
            intent {
              goal: SetSearchField // <-------- Field in question
            }
          }
        }
      }
    }
  }
}
// Input-view for SearchField

input-view {
  match {
    SearchField(searchField)
  }
  render {
    form {
      elements {
        text-input {
          id (val)
          type (SearchField)
          required (true)
        }
      }
      on-submit {
        goal:SearchField
      }
    }
  }
}
// SetSearchField action
action (SetSearchField) {
  description (Sets the name in a search filter)
  type (Fetch)
  collect {
    input (newSearchField) {
      type (SearchField)
      min (Required)
      prompt-behavior (AlwaysSelection)
    }
  }
  output (SearchField)
}
// SetSearchField endpoint
    action-endpoint (SetSearchField) {
      accepted-inputs (newSearchField) 
      local-endpoint ("filters/SetSearchField.js")
    }

// .js file

module.exports.function = function setName (newSearchField) {
  return newSearchField
}
4

1 回答 1

1

我发现有一种特殊的方法可以访问输入视图的输入表单元素。

form通过->收集输入elements,然后使用viv.core.FormElement(id)

input-view {
  match {
    SearchField(searchField)
  }
  render {
    form {
      on-submit {
        goal: SearchField
        value: viv.core.FormElement(text)
      }
      elements {
        text-input {
          id (text)
          type (SearchField)
          label (Search for: )
          value("#{raw(searchField)}")
        }
      }
    }
  }
}

于 2019-04-15T02:57:02.123 回答