Okay, so this does work the way we both thought, but with a caveat that I suspect is the source of your frustration.
So, what I think you did, because it's a logical thing to do, is that you configured a 'Session Message Handler' that you're trying to reach with system.perspective.sendMessage:
I'm guessing this is what you did, because it's what I did at first, before I remembered the distinction. These 'session message handlers' are actually those targeted by system.util.sendMessage.
The 'scope' argument of system.perspective.sendMessage corresponds to the listening scope of the component message handlers on any Perspective component:
The granularity of broadcasting/listening scopes is for extra utility, but unfortunately overloads the terminology here. system.util.sendMessage long predates Perspective, and has important Vision and EAM functionality, so it wasn't like we could remove or deprecate it, and it made the most sense to extend it for use with Perspective sessions once they were introduced. But then Perspective's own message handling concept happens to overlap, terminology wise, and there's not a ton we can do about it.
I can also confirm that, with the appropriate listening/targeting scopes set up, you can reach either message handler from an isolated gateway script, such as a tag event script:



