Ah.... if your room plugins are going to be various classes, you will need to have your data structure also hold the String that is the name of the plugin class.
If the room plugin is in the same extension as the server plugin, the server plugin could then do:
Code:
MyRoomPlugin roomPlugin = (MyRoomPlugin) getApi().getRoomPlugin(zoneId, roomId, "MyRoomPlugin");
If all your room plugins that would need this feature extend an intermediate class that has the method that the server plugin needs to invoke, you could change the MyRoomPlugin above to that intermediate class, keeping the string that identifies the plugin.
At this point, you can then invoke any public method on the roomPlugin class.
For room plugins in a different extension, it's almost the same.
Code:
EsObject results = getApi().callRoomPlugin(zoneId, roomId, "MyRoomPlugin", parameters);