Outlook resource doesn't respond to invite built with php

one text

I am using PHP to generate an iCal invite to be sent to the inbox of an (MS365-based) Outlook room resource. The resource is set to auto process invites and correctly does so when invites are sent from Outlook, Zoom, GotoMeeting, etc.

When the PHP-generated invite hits the resource's inbox, it is correctly displayed as an invite, with an RSVP prompt, but the resource does not process it.

outlook invite display

1

I have compared my invite against those from Outlook and other providers and can't pin down any differences that seem like they should prevent a response.

Example of my iCal data:

BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Eastern Standard Time
BEGIN:STANDARD
DTSTART:16010101T020000
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN=John Johnson:mailto:jjohnson@company.com
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Main
Conference Room:mailto:MainConferenceRoom@company.com
DESCRIPTION;LANGUAGE=en-US:Test Meeting using handcrafted invite
description
UID:630f7c9ad9b5a630f7c9ad9b5b630f7c9ad9b5c
SUMMARY;LANGUAGE=en-US:Test Meeting using handcrafted invite
DTSTART:20220901T083000Z
DTEND:20220901T093000Z
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20220831T112200Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0 
LOCATION;LANGUAGE=en-US:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:107365
X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-LOCATIONS:[]
BEGIN:VALARM
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT15M
ACTION:DISPLAY
END:VALARM
END:VEVENT
END:VCALENDAR

This is encoded as base64 in the email and passes validation.

Has anyone accomplished this? Is there anything jumping out that's preventing this from being processed correctly? Thanks in advance.

EDIT: I think maybe the room resource does not recognize itself as an attendee. When I direct this same invite to my personal inbox, Outlook displays an RSVP button in the message preview column and I see the text "[name of email sender] invited you on behalf of [organizer]". Both of these are missing when the invite goes to the resource. Compared to invites generated by Outlook, the attendee info is exactly the same. The time is also returned differently in my personal inbox(displays as if I'm in UTC), but this is a bridge I'll cross after the resource is accepting invites.

Source