Normally a better way to do this is to define different dial in numbers for internal users vs. external callers... you can't really trust the "internal"/"external" information we get from the switch. Unity doesn't use this flag when determining if it's an internal caller or now - we look up the calling number and if it corresponds to the extension of a known subscriber then it's considered internal for purposes of playing the "internal" greeting for instance.
I'd definitely reccomend using a different routing method here and creating routing rules based on the dialed number or the like.