2017-03-14 1 views
2

würde ich die Interaktion mag so aussehen:Watson Conversation - Abrufen bestimmter Daten aus verschachtelten Kontext

  • Bot: Nennen Sie ein Land
  • Benutzer: Mexiko
  • Bot: Die Bevölkerung von Mexiko ca. 120M.

Vorerst habe ich die Bevölkerung hart codiert bekam und sieht aus wie folgt:

{ 
    "context": { 
    "inputcountry": "<[email protected]?>", 
    "populations": { 
     "USA": "300M", 
     "Mexico": "100M", 
     "Japan": "127M" 
    } 
    }, 
    "output": { 
    "text": { 
     "append": true, 
     "values": [ 
     "The population of $inputcountry is approximately $populations.$inputcountry" 
     ] 
    } 
    } 
} 

Was ist die Syntax, um die spezifische Bevölkerungszahl mit der Benutzereingabe als Kennung/Lookup zur Verfügung stellen? .

Mit $ Populationen $ inputcountry oben gezeigt gibt

{"USA": "300M","Mexico": "100M","Japan": "120M"}.Mexico 
+0

Warum nicht die Ergebnisse als Entitäten ausprobieren? –

+0

Hi Athif, meinst du jedes Land als eigene Entität zu haben, sagen @USA, @Mexico? Und dann mehrere Antworten, wenn Bedingung? Ich möchte das vermeiden, weil ich nur eine Antwort auf alle Länder beantworten möchte. Auf diese Weise muss ich nur die einzelne Nachschlagetabelle in dem Kontext mit 100 Land: Bevölkerungspaaren aktualisieren, ohne 100 Antworten von Hand zu erzeugen. – kuropon

Antwort

4

<? $populations.get($inputcountry) ?> Versuchen -, die den Trick tun sollten.

+0

Hallo Michal, also sagst du, dass es tatsächlich möglich ist, dies über die Online-Dialogkonfiguration zu tun, aber ich muss es einfach weiter versuchen, möglicherweise mit anderer Syntax? Die anderen Befragten scheinen zu empfehlen, dies manuell mit verschiedenen Entitäten/Dialogknoten zu tun, ist der einzige Weg. Oder schlagen Sie vor, versuchen Sie es, wie es in der Online-Konfiguration nicht möglich ist, aber tun Sie es draußen in sagen ... Javascript ... etc. – kuropon

+0

Sorry, ich habe den Ausdruck nicht in der Antwort angezeigt. Fest. Ja, es ist möglich, dies zu tun, indem Sie die .get-Methode verwenden, die für JsonObject verfügbar ist, bei dem es sich um ein Objekt handelt, das für die Darstellung komplexer JsonObjects im Kontext verwendet wird. –

+0

Danke dafür! Ich wusste, dass die Antwort ziemlich einfach wäre, wenn es möglich wäre. Die resultierende Zahl ist in Anführungszeichen verpackt, aber ich werde leben. Ich habe mir nur eine Menge manuelle Eingaben erspart und ich kann die Tabelle jederzeit aktualisieren! – kuropon

0

Sie könnten mehrere Dialoge für sie schreiben ..

First dialogue triggering Condition: input.text.matches('USA') 
Response: "The population of $input is approximately $populations.USA" 


Second dialogue triggering Condition: input.text.matches('Mexico') 
Response: "The population of $input is approximately $populations.Mexico" 

Third dialogue triggering Condition: input.text.matches('Japan') 
Response: "The population of $input is approximately $populations.Japan" 

(Alle Dialogknoten können Kontextvariablen zugreifen)

Eine andere Möglichkeit wäre, Japan, USA, Mexiko als Entitäten zu erstellen.

+0

Danke. Es scheint also, dass es nicht möglich ist, es so zu machen, wie ich es versuchte, was definitiv hilft. Ich denke, ich werde es manuell machen. – kuropon

Verwandte Themen