Appointment From ICS

Rexpondo can automatically extract appointment information (start time, end time and meeting link) from ICS calendar attachments received by e-mail and write the values into dynamic fields on the ticket or on the article. This is implemented as a Generic Agent module (Kernel::System::GenericAgent::AppointmentFromICS) that can be plugged into any event-based or scheduled Generic Agent job.

How ICS Attachments Are Recognised

For every article processed by the job, all attachments are inspected. An attachment is treated as an ICS file when at least one of the following conditions is true:

  • the file name ends with .ics;

  • the MIME content type is text/calendar;

  • the attachment has no file extension at all (some mail clients send the invite as a body part without a name).

The module parses the DTSTART and DTEND properties of the first VEVENT found and looks for the meeting URL in the following ICS properties (in order):

  • X-MICROSOFT-SKYPETEAMSMEETINGURL

  • X-GOOGLE-CONFERENCE

Prerequisites

Create the dynamic fields you want to populate before configuring the job (see Dynamic Fields):

  • one Date / Time dynamic field for the appointment start (required);

  • optionally a Date / Time dynamic field for the appointment end;

  • optionally a Text dynamic field for the meeting link. To render it as a clickable link in the ticket sidebar, set the Show link template of the dynamic field to:

    [% Data.Value | uri %]
    

Configuring the Generic Agent Job

  1. Open Generic Agent (see Generic Agent) and create a new job.

  2. In the Job Trigger section select the event-based trigger and pick the ArticleCreate event so that every incoming article is inspected.

  3. In the Execute Custom Module section fill in:

    • Module: Kernel::System::GenericAgent::AppointmentFromICS

    • Params:

      Key

      Value

      Required

      DynamicFieldStart

      name of the start date/time DF

      yes

      DynamicFieldEnd

      name of the end date/time DF

      no

      DynamicFieldMeetingLink

      name of the meeting-link text DF

      no

  4. Restrict the job with the usual Select Tickets filter (e.g. only on a specific queue or for a specific sender domain) to avoid scanning every single article.

  5. Save the job.

The module automatically detects whether each configured dynamic field is attached to the Ticket or to the Article object and writes the value accordingly.