如何在Bixby中防止重复操作的执行?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (6)

我想实现一个胶囊,如果用户提供计算所需的全部输入,则进行计算,或者如果用户没有提供第一个请求的完整输入,则要求用户提供必要的输入。如果用户提供完整的请求,一切都有效。如果用户没有提供完整的请求但Bixby需要更多信息,我会遇到一些奇怪的行为,其中计算被多次调用,而Bixby从另一个计算的结果中获取计算的必要信息,它看起来像在调试图中。

为了更容易证明我的问题我已经延长了骰子样品胶囊胶囊样品骰子,并添加numSidesnumDiceRollResultConcept,这样我可以在结果存取骰子和边数。RollResult.model.bxb现在看起来像这样:

structure (RollResultConcept) {
  description (The result object produced by the RollDice action.)
  property (sum) {
    type (SumConcept)
    min (Required)
    max (One)
  }
  property (roll) {
    description (The list of results for each dice roll.)
    type (RollConcept)
    min (Required)
    max (Many)
  }
  // The two properties below have been added
  property (numSides) {
    description (The number of sides that the dice of this roll have.)
    type (NumSidesConcept)
    min (Required)
    max (One)
  }
  property (numDice) {
    description (The number of dice in this roll.)
    type (NumDiceConcept)
    min (Required)
    max (One)
  }
}

我还添加了single-lines,RollResult.view.bxb以便在滚动后向用户显示边和骰子的数量。RollResult.view.bxb:

 result-view {
   match {
     RollResultConcept (rollResult)
   }

   render {
     layout {
       section {
         content {
           single-line {
             text {
               style (Detail_M)
               value ("Sum: #{value(rollResult.sum)}")
             }
           }
           single-line {
             text {
               style (Detail_M)
               value ("Rolls: #{value(rollResult.roll)}")
             }
           }
           // The two single-line below have been added
           single-line {
             text {
               style (Detail_M)
               value ("Dice: #{value(rollResult.numDice)}")
             }
           }
           single-line {
             text {
               style (Detail_M)
               value ("Sides: #{value(rollResult.numSides)}")
             }
           }
         }
       }
     }
   }
 }

在模拟器中,我现在运行以下查询

intent {
  goal: RollDice
  value: NumDiceConcept(2)
}

缺少必要的NumSidesConcept

调试视图显示以下图表,NumSidesConcept缺少(按预期)。

我现在在模拟器中运行以下查询

intent {
  goal: RollDice
  value: NumDiceConcept(2)
  value: NumSidesConcept(6)
}

这导致Debug视图中的以下Graph:

我觉得计算正在进行两次才能到达结果。我已经尝试过给feature { transient }模型了,但这并没有改变任何东西。谁能告诉我这里发生了什么?我不允许在输出中使用相同的原始模型,因为Bixby在尝试执行操作时会使用它们吗?

提问于
用户回答回答于

我尝试修改代码,但无法运行意图(成功)。

这是另一种不需要更改RollResultConcept的方法,并且将根据您的期望(访问骰子和边的数量result-view)工作

 result-view {
  match: RollResultConcept (rollResult) {
    from-output: RollDice(action)
  }


   render {
     layout {
       section {
         content {
           single-line {
             text {
               style (Detail_M)
               value ("Sum: #{value(rollResult.sum)}")
             }
           }
           single-line {
             text {
               style (Detail_M)
               value ("Rolls: #{value(rollResult.roll)}")
             }
           }
           // The two single-line below have been added
           single-line {
             text {
               style (Detail_M)
               value ("Dice: #{value(action.numDice)}")
             }
           }
           single-line {
             text {
               style (Detail_M)
               value ("Sides: #{value(action.numSides)}")
             }
           }
         }
       }
     }
   }
 }

试一试,让我们知道它是否有效!

所属标签

可能回答问题的人

  • 西风

    renzha.net · 站长 (已认证)

    7 粉丝1 提问9 回答
  • 四无君

    0 粉丝0 提问3 回答
  • 拉布拉多拉不多

    1 粉丝0 提问2 回答
  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问2 回答

扫码关注云+社区

领取腾讯云代金券