Skip to content

Commit 1df7282

Browse files
committed
Fixed a bug with localized confirm options not recognized.
1 parent c7215c5 commit 1df7282

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

Node/core/src/dialogs/Prompts.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,17 @@ export interface IChronoDuration extends IEntity {
9595

9696
export class SimplePromptRecognizer implements IPromptRecognizer {
9797
public recognize(args: IPromptRecognizerArgs, callback: (result: IPromptResult<any>) => void, session?: ISession): void {
98+
function findChoice(args: IPromptRecognizerArgs, text: string) {
99+
var best = entities.EntityRecognizer.findBestMatch(args.enumValues, text);
100+
if (!best) {
101+
var n = entities.EntityRecognizer.parseNumber(text);
102+
if (!isNaN(n) && n > 0 && n <= args.enumValues.length) {
103+
best = { index: n - 1, entity: args.enumValues[n - 1], score: 1.0 };
104+
}
105+
}
106+
return best;
107+
}
108+
98109
// Recognize value
99110
var score = 0.0;
100111
var response: any;
@@ -119,11 +130,10 @@ export class SimplePromptRecognizer implements IPromptRecognizer {
119130
case PromptType.confirm:
120131
var b = entities.EntityRecognizer.parseBoolean(text);
121132
if (typeof b !== 'boolean') {
122-
var n = entities.EntityRecognizer.parseNumber(text);
123-
if (!isNaN(n) && n > 0 && n <= 2) {
124-
b = (n === 1);
133+
var best = findChoice(args, text);
134+
if (best) {
135+
b = (best.index === 0); // enumValues == ['yes', 'no']
125136
}
126-
127137
}
128138
if (typeof b == 'boolean') {
129139
score = 1.0;
@@ -138,13 +148,7 @@ export class SimplePromptRecognizer implements IPromptRecognizer {
138148
}
139149
break;
140150
case PromptType.choice:
141-
var best = entities.EntityRecognizer.findBestMatch(args.enumValues, text);
142-
if (!best) {
143-
var n = entities.EntityRecognizer.parseNumber(text);
144-
if (!isNaN(n) && n > 0 && n <= args.enumValues.length) {
145-
best = { index: n - 1, entity: args.enumValues[n - 1], score: 1.0 };
146-
}
147-
}
151+
var best = findChoice(args, text);
148152
if (best) {
149153
score = best.score;
150154
response = best;

0 commit comments

Comments
 (0)