Rendez-vous
Pour configurer un agenda de type «â€Żrendez-vous », il faut définir les plages horaires d'ouverture (par exemple, «â€Żles lundis de 9 à 17 heures et le mercredi de 14 à 18 heures ») et un ou plusieurs types de rendez-vous ayant chacun une durée définie.
- des plages horaires régulières pour, par exemple, noter une ouverture tous les premiers lundis du mois ou le deuxième et le quatrième mercredis du mois.
- une plage horaire unique à une date donnée
L'agenda va aussi vous permettre de définir un délai minimal et maximal de réservation, des rappels par SMS et/ou courriel, et des permissions en visualisation et en gestion.
Types de Rendez-vous
Les types de rendez-vous comprennent un libellé et une durée, c'est tout. Ils vont permettre d'exposer des créneaux différents et adaptés pour des personnes qui viendraient par exemple pour faire un unique passeport ou pour d'autres qui viendrait en faire 4. Lorsque vous avez défini plusieurs type de rendez-vous différents dans un agenda, il peut être utile d'afficher ces types (rendez-vous pour 1 personne, rendez-vous famille...) dans le formulaire pour permettre à l'usager de choisir le type qui l'intéresse.
Les types de rendez-vous peuvent être exposés dans un champ liste configuré pour utiliser une source de donnée. Quelques minutes après la création d'un agenda rendez-vous, une source de donnée «â€ŻNom de l'agenda - Type de rendez-vous » est en effet disponible pour cela.
Vous donnez ainsi la possibilité à l'usager de choisir parmi les type de rendez-vous existants. Vous pouvez lier ce choix aux créneaux qui seront affichés dans la liste exposant les créneaux en procédant de la sorte :
- Donnez l'identifiant «â€Żmeeting_type » au champ liste des types de rendez-vous,
- Configurez le champ liste exposant les créneaux pour qu'il utilise comme source de données «â€ŻNom de l'agenda - Créneaux du type form_var_meeting_type_raw »
Si vous créez un type de rendez-vous de 30 min sur une plage horaire de 8h00 à 12h00, vous aurez 8 créneaux disponibles, le dernier affiché étant celui de 11h30 (il n'y a pas de créneau disponible à 12h00 qui est l'heure de fermeture).
Guichets
Il est possible de créer plusieurs guichets, permettant ainsi de multiplier le nombre de places disponibles pour un même créneau. Pour créer un nouveau guichet, il suffit de cliquer sur «â€ŻNouveau guichet » et de choisir le nom du nouveau guichet.
Les rendez-vous seront pris sur un guichet ou l'autre, indifféremment. Dans la vue calendaire, on verra quel est le guichet concerné par le rendez-vous.
Gestion globale
Par défaut, l'agenda est créé en gestion globale des guichets, cela signifie que la configuration des plages horaires d'ouverture et des exceptions est commune à tous les guichets.
Gestion unitaire
Mais il est possible de basculer en «â€ŻGestion unitaire des guichets » dans le menu burger. Chaque guichet peut alors être configuré indépendamment des autres, avec ses propres plages horaires et ses propres exceptions.
Les types de rendez-vous, les rappels, les délais de réservations et les permissions sont communs à tous les guichets. Pour mettre en place quelque chose de différent à ce niveau là, vous avez besoin d'un nouvel agenda et pas d'un nouveau guichet.
Vue calendaire des rendez-vous pris
Les agents ayant le rôle requis, accèdent à la vue calendaire des rendez-vous pris. Cette vue peut être :
- quotidienne pour exposer le détail des rendez-vous de la journée,
- hebdomadaire pour avoir une vue synthétique de la semaine en cours,
- mensuelle pour avoir une vue plus globale des rendez-vous pris, et voir le détail des rendez-vous au survol de la souris.
Paramétrage
Lorsque l'agenda est créé, un certain nombre de paramètres sont exposés dans des onglets dédiés.
Ressources partagées
Une ressource partagée (une voiture, un vidéoprojecteur...) peut être associée à un ou plusieurs agenda(s), l'objectif étant de permettre la réservation de cette ressource pour une période donnée.
Il faut commencer par créer la ressource concernée (depuis la barre latérale de la page d'accueil des agendas) avant de pouvoir l'associer à l'agenda.
Une fois l'association réalisée, les périodes de disponibilités de la ressource peuvent être affichées dans un formulaire en utilisant comme source d'un champ liste une URL du type
/api/agenda/SLUG-DE-LAGENDA/meetings/SLUG-DU-TYPE-DE-RDV/datetimes/?shared-resources=MA-SALLE
Une source de donnée est automatiquement créé en même temps qu'un agenda. Il est possible de la dupliquer pour créer une source de donnée dédiée à une ressource en ajoutant le paramètre ?shared-resources=MA-SALLE.
Il est possible d'afficher les périodes de disponibilités pour plusieurs ressources, en les séparant par des virgules :
?shared-resources=MA-SALLE1,MA-SALLE2
Paramètres d'affichage
Dans l'onglet «â€ŻParamètres d'affichage » de l'écran de configuration de l'agenda, il est possible de définir ce que l'on souhaite afficher dans la vue calendaire pour chaque rendez-vous. Cela prend la forme d'un gabarit dans lequel on peut utiliser un certain nombre de variables, par exemple :
- {{ booking.label }} : l'intitulé du rendez-vous
- {{ booking.user_name }} : le nom de l'utilisateur
- {{ booking.extra_data.QUELQUECHOSE }} : une donnée transmise lors de la réservation (lors de l'appel webservice, en passant QUELQUECHOSE dans les données à envoyer dans le corps de la requête
- {{booking.event.desk }} et {{booking.event.desk.slug }} : Le libellé et le slug du guichet sur lequel la réservation a eu lieu
Rappels de réservation
Chaque agenda permet de configurer un rappel (et un seul) pour chaque rendez-vous/évènement, indépendamment de ce qui sera fabriqué dans le workflow. Le rappel est désactivé par défaut.
Les rappels se font par courriel et/ou par SMS (si une plate-forme d'envoi de SMS est raccordée) et ils contiennent par défaut les informations de base telles que le lieu, la date et l’heure. Le texte de base ne peut être modifié. Ce qui peut être configuré :
- Le moment du rappel (entre 1 et 5 jours avant)
- Le canal ou les canaux utilisés (SMS et/ou courriel)
- Un texte personnalisé qui vient s'ajouter au texte de base (attention à ne pas dépasser 160 caractères pour les SMS).
Pour que ces rappels soient effectifs, l'appel webservice de réservation dans le workflow, doit contenir les paramètres user_email et/ou user_phone_number contenant respectivement le courriel / le numéro de mobile de l'usager, ainsi que l'URL de la demande (classiquement {{ form_url }}).
Les variables utilisées pour l'affichage sont utilisables pour les rappels.
Si le texte par défaut, non modifiable, ne correspond pas à ce qui est souhaité pour le rappel, il est toujours possible de paramétrer une action SMS ou courriel à la place.
Permissions
La configuration des permissions permet d'associer à l'agenda :
- un rôle de visualisation pour l'accès à la vue calendaire des rendez-vous pris,
- un rôle d'édition pour le paramétrage de l'agenda (périodes horaires, types de rendez-vous, périodes d'exclusion, rappels, délais de réservation...)
Délais de réservation
Par défaut, les agendas sont configurés pour permettre la prise de rendez-vous au plus tard la veille du rendez-vous et jusqu'à 56 jours avant. Mais il est donc possible d'indiquer des valeurs différentes en fonction de vos besoins en définissant un nombre de jours minimal (borne incluse) et un nombre de jours maximal (borne exclue). Il faut entendre ces journées en termes calendaires (de 00h00 à 23h59).
- Un délai minimal réglé à 0 permet une réservation le jour même
- Un délai minimal réglé à 1 interdit les réservations sur le jour même et permet une réservation le lendemain entre 00h00 et 23h59
L’option « Ignorer les délais de réservation lors de la réservation backoffice » désactive le délai minimal de prise de rendez-vous pour les réservations effectuées depuis le backoffice du module de démarches et prolonge le délai maximal de réservation jusqu’à un an.

Exposer les créneaux horaires dans un formulaire
Les créneaux disponibles peuvent être exposés dans un champ liste configuré pour utiliser une source de donnée. Quelques minutes après la création d'un agenda rendez-vous, une source de donnée «â€ŻAgendas - nom du type de rendez-vous » est en effet disponible pour chaque type de rendez-vous et il suffit de la sélectionner dans la liste des sources de données «â€ŻAgendas ». Le champ liste configuré en mode «â€ŻHoraires » présentera alors sous forme calendaire l'ensemble des créneaux disponibles.
L'ancienne méthode, était de sélectionner «â€ŻURL du JSON » dans la liste des sources de données, et d'indiquer :
{{agendas_url}}api/agenda/AGENDA/meetings/TYPE-DE-RDV/datetimes/
Indépendamment du délai de réservation configuré au niveau de l'agenda, on peut choisir de n'afficher les créneaux qu'à partir d'une certaine date. Le champ «â€ŻDate d'alignement » disponible quand on sélectionne le mode d'affichage «â€ŻHoraires » pour la liste, accepte une date pouvant provenir d'un gabarit.
Dans les «â€ŻParamètres supplémentaires » du champ liste, le réglage «â€ŻAfficher les éléments désactivés » (désactivé par défaut) permet d'afficher pour information, en grisé, les créneaux déjà réservés.
Lorsque l'usager aura choisi un créneau et validé le formulaire, il est nécessaire que le workflow soit correctement configuré pour enregistrer la réservation dans l'agenda.
Changer les horaires : exceptions et calendriers d'indisponibilités
Exceptions
Les agendas définissent, de façon récurrente, les horaires d'ouverture pour une semaine type mais il est possible de définir pour chaque guichet (ou globalement pour l'agenda) des périodes pendant lesquelles les horaires normaux ne s'appliquent pas : les «â€Żexceptions ». Il peut y avoir des exceptions parce qu'un jour est férié, parce qu'une personne est absente ou simplement parce que les horaires d'ouverture changent durant une période donnée.
Les exceptions permettent de définir une date/heure de début et une date/heure de fin, les créneaux indiqués sont alors indisponibles entre les bornes indiquées. Dans l'écran d'accueil de l'agenda, il est possible de d'«â€Żajouter une exception » (au niveau des périodes horaires) :
- manuellement en saisissant le début et la fin de chaque exception,
- ou, après avoir cliqué sur l’icône clé, en face de «â€ŻExceptions », via un fichier (.ics) qui pourra être ajouté ponctuellement ou importé automatiquement toutes les heures si ce fichier est accessible depuis une URL (nota : seules les exceptions dans les 600 jours à venir sont importées).
Périodes d'indisponibilité
Chaque guichet dispose d'un calendrier d'indisponibilité «â€ŻJours fériés » prédéfini, qui peut être désactivé si nécessaire.
Par défaut, les agendas sont créés avec des périodes d'indisponibilité qui correspondent aux jours fériés français. Mais il est possible, depuis la page d'accueil des agendas, d'ajouter d'autres «â€ŻCalendriers d'indisponibilité » qui seront autant de périodes pendant lesquelles aucune prise de rendez-vous n'est possible.
Une fois que le calendrier d'indisponibilité est créé, il est possible de l'associer à un agenda de type rendez-vous en allant dans la page de paramétrage de ce dernier et en cliquant sur l'icône de la petite clé en face de «â€ŻExceptions ». En cas de conflit avec des réservations existantes, un message d'alerte est affiché.
Après configuration, le calendrier d'indisponibilité est exposé dans la liste des exceptions de l'agenda concerné.
Le calendrier d'indisponibilité peut être alimenté par un fichier ICS.
Mettre des couleurs aux rendez-vous
Il est possible d'afficher des couleurs sur les créneaux réservés dans un agenda, ces couleurs sont sélectionnées automatiquement, elles ne sont pas paramétrables. Par défaut, les rendez-vous sont en bleu.

Dans l'appel de réservation, dans le corps de la requête, il faut passer le nouveau paramètre «â€Żuse_color_for ». Sa valeur doit être une chaîne de caractères et entraînera l'attribution d'une couleur. Si le libellé est inconnu, une couleur de la palette est attribuée, sinon on réutilise la couleur déjà attribuée pour cette chaîne de caractères.

Il y a 8 couleurs en tout, le neuvième libellé reprend la première couleur.

Une légende s'affiche en bas des vues calendriers, elle indique la correspondance entre libellés et couleurs présentes sur la vue courante.

Visualisation des rendez-vous et export .ics
Envoyer le fichier .ics d'un rendez-vous par courriel
Il est possible de joindre à un courriel un fichier .ics d'un rendez-vous. La personne recevant ce courriel dans son logiciel de messagerie n'aura qu'à cliquer sur le fichier .ics pour mettre le rendez-vous dans son agenda. Pour suivre le tutoriel, c'est par là.
Fichier .ics de la liste des rendez-vous
Publik offre une vue sur les agendas directement depuis son backoffice, il suffit d'attribuer les droits de visualisation sur l'agenda concerné aux rôles autorisés. Les personnes autorisées disposeront alors d'une vue calendaire des rendez-vous, vue quotidienne ou mensuelle. C'est la méthode recommandée.
Alternativement, il est possible d'exporter la liste des rendez-vous vers un logiciel d'agenda type Zimbra, Outlook, Thunderbird, etc., à travers une vue «â€Żics » des demandes.
Ces logiciels accéderont à une adresse du type :
{{eservices_url}}api/forms/IDENTIFIANT-DU-FORMULAIRE/ics/IDENTIFIANT-CHAMP-DATE?api-user=IDENTIFIANT-API&api-key=CLÉ-API
L'URL ci-dessus retourne uniquement les demandes en attente. Il est possible d'inclure aussi les demandes traitées en créant une vue personnalisée, ou en ajoutant à l'url un paramètre filter=all
{{eservices_url}}api/forms/IDENTIFIANT-DU-FORMULAIRE/ics/IDENTIFIANT-CHAMP-DATE?api-user=IDENTIFIANT-API&api-key=CLÉ-API&filter=all
Il est donc nécessaire de disposer d'une clé et d'un identifiant API pour construire l'adresse en question. Pour cela, vous devez créer un rôle dédié, par exemple «â€ŻAccès API » (qui ne contiendra aucun utilisateur).
Puis, dans l'entrée Paramètres du menu latéral, vous pourrez configurer un nouvel accès aux API en indiquant le rôle «â€ŻAccès API ». Vous avez désormais un identifiant et une clé d'accès.
Mais il faut encore que ce rôle ait accès à la démarche, pour cela il doit être associé à une fonction dans le workflow (tous les rôles associés à une fonction ont alors accès à la démarche concernée). Dans le workflow, il faut ajouter une fonction «â€ŻAccès ics » (par exemple), et l'associer au rôle «â€ŻAccès API » (dans le formulaire ou dans le workflow).
Il est possible de remplacer, dans l'URL, l'identifiant du champ date par celui d'un champ texte contenant une date, par exemple une donnée de traitement où le jour et l'heure du rendez-vous seraient stockés.
