嗨,我想通过在动作输出中放置条件语句来执行另一个动作。我该怎么办?
例如
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)
我认为通过“根据输出值选择不同的视图”,我认为您的意思是您想更改屏幕上显示的内容?因为“视图”实际上由对话框、布局和对话驱动程序组成。 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
当然可以做类似的有条件的工作。