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.
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.
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.
https://video.vedview.com/api/https://video.vedview.com/api/recordings/x-api-key: VOTRE_CLE.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.
- 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
- 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
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);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
- Demandez votre clé d'API d'organisation auprès de notre équipe à contact@vedview.com.
- Dans vos paramètres LMS ou module d'activité, définissez l'URL du serveur sur :
https://video.vedview.com/api/ - Saisissez votre Clé API d'organisation comme secret d'authentification.
- 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.
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 :
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.
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 :
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).
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 terminaison | Méthode | Paramètres clés | Description |
|---|---|---|---|
| /api/create | GET | meetingID, name, moderatorPW, attendeePW | Initialise une nouvelle session, applique la configuration de la salle et les options d'enregistrement. |
| /api/join | GET | meetingID, fullName, password, redirect | Authentifie l'élève/l'enseignant et rejoint la salle avec les permissions désignées. |
| /api/isMeetingRunning | GET | meetingID, checksum | Vérification booléenne rapide si la réunion est en cours. Renvoie <running>true|false</running>. |
| /api/getMeetingInfo | GET | meetingID, password, checksum | Renvoie les métriques en direct : nombre total de participants, liste des présents avec rôles et heures d'arrivée. |
| /api/end | GET | meetingID, password, checksum | Termine la classe à distance, redirige les utilisateurs vers logoutURL et finalise les enregistrements. |
| /api/getMeetings | GET | checksum | Liste toutes les classes actives en cours au sein de votre organisation. |
# 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"
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.
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));
}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).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 :
<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>
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.
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 :
Via le corps de la requête REST :
Incluez fallbackUrl dans l'objet settings :
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"
}
]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ètre | Type | Défaut | Description |
|---|---|---|---|
| meetingID | string | Requis | Identifiant alphanumérique unique de salle ou slug de cours (ex. class-101). |
| name | string | Requis | Titre du cours affiché dans l'en-tête de la salle et la liste des enregistrements. |
| logoutURL | string | Aucun | URL vers laquelle rediriger l'enseignant ou l'élève lorsqu'il quitte la session. |
| record | boolean | false | Indique si cette réunion peut être enregistrée. |
| autoStartRecording | boolean | false | Si activé, démarre automatiquement l'enregistrement dès que le premier participant rejoint la classe. |
| muteOnStart | boolean | false | Coupe automatiquement le micro des participants à leur entrée. |
| lockSettingsDisableCam | boolean | false | Empêche les élèves d'activer leur webcam sauf autorisation préalable de l'enseignant. |
| closeWhenEmpty | boolean | true | Termine automatiquement la salle et finalise les enregistrements lorsque tous les utilisateurs la quittent. |
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.
<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>
<response> <returncode>FAILED</returncode> <messageKey>checksumError</messageKey> <message>You did not pass the checksum security check</message> </response>
| Clé de message | Statut HTTP | Cause probable | Résolution |
|---|---|---|---|
| checksumError | 401 Unauthorized | Le 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. |
| notFound | 404 Not Found | L'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. |
| idNotUnique | 400 Bad Request | Une 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. |
| passwordError | 401 Unauthorized | Le 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. |
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
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.
