Guide d'intégration LMS & Éducation

Intégrez Vedview avec votre LMS

Connectez des classes virtuelles en direct, des tableaux blancs collaboratifs, des enregistrements cloud et des sessions multi-caméras dans Moodle, Canvas, WordPress ou vos plateformes personnalisées.

REST & Webhooks
Intégration fluide LMS, Laravel, Node.js & iframe
< 250ms
Infrastructure WebRTC mondiale à latence ultra-faible
Cloud S3
Enregistrement auto avec relecture interactive synchronisée
Tenant Safe
Isolation cryptographique stricte par clé d'API
1. Aperçu

Architecture d'intégration

Vedview propose deux manières flexibles de connecter votre plateforme éducative :

Option A : Connexion LMS & Portails

Vedview assure une intégration transparente pour les plateformes éducatives. Que vous utilisiez Moodle, Canvas, WordPress (LearnDash/TutorLMS) ou un LMS scolaire sur mesure, connectez des salles interactives et suivez les présences grâce à votre clé d'API d'organisation dédiée.

Configuration rapide et fiable

Option B : API REST & Webhooks sur mesure

Pour les applications web et mobiles sur mesure conçues avec Laravel, Node.js, Python, React, Flutter ou Next.js, générez des URL de connexion signées, personnalisez les tests préalables et intégrez les sessions via nos points d'API REST épurés.

Contrôle programmatique total
2. Authentification & Clé API

Obtention de vos identifiants

Chaque organisation dans Vedview dispose d'une Clé API d'organisation dédiée (au format UUID). Cette clé garantit des sessions isolées, une image de marque dédiée et un stockage privé des enregistrements.

Points de terminaison de base
API des salles & réunions :
https://video.vedview.com/api/
Enregistrements & Webhooks :
https://video.vedview.com/api/recordings/
Comment obtenir une Clé API ?Les clés d'API sont attribuées directement par notre équipe d'ingénierie. Contactez-nous à contact@vedview.com ou soumettez une demande sur notre page Tarifs & API. Nous configurerons votre organisation dédiée et vous transmettrons vos identifiants de production en toute sécurité. Transmettez votre clé dans les requêtes ou dans l'en-tête HTTP x-api-key: VOTRE_CLE.
3. Protocole BigBlueButton & Compatibilité SDK

Standard universel pour LMS & SDK open source

Vedview implémente le protocole standard BigBlueButton REST. Cela signifie que vous n'avez pas besoin d'écrire d'algorithmes de hachage personnalisés ni de maintenir des wrappers SDK propriétaires. Vous pouvez intégrer Vedview directement dans les plugins LMS existants et les bibliothèques open source.

Plugins LMS compatibles
  • Moodle : Module d'activité officiel mod_bigbluebuttonbn
  • Canvas LMS : Outil de conférences intégré avec fournisseur BBB
  • WordPress : Extensions BBB pour LearnDash, Tutor LMS, LifterLMS, Sensei
  • LTI personnalisé : Toute passerelle BigBlueButton compatible LTI 1.1 / 1.3
SDK open source populaires
  • Node.js / TS : npm install bigbluebutton-api-js
  • PHP / Laravel : composer require bigbluebutton/bigbluebutton-api-php
  • Python : pip install bigbluebutton-api-python
  • Java / Ruby : Clients natifs BBB
Exemple sans configuration superflue avec bigbluebutton-api-js
import bbb from 'bigbluebutton-api-js';

const api = bbb.api('https://video.vedview.com/api/', process.env.VEDVIEW_API_KEY);

// 1. Créer la salle (Zéro SHA-1 boilerplate)
const createUrl = api.administration.create({
  name: 'Cours de Math 101',
  meetingID: 'class-101',
  moderatorPW: 'host123',
  attendeePW: 'student123',
  record: true,
  autoStartRecording: true
});
await fetch(createUrl);

// 2. Générer l'URL d'accès pour l'élève
const joinUrl = api.administration.join({
  fullName: 'Zaid Ali',
  meetingID: 'class-101',
  password: 'student123',
  redirect: true
});
console.log('Rediriger l\'élève vers :', joinUrl);
4. Configuration LMS & Portails

Connexion de votre plateforme éducative

Si votre établissement ou académie utilise Moodle, Canvas, WordPress ou un portail LMS sur mesure, connectez Vedview en quelques étapes simples :

1Configuration LMS & Moodle

  1. Demandez votre clé d'API d'organisation auprès de notre équipe à contact@vedview.com.
  2. Dans vos paramètres LMS ou module d'activité, définissez l'URL du serveur sur : https://video.vedview.com/api/
  3. Saisissez votre Clé API d'organisation comme secret d'authentification.
  4. Enregistrez les modifications. Les enseignants peuvent désormais lancer des classes interactives directement depuis les pages de cours, et les élèves les rejoignent automatiquement.

2WordPress & Portails Web sur mesure

Utilisez nos points de terminaison REST ou l'intégration iframe sécurisée. Dans les réglages de votre backend ou de votre plugin, configurez le point de terminaison du serveur et votre clé d'API. La création des sessions, les tableaux blancs en direct et les enregistrements automatiques sont gérés de manière transparente.

5. Flux de travail API LMS personnalisée

Le flux de lancement de classe en 2 étapes

Lorsque vous développez votre propre tableau de bord (comme une plateforme personnalisée Laravel ou Node), le cycle de vie d'une session suit deux étapes simples :

Étape 1 : Serveur à serveur

Créer la salle & Configurer

Votre backend LMS appelle /api/create avec le nom de la session, les mots de passe modérateur/participant et votre URL de redirection de retour.

Étape 2 : Lancement client

Rediriger l'utilisateur avec l'URL d'accès

Générez l'URL signée /api/join pour l'utilisateur (Enseignant ou Élève). Redirigez le navigateur ou chargez le lien dans une iframe.

Comment calculer les sommes de contrôle (Checksums)

Pour empêcher toute falsification, chaque requête doit inclure une somme de contrôle cryptographique calculée ainsi :

checksum = sha1(actionName + queryString + organizationApiKey)

Exemple : Pour action = "create" et requête "meetingID=class-101&name=Math+101", calculez le SHA-1 de "createmeetingID=class-101&name=Math+101" + VOTRE_CLE_API. (Les deux formats SHA-1 et SHA-256 sont pris en charge).

6. Contrôles de réunion & Points de terminaison

Contrôles complets du cycle de vie des réunions

Au-delà de la création et de l'accès aux salles, Vedview fournit des points de terminaison REST pour inspecter la présence des participants en direct, vérifier les sessions actives et clôturer les classes à distance.

Point de terminaisonMéthodeParamètres clésDescription
/api/createGETmeetingID, name, moderatorPW, attendeePWInitialise une nouvelle session, applique la configuration de la salle et les options d'enregistrement.
/api/joinGETmeetingID, fullName, password, redirectAuthentifie l'élève/l'enseignant et rejoint la salle avec les permissions désignées.
/api/isMeetingRunningGETmeetingID, checksumVérification booléenne rapide si la réunion est en cours. Renvoie <running>true|false</running>.
/api/getMeetingInfoGETmeetingID, password, checksumRenvoie les métriques en direct : nombre total de participants, liste des présents avec rôles et heures d'arrivée.
/api/endGETmeetingID, password, checksumTermine la classe à distance, redirige les utilisateurs vers logoutURL et finalise les enregistrements.
/api/getMeetingsGETchecksumListe toutes les classes actives en cours au sein de votre organisation.
Commandes cURL : Vérifier le statut & Clôturer la réunion
# 1. Vérifier si la salle est actuellement active
curl -s "https://video.vedview.com/api/isMeetingRunning?\
meetingID=class-101&\
checksum=CALCULATED_CHECKSUM"

# 2. Obtenir la liste des participants et le compteur en direct
curl -s "https://video.vedview.com/api/getMeetingInfo?\
meetingID=class-101&\
password=TeacherSecret123&\
checksum=CALCULATED_CHECKSUM"

# 3. Clôturer la classe à distance (déconnecter les utilisateurs et traiter l'enregistrement)
curl -s "https://video.vedview.com/api/end?\
meetingID=class-101&\
password=TeacherSecret123&\
checksum=CALCULATED_CHECKSUM"
7. Webhooks & Événements en temps réel

Distribution instantanée des événements

Restez synchronisé en temps réel sans scrutation (polling). Vedview envoie des notifications webhook HTTP POST à votre backend dès que les présences changent, que les classes commencent ou se terminent, ou que les enregistrements cloud sont prêts.

meeting.started
Déclenché dès que le premier modérateur ou élève entre dans la classe.
meeting.ended
Déclenché lorsque la salle est clôturée ou fermée automatiquement si vide.
user.joined
Émis à l'entrée d'un élève/enseignant avec fullName, rôle et horodatage d'arrivée.
user.left
Émis lors de la déconnexion ou du départ d'un participant. Idéal pour le suivi des présences.
recording.ready
Le composite MP4 cloud et la relecture interactive sont encodés et disponibles sur S3.
recording.failed
Envoyé si le traitement ou le pipeline de stockage cloud rencontre une anomalie.

Exemple de corps POST de Webhook (JSON)

{
  "event": "recording.ready",
  "timestamp": 1726405200000,
  "tenantId": "c47f89b1-2a6d-4f81-9b7e-128f731a540b",
  "data": {
    "meetingId": "class-101",
    "title": "Niveau 2 - Tajwid du Coran",
    "recordingId": "d4e6e94c-88ac-44ac-95c6-7f5b50bf3fb5",
    "duration": 5444,
    "fileUrl": "https://s3.eu-west-par.io.cloud.ovh.net/vedview-1/recordings/class-101_composite.mp4?...",
    "playbackUrl": "https://video.vedview.com/recordings/d4e6e94c-88ac-44ac-95c6-7f5b50bf3fb5"
  }
}

Validation des signatures de Webhook

Pour empêcher l'usurpation d'identité, chaque webhook inclut un en-tête cryptographique X-Vedview-Signature contenant l'horodatage t=... et la signature HMAC-SHA256 v1=.... Validez-la à l'aide de votre Clé API d'organisation :

import crypto from 'crypto';

export function verifyVedviewWebhook(rawBody: string, signatureHeader: string, apiKey: string): boolean {
  // Format de l'en-tête: "t=1726405200,v1=abc12345..."
  const parts = Object.fromEntries(signatureHeader.split(',').map(pair => pair.split('=')));
  const { t: timestamp, v1: signature } = parts;
  
  if (!timestamp || !signature) return false;

  const expectedSignature = crypto
    .createHmac('sha256', apiKey)
    .update(`${timestamp}.${rawBody}`)
    .digest('hex');

  return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expectedSignature));
}
Attentes de distribution & Réessais : Votre récepteur de webhook doit répondre avec le statut HTTP 200 OK dans les 5 secondes. En cas de délai dépassé ou d'erreur 5xx, Vedview réessaie la transmission jusqu'à 3 fois avec un intervalle exponentiel (15s, 60s, 5m).
8. Intégration dans une Iframe

Intégrer Vedview dans votre portail

Si vous souhaitez que les élèves et les enseignants restent au sein de votre application sans ouvrir une nouvelle fenêtre, intégrez le joinUrl généré directement dans une iframe HTML5 :

Composant Iframe HTML5 adaptatif
<iframe
  src="https://video.vedview.com/room/class-101?token=VOTRE_TOKEN_DE_CONNEXION"
  allow="camera; microphone; display-capture; fullscreen; autoplay; clipboard-write; speaker-selection"
  style="width: 100%; height: 90vh; border: none; border-radius: 12px;"
  allowfullscreen
></iframe>
Note cruciale sur les autorisations du navigateur

Les navigateurs exigent que la caméra et le micro dans les iframes bénéficient d'autorisations explicites via l'attribut allow="camera; microphone; display-capture", et votre site doit impérativement être distribué en HTTPS.

9. Retour au LMS (URL de redirection)

Rediriger les utilisateurs vers votre tableau de bord

Lorsqu'un cours prend fin ou qu'un participant clique sur "Quitter la salle", Vedview redirige automatiquement l'utilisateur vers votre plateforme au lieu de le laisser sur un écran figé.

Via paramètre d'URL (Redirection LMS) :

Transmettez le paramètre logoutURL lors de l'appel /api/create :

logoutURL=https%3A%2F%2Fmonacademie.fr%2Ftableau-de-bord

Via le corps de la requête REST :

Incluez fallbackUrl dans l'objet settings :

"settings": { "fallbackUrl": "https://monacademie.fr/tableau-de-bord" }
10. API des enregistrements Cloud

Afficher les enregistrements dans votre tableau de bord

Chaque session enregistrée est téléversée sur un stockage cloud sécurisé (OVH S3). Vous pouvez récupérer les enregistrements de l'ensemble de votre établissement ou d'un cours spécifique à l'aide de votre clé API :

# 1. Obtenir tous les enregistrements de votre organisation
curl -s "https://video.vedview.com/api/recordings?apiKey=VOTRE_CLE_API"

# 2. Obtenir les enregistrements d'un cours ou d'une classe spécifique
curl -s "https://video.vedview.com/api/recordings/meeting/group_15?apiKey=VOTRE_CLE_API"

Exemple d'objet de réponse API

[
  {
    "id": "d4e6e94c-88ac-44ac-95c6-7f5b50bf3fb5",
    "status": "COMPLETED",
    "duration": 5444, // En secondes
    "startedAt": "2026-08-03T18:13:42.967Z",
    "endedAt": "2026-08-03T19:44:26.981Z",
    "meeting": {
      "title": "Niveau 2 - Tajwid du Coran",
      "slug": "group_15"
    },
    // Lien direct MP4 pour <video src="..."> ou bouton de téléchargement
    "fileUrl": "https://s3.eu-west-par.io.cloud.ovh.net/vedview-1/recordings/group_15_composite_....mp4?X-Amz-Signature=...",
    // Relecture web interactive (avec tableau blanc synchronisé, notes et chronologie)
    "playbackUrl": "https://video.vedview.com/recordings/d4e6e94c-88ac-44ac-95c6-7f5b50bf3fb5"
  }
]
11. Référence des paramètres de session

Paramètres de configuration de salle

Lors de la création d'une réunion ou d'une session, transmettez ces paramètres pour configurer les règles de la classe :

ParamètreTypeDéfautDescription
meetingIDstringRequisIdentifiant alphanumérique unique de salle ou slug de cours (ex. class-101).
namestringRequisTitre du cours affiché dans l'en-tête de la salle et la liste des enregistrements.
logoutURLstringAucunURL vers laquelle rediriger l'enseignant ou l'élève lorsqu'il quitte la session.
recordbooleanfalseIndique si cette réunion peut être enregistrée.
autoStartRecordingbooleanfalseSi activé, démarre automatiquement l'enregistrement dès que le premier participant rejoint la classe.
muteOnStartbooleanfalseCoupe automatiquement le micro des participants à leur entrée.
lockSettingsDisableCambooleanfalseEmpêche les élèves d'activer leur webcam sauf autorisation préalable de l'enseignant.
closeWhenEmptybooleantrueTermine automatiquement la salle et finalise les enregistrements lorsque tous les utilisateurs la quittent.
12. Formats de réponse & Codes d'erreur

Schémas de réponse standard & Diagnostics

Vedview standardise les types de réponse selon les services : les API principales de gestion de cours renvoient du XML standard (pleinement conforme à la spécification BigBlueButton), tandis que les enregistrements cloud et les webhooks communiquent en JSON.

Réponse de succès de l'API de réunion (XML)
<response>
  <returncode>SUCCESS</returncode>
  <meetingID>class-101</meetingID>
  <internalMeetingID>183f0bf3a098</internalMeetingID>
  <parentMeetingID>bbb-none</parentMeetingID>
  <attendeePW>StudentSecret123</attendeePW>
  <moderatorPW>TeacherSecret123</moderatorPW>
  <createTime>1726405200000</createTime>
  <hasUserJoined>false</hasUserJoined>
</response>
Diagnostic d'erreur de réunion (XML)
<response>
  <returncode>FAILED</returncode>
  <messageKey>checksumError</messageKey>
  <message>You did not pass the checksum security check</message>
</response>
Clé de messageStatut HTTPCause probableRésolution
checksumError401 UnauthorizedLe paramètre de somme de contrôle (checksum) ne correspond pas au hash de action + requête + clé secrète.Assurez-vous que les paramètres dans votre chaîne SHA respectent exactement l'ordre de l'URL.
notFound404 Not FoundL'identifiant de réunion n'existe pas ou la session est déjà terminée.Appelez /api/create avant de distribuer les liens de participation.
idNotUnique400 Bad RequestUne salle avec ce meetingID est déjà active avec des paramètres d'accès différents.Utilisez des identifiants de cours uniques ou terminez d'abord la réunion précédente.
passwordError401 UnauthorizedLe mot de passe fourni ne correspond ni à moderatorPW ni à attendeePW.Vérifiez que les mots de passe transmis dans le lien de participation correspondent à l'appel de création.
13. Exemples de code complets

Implémentations prêtes à l'emploi

# ── 1. Créer une classe ──────────────────────────────
# (Calculer le sha1 de "createmeetingID=class-101&name=Math+101&logoutURL=..." + SECRET)
curl -X GET "https://video.vedview.com/api/create?\
meetingID=class-101&\
name=Math+Class+101&\
moderatorPW=TeacherSecret123&\
attendeePW=StudentSecret123&\
record=true&\
autoStartRecording=true&\
logoutURL=https%3A%2F%2Fmonacademie.fr%2Ftableau-de-bord&\
checksum=CALCULATED_CHECKSUM"

# ── 2. Rejoindre en tant qu'enseignant (Modérateur) ────
# L'utilisateur sera automatiquement redirigé vers la classe
https://video.vedview.com/api/join?\
fullName=Professeur+Martin&\
meetingID=class-101&\
password=TeacherSecret123&\
redirect=true&\
checksum=CALCULATED_CHECKSUM

# ── 3. Rejoindre en tant qu'élève (Participant) ─────────
https://video.vedview.com/api/join?\
fullName=Zaid+Ali&\
meetingID=class-101&\
password=StudentSecret123&\
redirect=true&\
checksum=CALCULATED_CHECKSUM
14. Dépannage & FAQ

Questions fréquemment posées

Pourquoi l'API renvoie-t-elle 401 Unauthorized ou Checksum Error ?

Assurez-vous que vos paramètres de requête sont dans le même ordre lors du hachage que dans l'URL, et vérifiez qu'il n'y a aucun espace superflu au début ou à la fin de votre clé API d'organisation. Vedview accepte les sommes de contrôle SHA-1 et SHA-256.

Pourquoi la caméra ou le micro est-il bloqué lors du chargement dans une iframe ?

Les navigateurs récents (Chrome, Safari, Firefox) exigent que la page parente soit servie en HTTPS et que la balise iframe autorise explicitement les périphériques : allow="camera; microphone; display-capture; fullscreen; autoplay".

Combien de temps les URL d'enregistrement cloud sont-elles valides ?

Les URL pré-signées S3 générées par /api/recordings sont signées cryptographiquement pour une durée de 24 heures. En les récupérant via l'API depuis votre backend, vous recevez toujours des liens authentifiés prêts pour la lecture des élèves.

Une organisation peut-elle voir les réunions ou enregistrements d'une autre école ?

Non. Toutes les sessions, identités d'utilisateurs et compartiments cloud S3 sont strictement isolés par votre clé API d'organisation et l'identifiant de votre espace d'établissement. Toute tentative d'accès inter-organisations est automatiquement rejetée avec une erreur 401 Unauthorized.

Besoin d'aide ou d'une intégration personnalisée ?

Notre équipe technique accompagne les établissements d'enseignement dans la configuration sur mesure et le dimensionnement de leur LMS.

Contacter le support