code: public static void sendMessage (DObject speakObj, ChatMessage msg)
      {
          if (speakObj == null) {
              log.warning("Dropping speak message, no speak obj '" + msg + "'.", new Exception());
              return;
          }
  
          // post the message to the relevant object
          speakObj.postMessage(ChatCodes.CHAT_NOTIFICATION, new Object[] { msg });
  
          // if this is a user message; add it to the heard history of all users that can "hear" it
          if (!(msg instanceof UserMessage)) {
              return;
  
          } else if (speakObj instanceof SpeakObject) {
              _messageMapper.omgr = (RootDObjectManager)speakObj.getManager();
              _messageMapper.message = (UserMessage)msg;
              ((SpeakObject)speakObj).applyToListeners(_messageMapper);
              _messageMapper.omgr = null;
              _messageMapper.message = null;
  
          } else {
              log.info("Unable to note listeners", "dclass", speakObj.getClass(), "msg", msg);
          }
      }
docs: Send the specified message on the specified object.