I don't see anything wrong with "{CMD_AFTER}", on my machine.
In your example, you only have a wildcard on on side:
*what is the temperature
This means you can only speak something before that phrase, E.G. "hello what is the temperature" and have it be recognized (the speech recognition engine may still recognize your command, but anything said after the phrase will be discarded).
In this case, "{CMD_BEFORE}" would contain the text spoken before the phrase, E.G. "hello".
"{CMD_AFTER}" will always be blank in this example, as there is no wildcard after the phrase, thus that text is discarded (if the command is recognized at all).
If you want "{CMD_AFTER}" to gain a value, you must modify your example:
*what is the temperature*
Now you could say "hello what is the temperature please", and "{CMD_BEFORE}" would once again contain "hello", however now, "{CMD_AFTER}" would contain "please".
In other words, only the side(s) of your command phrase that have a wildcard will allow dictation (I.E. non-predefined speech) to be used and recorded in a token.