Gateway Timer not Triggering the Session Handler

Hello, I have a project where I am using a Gateway Timer script to trigger a session handler, that triggers a view handler that calls some custom methods. However, I'm checking my logs on the gateway and I'm not seeing the session handler sending the params to the view anymore.

Setting the session_id in the startup:

Gateway Script:

# Timer Script - every 2 minutes per project (MF1, MF2, etc.)
# Created by AMS2 - Updated with active session check and writeAsync

logger = system.util.getLogger("ShiftTimer")

try:
    hmi_ip = '10.147.10.120'

    sessions = system.perspective.getSessionInfo()
    session_id = None

    for s in sessions:
        logger.info("Session found: ID {}, IP {}".format(s["id"], s["clientAddress"]))
        if s["clientAddress"] == hmi_ip:
            session_id = s["id"]
            break  # Stop at first match

    if session_id is None:
        logger.warn("No active session found from IP: {}".format(hmi_ip))
    else:
        # Read tags only if session is valid
        machine = system.tag.readBlocking(["[OMA]Pipe/MF1/job_data/MachineID"])[0].value
        machine_name = system.tag.readBlocking(["[OMA]Pipe/MF1/job_data/MachineDescription"])[0].value

        # Query shift data
        ds = system.db.runNamedQuery("MF1_Dashboard", "shift/GetShiftByMachine", {"machine_id": machine})
        pyDS = system.dataset.toPyDataSet(ds)

        current_start_time_dt = pyDS[0]["start_time"] if pyDS.getRowCount() > 0 else None
        current_end_time_dt = pyDS[0]["end_time"] if pyDS.getRowCount() > 0 else None
        current_shift = pyDS[0]["shift"] if pyDS.getRowCount() > 0 else None

        old_start_time_dt = pyDS[1]["start_time"] if pyDS.getRowCount() > 1 else None
        previous_end_time_dt = pyDS[1]["end_time"] if pyDS.getRowCount() > 1 else None
        previous_shift = pyDS[1]["shift"] if pyDS.getRowCount() > 1 else None

        # Async write
        system.tag.writeAsync([
            "[OMA]Pipe/MF1/Shift_Info/StartTime",
            "[OMA]Pipe/MF1/Shift_Info/EndTime",
            "[OMA]Pipe/MF1/Shift_Info/Shift",
            "[OMA]Pipe/MF1/Shift_Info/old_start_time_dt",
            "[OMA]Pipe/MF1/Shift_Info/old_end_time_dt",
            "[OMA]Pipe/MF1/Shift_Info/last_shift_processed"
        ], [
            current_start_time_dt,
            current_end_time_dt,
            current_shift,
            old_start_time_dt,
            previous_end_time_dt,
            previous_shift
        ])

        # Send to session
        system.perspective.sendMessage(
            project="MF1_Dashboard",
            messageType="reset_tags",
            scope="session",
            sessionId=session_id,
            payload={
                "machine": machine,
                "machine_name": machine_name,
                "old_start_time_dt": old_start_time_dt,
                "trigger_ip": hmi_ip
            }
        )
        logger.info("Message sent to session {} for machine {}".format(session_id, machine_name))

except Exception as e:
    logger.error("Timer script failed: {}".format(e))

Session Handler:

def handleMessage(session, payload):

    #Session Message Handler for "reset_tags"
    logger = system.util.getLogger("Shift Timer")
    
    machine = payload["machine"]
    machine_name = payload["machine_name"]
    old_start_time_dt = payload["old_start_time_dt"]
    trigger_ip = payload.get("trigger_ip", "unknown")
    

    logger.info("Reset tags message received for {} from IP {}".format(machine_name, trigger_ip))
    
    # Forward payload to view
    system.perspective.sendMessage(
        messageType="reset_tags",
        scope="view",
        payload={
            "machine": machine,
            "machine_name": machine_name,
            "old_start_time_dt": old_start_time_dt,
            "trigger_ip": trigger_ip
        }
    )
    
    logger.info("Forwarded reset_tags message to view for {}".format(machine_name))

View:

def onMessageReceived(self, payload):
	system.util.getLogger("ResetTagsHandler").info("Handler triggered with:{}".format(payload))	
		
	machine = payload["machine"]
	machine_name = payload["machine_name"]
	old_start_time_dt = payload["old_start_time_dt"]
	trigger_ip = payload.get("trigger_ip", "unknown")
	
	logger = system.util.getLogger("Root Component Reset Tags Handler")
	logger.info("Reset requested from IP: {}".format(trigger_ip))
	
	#calling reset method
	self.getChild("Header").reset_tags(machine, machine_name, old_start_time_dt, trigger_ip)
	

I used system.util.sendMessage() instead of system.perspective.sendMessage(). That seemed to fix my issue.