code: async def send_rpc_message(self, message, context):
          
  
          conn_string = message.get('connection_string')
          rpc_id = message.get('rpc_id')
          address = message.get('address')
          timeout = message.get('timeout')
          payload = message.get('payload')
          client_id = context.user_data
  
          self._logger.debug("Calling RPC %d:0x%04X with payload %s on %s",
                             address, rpc_id, payload, conn_string)
  
          response = bytes()
          err = None
          try:
              response = await self.send_rpc(client_id, conn_string, address, rpc_id, payload, timeout=timeout)
          except VALID_RPC_EXCEPTIONS as internal_err:
              err = internal_err
          except (DeviceAdapterError, DeviceServerError):
              raise
          except Exception as internal_err:
              self._logger.warning("Unexpected exception calling RPC %d:0x%04x", address, rpc_id, exc_info=True)
              raise ServerCommandError('send_rpc', str(internal_err)) from internal_err
  
          status, response = pack_rpc_response(response, err)
          return {
              'status': status,
              'payload': base64.b64encode(response)
          }
docs: Handle a send_rpc message.
  
          See :meth:`AbstractDeviceAdapter.send_rpc`.