问题
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.
来源:https://stackoverflow.com/questions/42779498/watson-conversation-retrieving-specific-data-from-nested-context