Reputation: 3399
I'm trying to create a DialogFlow intent that will ask the user for an account code. Account codes are alphanumeric and can be up to 10 characters. I originally setup my intent with a @sys.any
parameter which does collect the input. However with voice recognition it struggles as it's not a word as such. For example if I say the account code X36501 it gets interpreted as 'x3650 one'.
What I thought I could do is create an entity called accountCode with a list of entries (synonyms turned off) for example :
X36501
ZZZZ01
ABC100
I then changed the intent parameter from @sys.any
to @accountCode
. I was hoping it would select the nearest value it could match based on the recognition. However it now fails to fill the parameter value at all.
Is there any other way to achieve this? Any way of defining a pattern/regular expression for guiding the voice recognition?
Upvotes: 1
Views: 993
Reputation: 2904
When designing conversational experiences, it's considered best practice to avoid forcing users to enter codes, numbers and other types of data that are not easy to read out loud. The chance of recognition error is high, which increases user frustration.
This is not a limitation of the technology; it's more of a limitation of our ability to speak, since it remains a problem even when communicating with other humans. Think back to the last time you had to read out a long number over the phone.
Before moving forward, you should consider whether there is another way to identify an account. Is there any other identifying data that would be easier for a user to speak?
If there is truly no alternative, you could consider collecting the digits one by one, conscious that this is going to be a painful experience for your users.
Upvotes: 1