Webhooks
De webhook-ondersteuning van Chamilo is momenteel beperkt tot de BigBlueButton (BBB) plugin. In plaats van webhooks naar externe systemen te verzenden, fungeert Chamilo als een webhook-ontvanger: het stelt eindpunten beschikbaar die BigBlueButton aanroept wanneer gebeurtenissen in een ruimte plaatsvinden, en gebruikt deze gebeurtenissen om per deelnemer activiteitsstatistieken op te bouwen.
Hoe het werkt
Wanneer een BBB-vergadering plaatsvindt, stuurt de BBB-server real-time meldingen van gebeurtenissen naar een ondertekende callback-URL op uw Chamilo-installatie. Chamilo verwerkt elke gebeurtenis en slaat geaggregeerde statistieken (spreektijd, cameragebruik, berichten, reacties, hand opsteken) op in de databasetabel conference_activity.
BigBlueButton-server
│ POST (ondertekend)
▼
Chamilo webhook-eindpunt
│
▼
conference_activity (statistieken JSON)
│
▼
Webhook-dashboard (/plugin/Bbb/webhook_dashboard.php)Eindpunten
Verouderd PHP-eindpunt
POST /plugin/Bbb/webhook.php?au={accessUrlId}&mid={meetingId}&ts={timestamp}&sig={hmac}Verwerkt alle BBB-ruimtegebeurtenissen. Valideert de HMAC-handtekening, voert vervolgens een upsert uit op een ConferenceActivity-rij en werkt het JSON-veld met statistieken bij.
Modern Symfony-eindpunt
Gedefinieerd via API Platform op de ConferenceActivity-entiteit. Vereist de handtekeningheaders voor het vastleggen van activiteiten; verzoeken zonder een geldige handtekening worden geaccepteerd, maar er wordt geen activiteitsrij geschreven.
Configuratie (BBB Plugin)
In Beheer → Plugins → BigBlueButton zijn de volgende webhook-instellingen beschikbaar:
webhooks_enabled
true / false
Webhook-registratie in- of uitschakelen
webhooks_scope
per_meeting / global
Eén hook per vergadering registreren of een enkele globale hook voor alle vergaderingen
webhooks_hash_algo
sha256 / sha1
HMAC-algoritme voor handtekeningverificatie
webhooks_event_filter
kommagescheiden tekenreeks
Optionele lijst van BBB-gebeurtenisnamen om te ontvangen (leeg = alle gebeurtenissen)
Wanneer een vergadering wordt aangemaakt en webhooks zijn ingeschakeld, roept Chamilo de BBB hooks/create API aan om de callback-URL te registreren. De URL bevat een tijdgebonden HMAC-handtekening.
Handtekeningvalidatie
Het verouderde eindpunt gebruikt querystringparameters:
De
saltis de geconfigureerde salt-waarde van de BBB-plugin.Verzoeken ouder dan 15 minuten worden geweigerd om replay-aanvallen te beperken.
Het moderne eindpunt gebruikt headers:
Verzoeken ouder dan 5 minuten worden geweigerd.
Voorbeeld: BigBlueButton Webhook-gebeurtenis
BBB stuurt een JSON-body met een array van gebeurtenissen. Elke gebeurtenis heeft een data.id (gebeurtenisnaam) en een data.attributes-object.
Verzoek van BBB:
Wat Chamilo doet:
Valideert de HMAC-handtekening en timestamp.
Zoekt de
ConferenceMeetingop aan de hand vanremote_id.Zoekt (of maakt) een open
ConferenceActivity-rij voor die vergadering + gebruiker.Registreert
temp.talk_started_at = 1715520123in de statistieken-JSON.
Wanneer de bijbehorende user-talking-stopped-gebeurtenis arriveert, berekent Chamilo de verstreken seconden en voegt deze toe aan totals.talk_seconds.
Bijgehouden gebeurtenissen en statistieken
user-joined / participantjoined
Activiteitsrij aangemaakt
user-talking-started / uservoiceactivated
Timer gestart voor totals.talk_seconds
user-talking-stopped / uservoicedeactivated
totals.talk_seconds verhoogd
camera-share-started / webcamsharestarted
Timer gestart voor totals.camera_seconds
camera-share-stopped / webcamsharestopped
totals.camera_seconds verhoogd
chat-message-posted / publicchatmessageposted
counts.messages verhoogd
user-reaction-changed / useremojichanged
counts.reactions + uitsplitsing per emoji
user-hand-raised / userraisedhand
counts.hands verhoogd
user-left / participantleft
Open timers geleegd, activiteitsrij gesloten
Gegevensstructuur van Metrics
Metrics worden opgeslagen als een JSON-kolom in ConferenceActivity:
De temp-velden bevatten tijdelijke starttijdstempels van lopende timers; deze worden gewist wanneer het bijbehorende stopgebeurtenis arriveert of wanneer de deelnemer de sessie verlaat.
Webhook Dashboard
Een beheerdashboard is beschikbaar op /plugin/Bbb/webhook_dashboard.php. Het toont real-time en historische metrics per deelnemer voor een bepaalde vergadering: verbindingstijd, spreektijd, cameragebruikstijd, aantal berichten, aantal reacties en handopstekingen. Gegevens kunnen worden geëxporteerd als CSV.
Hooks Registreren en Opschonen
De BbbLib-klasse biedt methoden voor het beheren van hookregistratie op de BBB-server:
ensureHookForMeeting($remoteId)
Registreer (of bevestig) een hook per vergadering nadat een gebruiker deelneemt
ensureGlobalWebhook()
Registreer een enkele globale hook die alle vergaderingen dekt
cleanupWebhooks($meetingId)
Verwijder door Chamilo geregistreerde hooks van de BBB-server
BbbPlugin::checkWebhooksHealth()
Valideer of het BBB hooks/list-eindpunt bereikbaar is
Uitbreiden naar Andere Gebeurtenisbronnen
Er is momenteel geen generiek outbound webhook-systeem in Chamilo (d.w.z. geen ingebouwde manier om een POST-verzoek naar een externe URL te sturen wanneer een gebruiker zich inschrijft of een cursus voltooit). Als u dat gedrag nodig heeft, zijn de opties onder andere:
Het schrijven van een plugin die luistert naar Symfony-gebeurtenissen en HTTP-aanroepen verzendt (zie Plugins en Event System).
Het gebruik van de REST API om vanuit een extern systeem te pollen naar statuswijzigingen.
Laatst bijgewerkt
Was dit nuttig?