2017-08-10 2 views
1

J'ai besoin d'aide car je ne comprends pas vraiment le "contexte" api.ai. Je ne sais même pas si le "contexte" résout le problème. Supposons que vous ayez peu d'intentions de suivi, vous commencez par un et vous avez deux chemins qui devraient se recouper dans un point. Je veux créer une seule intention pour ce point d'intersection (je veux avoir deux parents pour cette intention). Je ne veux pas créer deux intentions identiques, je veux réutiliser cette intention.Comment puis-je réutiliser une intention dans api.ai

Est-ce possible? J'ai vérifié la documentation, les forums et même ici je n'ai rien trouvé.

Répondre

2

Réponse courte: Oui. Comprendre pourquoi c'est oui est important pour la réponse plus longue.

Les intentions ne sont pas liées à un chemin spécifique - elles sont déclenchées lorsque les conditions sont remplies. Dans la forme la plus simple, ces conditions sont des phrases qui sont prononcées par l'utilisateur. Des conditions plus complexes incluent des actions spécifiques déclenchées par le périphérique (telles que l'action de bienvenue) ou des contextes spécifiques actifs. Vous pouvez les combiner - si une phrase est prononcée alors que contextA est actif, une intention peut être déclenchée, alors que si elle est dite si contextB est active, une intention différente peut être déclenchée. Liste d'intentions dans quels contextes doit être actif pour être déclenché.

Cela conduit à la réponse plus longue: Oui. Ce que vous devez faire est de faire que chaque "branche" soit gérée par un ensemble particulier de contextes, mais le "point de jointure" n'exigerait aucun de ces contextes. Alors imaginons que vous écrivez une action qui vous permet de commander un seul article d'un salon de crème glacée. (Un seul article parce que je ne veux pas entrer dans la complexité du suivi de la commande, etc.) Vous pourriez avoir les intentions suivantes:

  • Bienvenue

    Déclenchée par: action Bienvenue

    eNVOIE: « .? Bienvenue voulez-vous un cornet de crème glacée ou un soda

  • icecream.start

    Déclenchée par: l'utilisateur dit « crème glacée »

    Envoie: Ça sonne bien. Quelle saveur?

    contexte Sets: ice_cream

  • icecream.flavor

    Déclenchée par: contexte = ice_cream et l'utilisateur donne une saveur valide (vanille ou chocolat)

    Transmet: Mon préféré. Quelle taille?

    contexte Sets: ice_cream

  • icecream.size

    déclenchée par: contexte = ice_cream et l'utilisateur donne une taille valide (enfants, petite, moyenne ou grande)

    Transmet « Alors vous voulez un cornet de crème glacée, n'est-ce pas?"

    contexte: commander Sets

  • soda.start

    déclenchée par: l'utilisateur dit "soda"

    Transmet: J'ai soif trop quel genre

    contexte jeux.? : soda

  • soda.flavor

    Déclenchée par: context = soda et l'utilisateur donnant une boisson gazeuse valide

    Envois: Bon choix. Quelle taille?

    contexte Sets: soude

  • soda.size

    Déclenchée par: contexte = soude et l'utilisateur donne une taille valide (petite, moyenne, grande)

    Transmet « Vous voulez un . Est-ce correct?"

    contexte Sets: commandé

  • order.placed

    Déclenchée par: l'utilisateur en disant "oui" (ce qui confirme l'ordre) et le contexte est "ordonné"

    Transmet: « Voulez-vous des serviettes ? "

etc etc etc

Dans ce cas, on peut diviser en deux voies (chacune avec des réponses similaires, mais pas identiques, possibles), puis revenir en même temps que le contexte « ordonné ».

(Je dois ajouter que cela ne couvre que les bases sur les contextes, notamment la durée de vie d'un contexte, comment travailler avec plusieurs contextes actifs et les attributs que vous pouvez définir dans un contexte.)

+0

Merci beaucoup pour la réponse, c'est plus clair maintenant. Je vais essayer avec juste le contexte et ce que l'utilisateur dit sans "suivi". Je vois dans JSON qu'une intention a l'attribut "parent-id" et je pense qu'un seul est possible et j'en ai besoin de deux. Lorsque j'ai testé, le contenu était actif et l'utilisateur a dit le mot correct mais l'intention ne s'est pas déclenchée. – WhiteShadow

+0

Si vous rencontrez toujours des problèmes, veuillez mettre à jour votre question pour inclure des détails, avec des captures d'écran des Intents dans api.ai si possible. Si cela a résolu votre question, veuillez accepter et/ou augmenter. – Prisoner

+1

J'ai résolu le problème, j'ai mis un contexte personnalisé sur les deux sorties "chemins" (je ne savais pas que je peux en créer un personnalisé) et j'ai mis le même contexte sur l'entrée d'intention de rejoindre. Et j'ai également découvert que si vous avez deux contextes, les deux doivent être mis en correspondance (cela fonctionne comme une opération AND). – WhiteShadow