2017-11-07 4 views
3

Ich habe eine Anforderung, wo ich eine Liste von 2 Attributen von API.AI akzeptieren möchte, zum Beispiel kann der Benutzer eine der sagen folgende:Wie kann ich eine Liste einer Kombination von Attributen in API.AI (Dialogflow) erstellen

hinzufügen 2 Orangen und 3 Bananen 2 mein Warenkorb

hinzufügen 2 Orangen 3 Bananen und 5 Äpfel zu meinem Warenkorb

So soll es eine Liste der Kombination von Zähl- und Obst-Namen senden meine Bewerbung. Irgendwelche Vorschläge?

+0

@AlecFenichel - Dies ist eine gültige Frage für Dialogflow; Das angegebene Beispiel erfordert die Verwendung einer erweiterten Funktion (zusammengesetzte Entitäten), und die resultierende Antwort wird anderen Entwicklern nützlich sein. Es beinhaltet keinen Code zu schreiben. Siehe meine Antwort unten. –

+0

Danke für die Antwort @Dan Imrie-Situnayake. Ich hatte diesen Ansatz versucht. Das Problem hier ist jedoch, dass wir alle Synonyme angeben müssen, wenn wir die Entität "Frucht" definieren.In einem breiteren Szenario, sagen wir für eine Anwendung, die es Ihnen erlaubt, Lebensmittel hinzuzufügen, wird es Tausende von Werten geben, die das "Obst" annehmen kann, es scheint nicht skalierbar zu sein. Haben wir eine andere Möglichkeit, dies zu tun, ohne Synonyme für die "Frucht" zu definieren? –

+0

@ Alec Fenichel. Wie von Dan erwähnt, handelt es sich hierbei um eine Frage, wie dialogflow composite entities für diesen Anwendungsfall verwendet werden. –

Antwort

3

Sie können dies mit Composite Entities tun.

Zuerst erstellen Sie eine Entität, die alle Früchte und ihre Synonyme auflistet (nennen wir es fruit).

Erstellen Sie dann eine zusammengesetzte Einheit (wir es number-of-fruit nennen), die wie folgt aussieht:

Screenshot of number-of-fruit entity

Sie brauchen nur einen Wert, ohne Synonyme, und es sollten die beiden Parameter enthalten, die Sie wollen sammeln:

  • @sys.number-integer:number (die @sys.number-integer Teil für integer, der die Systemeinheit darstellt, die :number Teil ist der Name, den wir diesen Parameter geben werde)

  • @fruit:fruit (der @fruit Teil der Name unseres Obst Einheit ist, der :fruit Teil ist der Name, den wir diese Parameter geben werden)

Wenn Sie nun ein Beispiel enthält Elemente in diesem Format hinzufügen zu einer Absicht, werden Sie Ihre neue zusammengesetzte Einheit erkannt wird, dass:

enter image description here

Allerdings sind die Vorkommen in dem Beispiel zur Zeit als zwei behandelt werden separate Parameter, keine Liste. Um diese Einheiten als eine Liste zu behandeln, als zwei diskrete Elemente im Gegensatz wählen die zweite Beispiel markiert und klicken Sie auf das Element, das auf den ersten Parameter entspricht (im Screenshot ist es das mit dem blauen Text sagen number-of-fruit):

enter image description here

Nun sehen Sie, dass die Parameter Abschnitt zeigt an, dass dieser Parameter ist eine Liste:

enter image description here

Sobald Sie speichern und Zug, können Sie testen, ob dies für eine beliebige Länge Liste über die Konsole arbeitet :

enter image description here

+0

Danke für die Antwort Dan. Ich hatte diesen Ansatz versucht. Das Problem hier ist jedoch, dass wir alle Synonyme angeben müssen, wenn wir die Entität "Frucht" definieren. In einem breiteren Szenario, sagen wir für eine Anwendung, die es Ihnen erlaubt, Lebensmittel hinzuzufügen, wird es Tausende von Werten geben, die das "Obst" annehmen kann, es scheint nicht skalierbar zu sein. Haben wir eine andere Möglichkeit, dies zu tun, ohne Synonyme für die "Frucht" zu definieren? –

+0

In diesem Fall klingt es wie Sie eine zweite Frage haben. Können Sie Ihre ursprüngliche Frage als beantwortet markieren und eine andere Frage erstellen? Wenn Sie es hier verlinken, kann ich es so schnell wie möglich beantworten. –

+0

Ich habe das gleiche Problem, außer ich suche, um 2 Listen zu unterscheiden, ich baue eine Konverter-Anwendung, die von einem Typ in einen anderen Typ konvertiert, ein Typ = Liste von Werten, ein anderer Typ = Liste von Werten, irgendwelche Ideen, wie dies sein kann erreicht, danke im Voraus – PirateApp

Verwandte Themen