2017-07-11 3 views
0

En demandant à l'utilisateur une liste de choix, il permet à l'utilisateur de sélectionner une option dans la liste ou d'entrer un texte valeur. Je sais que le plus pratique est de sélectionner parmi les choix donnés par onglet ou cliquez dessus, mais si l'utilisateur veut sélectionner la même option en le tapant manuellement, alors la structure du bot renvoie des valeurs incorrectes.Problème avec Prompts.choice: correspondance de chaîne non pertinente si l'utilisateur fournit un choix en tant que texte au lieu de le sélectionner dans la liste des choix fournis

Voir exemple ci-dessous: Screenshot from attached sample nodeJS application

Il est bizarre, mais ce que je Mémorable est que s'il y a un numéro dans le texte saisi et il ne correspond pas tout à fait les choix à condition qu'il sélectionne l'option à cette position. Par exemple, j'ai entré cockpit 4 s'attendant à ce qu'il corresponde à la 3ème option de la liste, mais il retourne effectivement la 4ème option. Je considère cela comme un bug car son comportement n'est pas documenté et ne fonctionne pas comme prévu.

J'ai également créé un exemple d'application de démonstration pour montrer ce problème et comme la capture d'écran ci-dessus provient de la même application, vous pouvez essayer l'exemple que j'ai mentionné.

projet Télécharger de lien ci-dessous: https://1drv.ms/f/s!AkRT15xJsa0UdY-Y5FPJ8QvY1aU

+0

L'utilisateur doit entrer le texte complet de l'option de choix pour qu'il soit reconnu correctement. Dans votre exemple, vous n'avez pas entré le texte d'option complet qui serait "Cockpit 4 au niveau 2". Étant donné que vous n'avez entré qu'une réponse partielle, comprenant un nombre, le système de reconnaissance a interprété votre saisie comme une sélection basée sur le nombre. Par exemple, vous avez choisi le choix n ° 4. – nilsw

+0

J'ai essayé les deux approches ci-dessous: 1. désactiver la reconnaissance des ordinaux 2. améliorer le score fourni par PromptRecognizers.findTopEntity (PromptRecognizers.recognizeChoices (énoncé, choix, options)); La deuxième approche est directe alors que pour la première approche, je n'ai trouvé aucun moyen de définir une propriété comme 'recognoOrdinals'. FYI J'utilise Prompts.choice et semble avoir besoin de l'utilisateur PromptChoice à la place et implémente ses gestionnaires de reconnaissance. Corrigez-moi si je me trompe. –

Répondre

2

Ce comportement est normal de PromptChoice que par défaut, il a les paramètres suivants à true:

/// <param name="recognizeChoices">(Optional) if true, the prompt will attempt to recognize numbers in the users utterance as the index of the choice to return. The default value is "true".</param> 
/// <param name="recognizeNumbers">(Optional) if true, the prompt will attempt to recognize ordinals like "the first one" or "the second one" as the index of the choice to return. The default value is "true".</param> 
/// <param name="recognizeOrdinals">(Optional) if true, the prompt will attempt to recognize the selected value using the choices themselves. The default value is "true".</param> 

En conséquence, vous pouvez les mettre à faux pour éviter d'avoir cette reconnaissance que vous ne voulez pas.

Vous pouvez jeter un oeil à l'implémentation here pour Node.js et here pour C# car elle est open source.

+0

Merci pour votre réponse. J'utilise Prompts.choice alors est-il possible de définir ces valeurs sans adopter PromptChoice? –

+0

Je ne suis pas sûr car je n'utilise pas node.js mais C# –