Agenda de type Rendez-vous
Un agenda de type Rendez-vous permet de proposer aux usagers la prise de rendez-vous sur des créneaux définis, en tenant compte de règles de disponibilité, de la durée des rendez-vous et de délais de réservation.
Pour mettre en place une démarche de prise de rendez-vous en ligne, la première étape est de créer un nouvel agenda, puis de le paramétrer et enfin de l'utiliser dans un formulaire et un workflow.
Comment paramétrer un agenda de type Rendez-vous ?
⚙️ Accès dans le backoffice :
Agendas > 👉 un agenda > Paramétrage
Chaque type d'agenda comporte des paramètres communs et des paramètres spécifiques détaillés ci-dessous.
Types de rendez-vous
Les types de rendez-vous permettent de proposer des créneaux de durées différentes en fonction de l’objet du rendez-vous. Ils sont particulièrement utiles lorsque tous les rendez-vous ne nécessitent pas le même temps de traitement.
Chaque type de rendez-vous est défini par :
- un libellé (par exemple : inscription, dépôt, retrait) ;
- une durée, exprimée en minutes (par exemple : 15, 30 ou 45 minutes).

Guichets
Un agenda de type Rendez-vous peut contenir un ou plusieurs guichets. Chaque type de rendez-vous est défini par un libellé (par défaut : Guichet 1).
Les guichets permettent de gérer la capacité d’accueil en parallèle sur un même lieu (avec un unique agenda). Ils sont utilisés pour augmenter le nombre de rendez-vous possibles sur un même créneau, sans multiplier les agendas.
Les types de rendez-vous, les rappels, les délais de réservation ainsi que les permissions sont communs à l’ensemble des guichets d’un même agenda.
Si des règles différentes doivent être appliquées sur ces éléments, il est nécessaire de créer un nouvel agenda.
La création d’un nouveau guichet ne permet pas de différencier ces paramètres.
Lors de la réservation les rendez-vous sont affectés indifféremment à l’un ou l’autre guichet. Dans la vue calendaire, le guichet associé à chaque rendez-vous est visible.
Gestion globale
Par défaut, un agenda est configuré en gestion globale des guichets. Les plages horaires d’ouverture et les exceptions s’appliquent alors à l'ensemble des guichets.
Gestion unitaire
Il est possible de «â€ŻBasculer en gestion unitaire des guichets » (depuis le menu kebab). Chaque guichet peut alors être configuré indépendamment, avec ses propres plages horaires et ses propres exceptions.

Plages horaires
Pour qu’un agenda de type Rendez-vous puisse proposer des créneaux, il est nécessaire de définir des plages horaires d’ouverture.
Il est possible de définir différents types de plages horaires afin de s’adapter à l’organisation du service.
Plage horaire régulière
Les plages horaires régulières permettent de définir des ouvertures récurrentes dans le temps, par exemple :
- tous les lundis et jeudis de 9h à 12h et de 14h à 17h ;
- le premier lundi de chaque mois de 13h à 16h30 ;
Plage horaire unique
Il est également possible de définir une plage horaire unique, associée à une date précise. Ce type de plage est adaptée pour une ouverture exceptionnelle.

Exceptions
Les exceptions permettent de définir des périodes pendant lesquelles les plages horaires habituelles ne s’appliquent pas.
Elles servent à rendre indisponibles certains créneaux.
Les exceptions peuvent être définies globalement pour l’agenda ou spécifiquement pour chaque guichet, selon le mode de gestion choisi (globale ou unitaire).
Elles sont généralement utilisées pour :
- les jours fériés ;
- les absences (congés, formation, indisponibilité ponctuelle) ;
- des changements temporaires d’horaires.
Il est possible d’« Ajouter une exception » en renseignant la date et heure de début et de fin ainsi qu'un libellé. Tous les créneaux compris entre ces deux bornes sont automatiquement rendus indisponibles à la réservation.
Il est également possible de gérer les exceptions via des sources d'exceptions (ou calendrier d'exceptions) en cliquant sur l'icône de la clé à molette :
- activation d’une source d’exceptions. Par défaut, la source jours fériés est activée, ce qui permet d’exclure automatiquement les jours fériés des créneaux proposés ;
- import d’un fichier calendrier (.ics) ;
- connexion à une URL de calendrier distant, synchronisée automatiquement (toutes les heures).

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
Exposer les types de rendez-vous dans un formulaire
Les types de rendez-vous peuvent être proposés à l’usager via un champ de type liste dans le formulaire, configuré pour utiliser une source de donnée.
Quelques minutes après la création d’un agenda de type Rendez-vous, une source de données dédiée devient automatiquement disponible :
«â€ŻNom de l’agenda – Types de rendez-vous ».
Cette source permet d’afficher dynamiquement les types de rendez-vous définis dans l’agenda et de laisser l’usager choisir celui qui correspond à l'objet de sa demande.
Exemple de génération des créneaux
Lorsque vous créez un type de rendez-vous d’une durée de 30 minutes sur une plage horaire allant de 8h00 à 12h00 :
- 8 créneaux sont générés automatiquement ;
- le dernier créneau proposé commence à 11h30 ;
- aucun créneau n’est affiché à 12h00, qui correspond à l’heure de fin de la plage horaire.
Exposer les créneaux horaires dans un formulaire
Vous pouvez donner la possibilité à l'usager de choisir parmi les types 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 »
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.
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.
