如何在 Bixby 的动作输出中设置条件语句

박동석*_*박동석 0 bixby bixbystudio

嗨,我想通过在动作输出中放置条件语句来执行另一个动作。我该怎么办?

例如

action (~~) {
  description (Validate items passed from javascript)
  collect {
    input (~~) {
      type (~~)
      min (~~) max (~~)
    }
  }

  type(~~~)

  output (items){
    on-empty(items.item1){ // if items.item1 is empty.
      replan { // go to case1Action.
            intent {
              goal : case1Action
              value : ~~~~~
            }
          }
    }else{ // else
      replan { // go to case2Action.
            intent {
              goal : case2Action
              value : ~~~~~
            }
          }
    }
  }
Run Code Online (Sandbox Code Playgroud)

或者我想根据输出值选择视图。(实际上这就是问题的目的)

output (items){
    if(items.item1 == "goFirstCase"){
      // First case view
    }else{
      // Second case view
    }
  }
Run Code Online (Sandbox Code Playgroud)

Kan*_*woo 5

我认为通过“根据输出值选择不同的视图”,我认为您的意思是您想更改屏幕上显示的内容?因为“视图”实际上由对话框、布局和对话驱动程序组成。 https://bixbydevelopers.com/dev/docs/dev-guide/developers/building-views.views

对于大多数用例,实际上只会使用一个结果视图,并且可以根据您的首选条件更改视图的三个内容中的任何一个,如上述答案所示。

在一个视图中,您可以使用这三个块定义三个不同的组件:message用于对话框、render用于布局和conversation-drivers

使用你的例子,

//in a result-view
message {
    if (items.item1 == "firstCase") {
        template-macro (firstCase-result-dialog) {//enter params}
    }
}
render {
    if (size(items) > 1) {
        list-of (items) {
            where-each (item) {
                if (item == "firstCase") {
                    layout-match (item) {
                        mode (Summary)
                    }
                    // OR use layout-macro
                    layout-macro (firstCase-result-summary-thumbnail-card) {//enter params}
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

conversation-drivers当然可以做类似的有条件的工作。