Pour mon application j'utilise laravel 5.3
et un paquet appelé markuspoerschke/iCal
que vous pouvez trouver here. Lorsqu'un étudiant souhaite s'inscrire à son calendrier, nous générons une URL qui peut être renseignée dans Google Agenda et Outlook. Sauf le dernier outlook
mentionné, il n'importait aucun événement.Outlook-web-app n'important pas les événements de mon icalendar généré
Exemple de la façon dont notre ICS généré ressemble. Cela contient 1 événement avec la description de 'test'.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:www.onderwijsonline.nl
X-PUBLISHED-TTL:PT15M
BEGIN:VEVENT
UID:58e5f21fc2551
DTSTART;TZID=Europe/Amsterdam:20170406T090000
SEQUENCE:0
TRANSP:OPAQUE DTEND;TZID=Europe/Amsterdam:20170406T140000 URL:http://oo.dev/calendar/event/420
SUMMARY:Test
CLASS:PUBLIC
DTSTAMP:20170406T094535Z
END:VEVENT
END:VCALENDAR
Le script qui appelle le paquet pour générer ceci:
public function getIcal($token = null)
{
$user = $this->userRepository->getByToken($token);
$vCalendar = new \Eluceo\iCal\Component\Calendar('www.onderwijsonline.nl');
$vCalendar->setPublishedTTL('PT15M');
if (!is_null($user)) {
/**
* Calendar events
*/
$events = $this->calendarRepository->getEventsForUser($user->id, Carbon::now()->subWeeks(2), Carbon::now()->addWeeks(6));
foreach ($events as $event) {
$vEvent = new \Eluceo\iCal\Component\Event();
$vEvent
->setUseTimezone(true)
->setUseUtc(false)
->setDtStart(Carbon::parse($event['start']))
->setDtEnd(Carbon::parse($event['end']))
->setNoTime(($event['allDay'] == 1 ? true : false))
->setUrl($event['href'])
->setDescription($event['description'])
->setSummary($event['title']);
$vCalendar->addComponent($vEvent);
}
/**
* Project events
*/
$events = $this->calendarRepository->getEventsForProjects($user->id, null, null);
foreach ($events as $event) {
$vEvent = new \Eluceo\iCal\Component\Event();
$vEvent
->setUseTimezone(true)
->setUseUtc(false)
->setDtStart(Carbon::parse($event['start']))
->setDtEnd(Carbon::parse($event['end']))
->setNoTime(($event['allDay'] == 1 ? true : false))
->setUrl($event['href'])
->setSummary($event['title']);
$vCalendar->addComponent($vEvent);
}
/**
* Timetable events
*/
$events = $this->calendarRepository->getEventsForTimetables($user->id, Carbon::now()->subWeeks(2), Carbon::now()->addWeeks(6));
foreach ($events as $event) {
$vEvent = new \Eluceo\iCal\Component\Event();
$vEvent
->setUseTimezone(true)
->setUseUtc(false)
->setDtStart(Carbon::parse($event['start']))
->setDtEnd(Carbon::parse($event['end']))
->setNoTime(($event['allDay'] == 1 ? true : false))
->setSummary($event['title']);
$vCalendar->addComponent($vEvent);
}
}
header('Content-Type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename=onderwijsonline.ics');
return $vCalendar->render();
}
Comme je l'ai mentionné plus haut, cette configuration exacte fonctionne très bien pour Google Calendar, mais pas pour les perspectives.
Est-ce que quelqu'un sait pourquoi et comment cela peut-il être corrigé?