Watson Conversation - Retrieving specific data fro

2019-07-14 09:04发布

问题:

I'd like the interaction to look like this:

  • Bot: Name a country
  • User: Mexico
  • Bot: The population of Mexico is approximately 120M.

For now, I've got the populations hard-coded and looks like below:

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

What is the syntax to provide the specific population number using the user input as the identifier/lookup?

Using $populations.$inputcountry shown above returns

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

回答1:

Try <? $populations.get($inputcountry) ?> - that should do the trick.



回答2:

You might have to write multiple dialogues for it..

 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"

(Any dialog node can access context variables)

Another option would be to create Japan,USA,Mexico as entities.