1

Is there a way to specify that a session should be ended, or to clear out the memory of previous actions? In my testing (simulator only) I'm seeing a couple cases where Bixby is remembering a previous entry that isn't relevant anymore.

Example utterances

remove wet diaper wet diaper

In this case there's 2 possible enums that can be said. "actionType" that is optional, in this case "remove" and "statType", in this case "wet diaper".

What is happening is on the second phrase it's caching the actionType. So, the second phrase my JavaScript still receives the "remove" even though it's not included.

I haven't tried this on an actual device (only the simulator) so it's possible this is just a simulation quirk.

This is kind of related to this question. There was a follow-up comment that the OP asked related to session management.

How does Bixby retain data from a previous NL input?

So, if you read that link. Is there a way I can signal to bixby that the conversation is over, or at least to not remember previous entries for the action?

Cory
  • 196
  • 2
  • 8

2 Answers2

1

One way would be to use the transient feature. Here is more information

For example, alter your input type so it doesn't carry over across executions.

name (ActionType) {
          features {
    transient
  }
}
  • make sure all input types are NL friendly. name/enum concepts are meant for NL and you can attach vocabulary to them.
Pete Haas
  • 1,800
  • 1
  • 12
  • 15
  • 1
    Thanks Pete, this looks like it fixed it. The one comment I would say for the next person who reads this is that I added the transient feature to the primitive model types. – Cory Jul 22 '19 at 05:45
0

I used to have a similar issue like yours, in my case, my problem was related to the type of the 'requires' property inside the input-group declared in my action.model.bxb.

You need to handle by separate this two input cases in diferent action.model.bxb files:

In one of them you might have something like (model 1):

input-group(removeWeaper){
      requires (OneOrMoreOf)
      collect{
        input (ActionType) {
          type (Type)
          min (Optional)
         }
        input (StatType) {
          type (Type)
          min (Optional)
         }
}

Here, Bixby Will know that at least one of these properties will be apear in your input and will be waiting for an input with that structure.

In the other file you might have (model 2):

input-group(Weaper){
      requires (OneOf)
      collect{
        input (StatType) {
          type (Type)
          min (Optional)
         }
}

Here, Bixby will be waiting to catch an input that contains only one of the indicated values in you input.

(model 1) This could be ok only if you run 'wet diaper' by first time, also when you try again and run 'remove wet diaper' it might work, the problem is when you run again 'wet diaper' because Bixby Stores you previous approach including "remove". i'm not sure if there is something to clear the stored values, but, here is when (model 2) will help you to catch only the input 'wet diaper' as a different statement.

I share you this work around as my own experience, and i hope this could help you solving or getting another perspective of how you could handle or solve your problem.

Steffen Moritz
  • 7,277
  • 11
  • 36
  • 55