Documentation menu

RSVP-Block

Eine kostenlose „Nehmen Sie teil?“-Frage mit Kapazitäts- und Wartelisten-Unterstützung — das kostenlose Gegenstück zur bezahlten Lagerbestandsgrenze des Produkt-Blocks, für Veranstaltungen, die nur eine Kopfzahl statt einer Zahlung brauchen.

Wie es funktioniert

Ein gastloses RSVP verhält sich genau wie die Einzelauswahl-Stimme einer Abstimmung: „Ja“ und „Nein“ werden als dasselbe link-first-Chip-Paar gerendert, das buildChipGroup auch für eine Abstimmungsoption erzeugt. Die Bestätigung erfolgt auf der gehosteten Live-Ansicht (oder direkt über einen E-Mail-internen Formular-Post, wo der Client dies unterstützt), bevor irgendetwas erfasst wird, sodass ein Unternehmens-Scanner, der den Link vorab abruft, die Zahl nicht künstlich erhöhen kann.

Das Aktivieren von Mitbringen von Gästen erlauben ändert nur die „Ja“-Antwort: Ein einfacher GET-Link kann keine Auswahl anbieten, wie es ein echtes Formularfeld kann, daher wird die Gästezahl zu einem reinen Live-Ansicht-Element in Form eines kinetischen <form><select>. Das spiegelt die Art und Weise, wie die Text-/Link-Antworten des Aufgaben-Blocks die Live-Ansicht für alles benötigen, was ein fester Link nicht tragen kann. „Ja (Gäste wählen)“ wird im Stufe-2-/Stufe-3-Fallback als reiner Link direkt zur Live-Ansicht gerendert, statt direkt zu /act. Ein gastloses „Ja“ (0 Gäste gewählt oder Gäste ganz deaktiviert) erreicht so oder so weiterhin /act als normalen Ein-Tap-Link — nur der Gästezahl-Schritt speziell benötigt die Live-Ansicht.

Die Kapazitätsabrechnung findet innerhalb einer einzigen Firestore-Transaktion statt, die auch die Deduplizierungsprüfung pro Empfänger durchführt. Anders als der Checkout des Produkt-Blocks, der lediglich eine .count()-Abfrage erneut prüft und bei einer seltenen Überverkaufs-Race-Condition zurückerstattet, hat ein RSVP kein Rückerstattungs-Sicherheitsnetz für eine Antwort über der Kapazität hinaus. Deshalb geschehen die Entscheidung und das Schreiben atomar zusammen, statt als zwei separate Schritte, die eine Race Condition auseinanderreißen könnte. Setzen Sie Kapazität über 0, und sobald bestätigte Zusagen plus ihre Gäste diese überschreiten würden, wird die Antwort als auf der Warteliste statt als bestätigt erfasst, und der Empfänger sieht Ihre eigene Wartelisten-Nachricht statt eines allgemeinen Dankeschöns.

Eine „Nein“-Antwort wird immer als abgesagt erfasst, nie gegen die Kapazität geprüft. Kapazität 0 bedeutet unbegrenzt, dieselbe Konvention „0 = nicht gesetzt“ wie beim Lagerbestand-Feld des Produkt-Blocks. Eine anonyme Antwort (kein Empfänger-Token — zum Beispiel eine aus einer exportierten HTML-Datei, die in einen ESP eines Drittanbieters eingefügt wurde) überspringt die Deduplizierungsprüfung vollständig, da es keinen Empfänger gibt, auf den man sich beziehen könnte. Sie durchläuft aber weiterhin dieselbe Kapazitätstransaktion, sodass auch eine Flut anonymer Antworten die Wartelistengrenze nicht überverkaufen kann; nur die Duplikaterkennung pro Person ist auf diesem Pfad nicht verfügbar.

Wenn das Projekt ein Enddatum oder eine Antwortobergrenze konfiguriert hat (siehe Umfrage-Lebenszyklus), tauscht ein geschlossenes RSVP beide Chips gegen inaktive graue Versionen plus den Hinweis „Diese Umfrage ist geschlossen“ auf der Live-Ansicht.

Konfigurierbare Felder:

  • Frage — Standard „Nehmen Sie teil?“
  • Kapazität (0 = unbegrenzt).
  • Mitbringen von Gästen erlauben — fügt „Ja“ eine Gästezahl-Auswahl hinzu.
  • Maximale Gäste pro Zusage (falls Gäste erlaubt) — begrenzt den Bereich der Auswahl (1–20).
  • Wartelisten-Nachricht — wird statt eines normalen Dankeschöns angezeigt, sobald die Kapazität erreicht ist.
  • Hintergrundfarbe, Innenabstand, Rahmen und Eckenradius der Karte.
  • Farbe/Größe der Frage sowie Farb-/Hintergrund-Überschreibungen der Ja/Nein-Schaltflächen.

Jede Zusage fließt in bestätigte/abgesagte/auf-der-Warteliste-stehende Zahlen und eine Gästesumme ein, direkt in den rsvpBlocks-Aggregations-Bucket des Projekts geschrieben, statt über den generischen Antwort-Inkrementierungspfad, den jeder andere Block nutzt. Das ist eine bewusste Ausnahme, da die Entscheidung bestätigt-gegenüber-auf-der-Warteliste innerhalb derselben Transaktion wie die Zählung selbst erfolgen muss.

Beispiele

Subject

Will you join us?

Der Projektzweck „Event“ startet ein neues Projekt mit einem bereits vorhandenen RSVP-Block neben Meeting-Link, Veranstaltungsort und Zum Kalender hinzufügen. Legen Sie eine Kapazität für einen Veranstaltungsort mit begrenzten Plätzen fest, und der Block übernimmt die Warteliste ohne zusätzliche Einrichtung — siehe Events & Webinare. Ein Verein verwendet denselben Block für ein Probetraining oder eine begrenzte Anzahl an Plätzen für eine Auswärtsfahrt, wobei die Kapazität die Kopfzahl ehrlich hält, ohne dass jemand sie von Hand nachverfolgen müsste — siehe Sportteams & Vereine. Ein kostenloses Community-Treffen ganz ohne Platzbegrenzung belässt Kapazität einfach bei 0 und nutzt RSVP rein für eine zuverlässige Kopfzahl statt für eine Kapazitätsdurchsetzung.

So sieht der statische Fallback aus

<div id="em-rsvp-1" style="margin:12px 0;background-color:transparent">
  <p style="margin:0 0 10px;font-weight:600;font-size:16px;color:#111827">Will you attend?</p>
  <div>
    <span class="kn-fallback">
      <a href="https://mailinapp.com/v/eyJhbGci.../act?blockId=rsvp-1&blockType=rsvp&action=rsvp&response=yes"
         style="display:inline-block;margin:0 6px 6px 0;padding:8px 14px;border:1px solid #d1d5db;
                border-radius:6px;background-color:#ffffff;color:#111827;font-size:14px;text-decoration:none">
        Yes
      </a>
      <a href="https://mailinapp.com/v/eyJhbGci.../act?blockId=rsvp-1&blockType=rsvp&action=rsvp&response=no"
         style="display:inline-block;margin:0 6px 6px 0;padding:8px 14px;border:1px solid #d1d5db;
                border-radius:6px;background-color:#ffffff;color:#111827;font-size:14px;text-decoration:none">
        No
      </a>
    </span>
  </div>
</div>

Dies ist der gastlose Stufe-2-Fallback: reine Links zu /v/[token]/act, identisch in der Form zu den Options-Chips einer Abstimmung, überall sichtbar, wo das E-Mail-interne Formular nicht gerendert wird.

Siehe auch