Feature suggestion: finder control over response variations

Currently we can set up multiple versions of a text response by adding multiple text blocks. Botpress will then randomly select one of the variations and return that. But there is no option to control the sequence of text variation responses. I know this can be programmed into the flow as separate nodes, but since we do have the option to define multiple variations of the same text response, it might make sense to be able to fine tune how Botpress selects from those text variations for the same text object.

It would be useful to be able to assign a serial number (an integer) to each response variation. Default value would be 999, in which case all variatiosn would be equal, so a random selection would occur. If, however, a different serial number is entered, then responses will depend on that. For example:

Scenario 1, all text variations have the same default serial value (999). This is equal to the current situation - only random responses possible.

Text response variations:

  • That does not seem like a valid age. Please provide your real age! [999]
  • That still does not seem correct. I know it is an impolite question, but don’t be shy - please provide your real age! [999]
  • Maybe you are just testing me… how old are you really? [999]

Bot: How old are you?
User: I am 400 years old.
Bot: and then here we have no control over which response is returned

Scenario 2, different serial values. Finer control over response variations.

Text response variations:

  • That does not seem like a valid age. Please provide your real age! [1]
  • That still does not seem correct. I know it is an impolite question, but don’t be shy - please provide your real age! [2]
  • Maybe you are just testing me… how old are you really? [3]

Bot: How old are you?
User: I am 400 years old.
Bot: That does not seem like a valid age. Please provide your real age!
User: I’m 222
Bot: That still does not seem correct. I know it is an impolite question, but don’t be shy - please provide your real age!
User: My age is 150
Bot: Maybe you are just testing me… how old are you really?

Scenario 3, different serial values and some identical serial values. For identical values, Botpress would select randomly. Finer control over response variations.

Text response variations:

  • That does not seem like a valid age. Please provide your real age! [1]
  • That still does not seem correct. I know it is an impolite question, but don’t be shy - please provide your real age! [2]
  • Maybe you are just testing me… how old are you really? [3]
  • Ahhh you must be teasing me! :slight_smile: How old are you really? [3]
  • Nope, I don’t think that is correct either. How old are you really? [3]

Bot: How old are you?
User: I am 400 years old.
Bot: That does not seem like a valid age. Please provide your real age!
User: I’m 222
Bot: That still does not seem correct. I know it is an impolite question, but don’t be shy - please provide your real age!
User: My age is 150
and then one of three responses randomly:
Bot: Maybe you are just testing me… how old are you really?
OR:
Bot: Ahhh you must be teasing me! :slight_smile: How old are you really?
OR:
Bot: Nope, I don’t think that is correct either. How old are you really?

Not a priority, I realize. Just an idea. The general purpose is to make the conversation flow seem less rigid, less preprogrammed and more human to enhance the user experience overall. A competing product has this feature, and we found it added quite a lot to the experience. And of course a lot of the time users liek to try to tease a bot and test it’s limits. They were impressed when in a similar situation they got different, yet relevant and controlled responses.

Hey!

Thanks for your feedback, I think that’s a great idea. I have a couple of questions though.

  • If I understand correctly, you want to prioritize bot consecutive replies ?
  • Let say you have a priority groups 1 and 42 and multiple answers in group 1, do you feel like every answers from group 1 before escalating to group 42 ?
  • What happens if all answers have been used ? We go back to highest priority or we keep shuffling answers in lowest priority group?
  • Would you use this feature most of the time or every once in a while ? In other words, would a skill be enough? IMO a skill would be the way to go but I would like your vision as well.

Let me know
Cheers

  • If I understand correctly, you want to prioritize bot consecutive replies ?

Yes, correct.

  • Let say you have a priority groups 1 and 42 and multiple answers in group 1, do you feel like every answers from group 1 before escalating to group 42 ?

If I think of the use case, how would we use prioritized responses? To escalate an issue step by step. So responses with the same serial would be the same “level”. For example, all response variations with serial “1” would refer to the first response to something. (In my example, the first time a user tries to give an invalid response.)

So based on this line of thinking, in response to your question: If we have multiple responses with serial 1, and multiple with serial 42, the bot would randomly pick a response from serial 1, and then the next time move on to pick a serial 42 response. (Instead of cyclign through all serial 1 responses first.)

However, if there are no different serials, i.e. everything is just default (serial 999 for example), then that would indicate a normal random selection, and the bot would select another response randomly for the next and consecutive rounds.

  • What happens if all answers have been used ? We go back to highest priority or we keep shuffling answers in lowest priority group?

Go back to the highest priority. It is the flow designer’s respoinsibility to make sure there are enough response variations (serials or levels) available. So if we expect 5 rounds of responses then at least 5 levels of responses. If we only add 3 levels, the bot has no choice but to start over again I think.

  • Would you use this feature most of the time or every once in a while ? In other words, would a skill be enough? IMO a skill would be the way to go but I would like your vision as well.

The way IBM Watson implements similar (the only place I have seen anythign similar) is that for any response anywhere you have a checkbox and can either say “select a random response” or you can check “sequential responses”.

Random is default, and if you input 5 response variations, the bot will cycle through those. Worth noting that they keep track of which random response has already been used, and Watson cycles thorugh unused random responses first. So if you input 5 response variations and select random, your user will not see repetitions, but will be taen through the 5 variations randomly (and then start over). Seems like a minor detail, but helps greatly to avoid the repetitiveness of bots that people hate sometimes.

And if you select “sequential”, then the responses will be shown to the user in the order that you input them. (And the bot will start over from the begining if it runs out of variations.) Actually from my experience this is fine too. My version that I proposed to you with serial numbers may be unnecessarily complex I guess.

So in response to your question: most versatile would be to have the option of selecting “random” or “serial” for any type of response. Maybe forget the serial number thing.

If this was just a skill then for a Slots skill for example you would not be able to use this. But if you implemented this at the content management level, then any response anywhere could utilize this feature. So for example next to the “typing indicators” checkbox you would have a radio button to select either “random” (default) or “serial”. If you selected “serial” then the bot would cycle through the responses in the order they are entered. Otherwise randomly.

Not sure how this could be doen at the code level, not familiar enough (yet) with the internals.

Keeping track of random responses the way Watson does to minimize duplicate responses would be nice to have in all of this, but secondary compared to being able to use resposne variations in a given order instead of just randomly.

Hope this helps.

1 Like

Thanks again for the detailed suggestions, we’ll look into it and get back to you with a target release :sunny`:

Good catch!

Got It!

1 Like