2017-09-19 4 views
1

Dans le cadre de notre flux Watson Conversation, nous avons un noeud qui demande des noms d'utilisateur que nous avons placés dans une variable de contexte.Extraction du nom d'utilisateur du texte de saisie dans Watson Conversation

La plupart des gens nous donnent juste leur nom d'utilisateur (janedoe12), et cela est bien géré en utilisant ce code.

{ 
    "context": { 
    "username": "<?input_text?>" 
    }, 
    "output": { 
    "text": { 
     "values": [ 
     "Hi $username!" 
     ] 
    } 
    } 
} 

La question est quand les gens disent « Mon pseudo est janedoe12 » que je ne peux pas sembler résoudre - Je suis toujours essayer de simplement sortir « janedoe12 ». Nous n'avons pas souvent vu beaucoup d'autres manières que les gens nous donnent leurs noms d'utilisateur (c.-à-d. Personne ne dit «nom d'utilisateur janedoe12» ou «mon sn est janedoe12»), donc nous ne sommes pas trop inquiets de traiter d'autres cas.

Voici ce que j'ai:

Je me sens comme le problème est probable que j'utilise le style RegEx mal mais je ne suis pas tout à fait sûr de savoir comment aller d'ici. Je peux obtenir à ce noeud bien, mais il renvoie $ nom d'utilisateur comme null. Quelqu'un at-il des suggestions sur la façon de concevoir cela?

+0

Essayer 'extrait ('\\ s + nom d'utilisateur est \\ s + (. *) ', 1) ' –

Répondre

1

I blogged about this il y a longtemps.

Heureusement, les choses ont quelque peu changé pour vous faciliter la tâche. Il existe une entité système BETA appelée @sys-person. Il peut ramasser un nom de personne.

Une fois que vous avez détecté l'entité, vous pouvez simplement référencer l'entrée directement comme ceci.

"username": "<? @sys-person ?>" 

Pour développer sur ce, parce que vous parlez d'un nom d'utilisateur plutôt qu'un nom de personnes. Vous allez subir les mêmes problèmes que ceux mentionnés dans le blog.

Ceux étant.

  • Répondre à « Mon nom est »
  • Refusant de donner un nom.
  • En demandant pourquoi voudriez-vous le nom.
  • Jouer avec le système pour obtenir une réponse blague.

Il peut y avoir d'autres conditions.

Voici deux façons de l'aborder. D'abord, vous pouvez demander à la couche d'application de passer la conversation au nom d'utilisateur, si elle devait se connecter pour parler au robot de discussion. Cela signifie que vous n'avez pas besoin de demander à la personne et qu'elle proviendra d'une zone valide. Deuxièmement, il suffit parfois de reformuler la façon dont vous parlez à l'utilisateur pour annuler tout codage complexe. Si je dis "Quel est votre nom d'utilisateur?", Quelqu'un peut répondre comme vous l'avez mentionné. Toutefois, si je dis «Veuillez entrer votre code d'utilisateur à six chiffres», les personnes sont plus susceptibles de ne saisir que leur ID.

À ce stade, vous pouvez numériser en utilisant ce qui suit.

"username": "<? input.text.extract('^[A-Za-z0-9_]{6}') ?>" 

Si vous ne détectez pas l'ID utilisateur, vous pouvez leur demander de le saisir correctement.

0

('nom d'utilisateur \ s + est \ s + (. *)', 1)

-de Wiktor Stribiżew