Aller au contenu

Données de session

L’orchestrateur peut suivre le déroulé de chaque salle et l’écrire sur disque, sous votre contrôle.

Pour chaque salle : son identifiant et son nom, ses horodatages de création et de fin, et le détail des participants. Pour chaque participant : ses périodes de présence (arrivées et départs), son temps de parole, ses périodes de caméra, son rôle, son nombre de messages, ses réactions, ses mains levées et la tenue de sa connexion. La session enregistre aussi les périodes de partage d’écran, le contenu du chat (texte, fichiers, réactions emoji) et une chronologie des évènements de la réunion.

Le temps de parole est mesuré à la voix, et non à la présence d’un micro branché : écouter en silence ne compte pas.

Une salle est une adresse que l’on réutilise : le même lien sert au cours de cette semaine et à celui de la semaine prochaine. Chacun de ces usages est une réunion distincte, avec sa propre liste de présence, sa propre chronologie et son propre tableau de bord.

La séparation se fait sur le temps pendant lequel la salle reste vide. Si tout le monde disparaît moins d’une minute, la réunion reprend : quelqu’un qui rafraîchit sa page ou une coupure réseau ne coupe pas une réunion en deux. Au delà, la réunion est close et la prochaine arrivée en ouvre une nouvelle. La liste de présence de la semaine dernière ne gagne donc jamais une ligne cette semaine, et son lien continue d’ouvrir la réunion de la semaine dernière.

Une réunion commence quand la première personne arrive, pas quand la salle est créée : une salle préparée la veille par un LMS n’affiche pas une réunion de vingt heures.

La chronologie est bornée. Une réunion très animée finit par cesser d’y ajouter des lignes, et la session le dit explicitement (eventsTruncated) plutôt que de laisser croire à une seconde moitié silencieuse. Les totaux par participant, eux, restent complets.

Un message corrigé par son auteur est enregistré dans ses deux versions : text contient le texte final, celui que les participants ont lu, et originalText le texte d’origine, à côté du marqueur edited.

Chaque participant porte aussi une empreinte d’identité (identity), stable d’une reconnexion à l’autre. Elle sert à reconnaître la même personne quand elle rafraîchit sa page ou revient après une coupure, sans jamais exposer son jeton de session : c’est une empreinte non réversible.

Elle est calculée à partir d’un sel conservé dans le répertoire des sessions, ce qui la rend stable d’un redémarrage à l’autre : sans cela, une personne qui se reconnecte après un redémarrage compterait pour deux dans la liste de présence. Ce sel est aussi sensible que les jetons de session qu’il remplace, et n’est lisible que par le service.

La session n’est close que lorsque la salle se vide réellement. Tant qu’une personne est présente, sa période de présence reste ouverte, et son départ est enregistré au moment où il a lieu.

Les modérateurs peuvent en obtenir une synthèse au format CSV depuis la réunion, sans passer par le JSON (voir Modération), et consulter le tableau de bord de la réunion pendant comme après celle-ci.

  • Les sessions sont écrites en JSON sous le répertoire VUISIO_SESSIONS_DIR (par défaut /var/lib/vuisio/sessions), avec un sous-répertoire par session contenant un fichier session.json.
  • Elles sont consultables par gRPC via RoomManagement.GetSessionData (à partir de l’identifiant de salle), qui renvoie le JSON de la session.
  • VUISIO_SESSIONS_RETENTION_DAYS fixe combien de jours une réunion terminée est conservée sur disque. Trente jours par défaut. Passé ce délai, le répertoire de la session est supprimé et le lien de son tableau de bord cesse de fonctionner. La valeur 0 conserve indéfiniment, pour un exploitant qui archive ailleurs.
  • Le délai court à partir de la fin de la réunion, pas de sa création : une réunion ouverte il y a des mois et close hier est une réunion d’hier.
  • Une réunion encore en cours n’est jamais supprimée, quel que soit son âge.
  • Une session terminée reste en mémoire 10 minutes (le temps de servir une requête en cours), puis elle est évincée de la mémoire ; les données restent sur disque et sont relues au besoin.
  • L’état est persisté sur disque toutes les 30 secondes, et à l’arrêt du service.

Ces données restent sur votre infrastructure et ne sont envoyées à aucun tiers. Voir aussi Souveraineté et vie privée.