Skip to content

BBB-Meetings für externe Besucher (ohne login) freigeben

ist

  • BBB-Meetings sind nur für eingeloggte Nutzer verfügbar
  • Anders, als man es von BBB mit Greenlight kennt, gibt es kein Beitrittslink im public chat, den man einfach teilen kann. Das kann auch nicht einfach aktiviert werden, weil unsere Plattform direkt auf BBB zugreift, ohne das Greenlight oder BBBatScale dazwischen geschaltet ist.

goal

  • make bbb-guest-invites available like the user would expect from greenlight

first MVP @sascha.sommer

  • (dev on old architecture, then migrate to new architecture)
  • no frontend UI settings, no switch
  • add create-link guest policy JSON parameter always-on for accept=true, so that default on doesn't have to be trusted, and that portal admins can change it in inherited JSON settings
  • only add the logic for creating guest token links in the backend and add the moderator-only message
  • also implement the link view and fontend for the actual join link (enter name for user)
    • also add checkbox from the signup form for ToS accept
    • save name in session (or leave out in MVP if too hard)
  • resolve join link to final server always (not only on cluster)

api infos

  • create parameter guestPolicy
    • with values ALWAYS_ACCEPT, ALWAYS_DENY, and ASK_MODERATOR
    • controls how users joined with guest=true are handled
    • this sets the start-value for new meetings, can be changed in meeting-ui by moderators
  • join parameter
    • guest with values true and false
    • users joined with guest=true are handled according to the value of guestPolicy at the time of join and show "Guest" in the user-list

new properties

  • bbb-json create-parameter guestPolicy with default value ALWAYS_ACCEPT
    • this is currently the default on our BBB-Servers but better set this explicitly
    • this is used with the inheritance of bbb-properties
  • each meeting needs a generated url for guests to join
    • generated url should be permanent for the meeting, regardless of time/date-changes
    • should be a read-only-property (!) of meeting in django-admin
    • the system has to generate the url when needed or in advance: for all existing meetings, and for new meetings on creation
    • the url should be hard to guess but easy to tell via phone 😉, maybe use something like greenlight (only a recommendation): https://greenlight-01.wechange.de/b/jen-2pd-fec-fdo
      • the first tiplet is the owner-name, we could use the conference-slug
      • uniqueness is achieved by the other triplets, so slug-collisions are not relevant
      • the random triplets are numbers and lower-case ascii letters
      • use the namespace /b/ to show user-friendly error-messages if the url is invalid
  • the name of the guest and recording-consent should be stored in a cookie
    • on all guest-meetings the form is pre-filled with the cookie-data, user can still change this
    • otherwise the guest would have to enter the data repeatedly

bbb-settings-ui

  • currently there is no need to enable/disable this in conf.py (except for possible future changes like premium-only etc.)

  • Click to expand image
  • show generated meeting-guest-url in meeting properties, bbb-section

  • below, add a new property "guest policy" like "allow recording"

    • values ("inherit.."), "always deny", "always accept" and "ask moderator"
    • map this to the corresponding create-parameter in the bbb-json field
    • this should be inherited like on group-/room-/meeting- level like all other bbb-parameters

bbb-create behavior

  • the create-call gets additional parameters (hardcoded)
    • guestPolicy with the value from bbb-json
      • this does not have to be added if it is not in the bbb-json - the server has a default
    • moderatorOnlyMessage with the message "Um externe Gäste einzuladen, teilen Sie diesen Link / To invite external Guests, share this link: meeting_guest_url"
      • in the future this could be used for additional functions, so initialize with the value from bbb-json (if present) and append to it (with newline(s) or <br/> ? as separator)
      • OPTIONAL: the message-template for the guest-string could be subject to future customization. maybe store this in bbb-json (separate namespace) and set the default so it can be overridden in django-admin (the message could be used as a simple prefix where the url is appended, proper templating is not needed)

guest-join behavior

  • add new url-namespace for bbb-guests

    • maybe only if bbb is enabled in conf.py?
  • show user-friendly error message, if the url is invalid

    • like "The requested meeting does not exist. Please double-check, that you typed the url correctly. If the problem persists, ask the meeting-host for help."
  • show simple form if no active session or authenticated user who is not participant -

    Click to expand image

    • show the name of the conference/group
    • link to microsite of conference/group
    • show the name of the meeting
    • editbox to enter the user_name -> use in join-call
      • load from cookie if present
    • checkbox to consent to being recorded (show only if create/record is true)
      • load from cookie if present
    • button to confirm and actually join, only allowed, if
      • create/record == false or consent == true
      • user_name is not empty
    • on confirm,
      • save user_name and consent to cookie
      • create the bbb-meeting if needed
        • OPTIONAL? show user-friendly error-message if create fails
      • join the guest like authenticated users but with the additional parameter guest=true
        • OPTIONAL? show user-friendly error-message if join fails
      • forward to the bbb-frontend directly - no iframe 😉 (but resolve the forwarding to the actual bbb-frontend first)
  • forward to conference/group meeting-url if authenticated user who is participant/admin

todo fix/amend

known issues

  • portal-admin is joined as guest and moderator when not member of the a group
  • maybe there is a cookie-banner necessary and more gdpr-stuff?
  • this feature is available for all conferences and groups/calendar-events, no configuration possible
  • the default logout-page of the bbb-server does not work well in this use-case because it refers to the conference ui with the side-bar on the left
  • every meeting gets the guest-url, visible only for conference-admins and bbb-moderators - this cannot be disabled
  • guest-urls stay valid and can be used anytime by any number of people!
    • the workaround would be to allow guests only if the meeting is already running, then there would have to be a waiting-page with polling/push to show the form when the meeting starts (or only while it is running)
  • if the guestPolicy is set to ALWAYS_DENY, the moderator does not get an indication that the invite-link will not work

archive

Click to expand

soll

  • 🎯 ad hoc Einladungen an externe Gäste sollen per Link möglich sein
  • der Gäste-Link soll für Tagungsorganisatoren in den Event-Einstellungen ablesbar sein
    • z.B.: portal.de/conference/[conference-slug]/../[random-ascii]/[event-slug]
    • link wird vom System generiert
    • Button "generate new guest link" -> generiert neuen gast-link mit neuem [random-ascii] falls der alte Link "in falsche Hände gerät"
  • der Gäste-Link soll für Moderatoren in dem BBB-Meeting ablesbar sein
    • BBB-api create parameterper
      • moderatorOnlyMessage="Invite Guests via this link: https://aol.com"
      • guestPolicy=ASK_MODERATOR
  • Gäste sollen nach einer Abfrage ihres Namens direkt in den Raum joinen können (als attendee)
    • vorschaltseite vom Portal für Namensabfrage nötig (bbb kann das nicht selbst)
    • name nicht in einem cookie speichern - jeder neue Aufruf fragt den Namen ab
    • bbb-api join mit parameter guest=true
  • Gast ist, wer
    • keine eingeloggte Session hat oder
    • nicht Mitglied der Tagung ist (auch bei eingeloggten Usern dann den Namen extra abfragen und kein avatar nutzen -> datenschutz, Gast soll wirklich Gast sein)

event-eigenschaften-ui

bilder - image

bsp für UI

namensabfrage
  • image
    • 1️⃣ namensabfrage
    • 2️⃣ einverständnis Aufzeichnung wenn aufzeichnung aktiv
info, dass event noch nicht läuft
  • weiterer screen, wenn meeting gar nicht läuft, anstelle namenseigabe
  • dann info anzeigen wann das event später startet und user soll später wieder kommen und neu laden!
  • ggf weiterleitung auf microsite mit popup (user sollen nicht auf der meldungsseite warten
warteseite wenn event nicht läuft, mit polling

image

  • schwieriger?
weitere beispiele - image - image - image

offene fragen

  • diese gästefunktion nur für Tagungen oder auch für bbb-meetings in gruppen genutzt werden?
    • pro: unsere plattform hilfreicher machen nicht dass kunden extra zoom brauchen
  • funktion "gäste starten meeting" supporten oder nicht? (wäre noch ein haken bei event-einstellungen)
    • aber immer abfrage ob meeting tatsächlich läuft! auch außerhalb der geplanten zeiten muss dass möglich sein
  • guestPolicy einstellung in event-eigenschaften- ui, sonst lässt sich das im django-admin einstellen in den json-feldern
guestPolicy	Enum	Will set the guest policy for the meeting. The guest policy determines whether or not users who send a join request with guest=true will be allowed to join the meeting. Possible values are ALWAYS_ACCEPT, ALWAYS_DENY, and ASK_MODERATOR.
Default: ALWAYS_ACCEPT

out of scope (mögliche Konzepterweiterungen)

  • ggf in BBB-Räumen in Projekten/Gruppen auch ermöglichen vgl. wechange#1418
  • events auf micro-site joinen (derzeit durch manuelles Teilen des gast-links auf microsite möglich)
  • checkbox: "allow guests to enter an empty meeting" oder guestpolicy konfigurierbar machen
  • Link konfigurierbar machen ähnlich wie invite-tokens?
Edited by Helmut Wolman