If i want to get the canonical matching value, I use something like:
direction = (slots["direction"].value)
how do I get the actual spoken value, which may be a synonym?
Value, as defined in your question, should be the spoken value from the skill user. If you look at the resolutions object (specifically the values subattribute) you can see that it has resolved to a canonical "name" and canonical "id" which you can set in the interaction model.
There is a great example of this here: https://developer.amazon.com/docs/custom-skills/define-synonyms-and-ids-for-slot-type-values-entity-resolution.html#er-built-in-types
In this case, the developer has said "the windy city" which appears under value, whereas the name is "Chicago" and the id is the airport code, "ORD".
3 People are following this question.