code: def send(self, message, params=None):
          
          if isinstance(message, str):
              message = self.get(message)
          if message not in self._data:
              raise ValueError("Supplied message is invalid. Use 'get' method.")
  
          if params:
              proto_fill_from_dict(message, params)
  
          capsule = MsgProto(EMsg.ClientServiceMethod)
          capsule.body.method_name = self._data[message]
          capsule.body.serialized_method = message.SerializeToString()
  
          return self._steam.send_job(capsule)
docs: Send service method request
  
          :param message:
              proto message instance (use :meth:`SteamUnifiedMessages.get`)
              or method name (e.g. ``Player.GetGameBadgeLevels#1``)
          :type message: :class:`str`, proto message instance
          :param params: message parameters
          :type params: :class:`dict`
          :return: ``jobid`` event identifier
          :rtype: :class:`str`
  
          Listen for ``jobid`` on this object to catch the response.
  
          .. note::
              If you listen for ``jobid`` on the client instance you will get the encapsulated message