Custom Tools – eigene Widgets im Meetingraum

Übersicht

Mit Custom Tools bringen Sie Ihre eigene Oberfläche in den Meetingraum, gleichberechtigt neben Video, Dokumenten und Whiteboard. Ein Tool besteht aus einem Icon, einem Label und einer Ihrer Seiten, die der Raum in einem iFrame darstellt.

Sie konfigurieren die Tools in den Systemeinstellungen einer White-Label-Instanz. Pro Instanz gibt es genau eine Konfiguration, standardmässig ist keine hinterlegt.

Verwendung mit einem KI-Assistenten

Wenn Sie mit einem KI-Coding-Assistenten arbeiten, können Sie den folgenden Text in Ihren Assistenten kopieren und mit einem Satz ergänzen, der beschreibt, was Sie programmieren möchten.

Der Prompt verweist auf unsere Entwicklerdokumentation, die wir für Coding-Assistenten in einer separaten, token-optimierten KI-Version ausliefern.

Lies zuerst diese Seite, bevor Du Code schreibst:
https://www.veeting.com/de/developer-documentation/custom-tools

Sie dokumentiert Custom Tools im Meetingraum von Veeting Rooms.
Halte Dich an diese fünf Regeln:

1. Ein API-Endpunkt muss ein REINES JSON-Array von Tools
   zurückgeben, kein Objekt mit einer data-Eigenschaft.
2. meetingId ist die 24 Zeichen lange ID, meetingToken die Nummer mit
   den Bindestrichen. Vertausche die beiden nicht.
3. Die Anfrage an einen API-Endpunkt enthält moderatorToken, aber
   nie culture. Jede iFrame-URL, fest oder vom Endpunkt geliefert,
   erhält culture angehängt, aber nie moderatorToken.
4. moderatorToken hängen wir immer an den API-Aufruf an, sein
   Vorhandensein beweist also nichts. Prüfe den Wert selbst.
5. Der Raum zeigt höchstens fünf Tools an, und ein Tool ohne
   iFrameUrl überspringt er.

Was ich bauen möchte:

Die Quelle wählen

Sie stellen ein Tool auf zwei Wegen bereit. Eine Instanz nutzt jeweils einen davon.

QuelleWas sie tutWann sie passt
iFrame-URLEine feste URL, für alle sichtbarAlle Teilnehmer sehen dasselbe Tool.
API-EndpunktWir rufen für jeden Teilnehmer Ihren Endpunkt auf, und Sie geben die passenden Tools zurückDie Tools unterscheiden sich pro Teilnehmer, oder Sie brauchen mehrere.

Wie Sie sich auch entscheiden: Custom Tools müssen für die Instanz aktiviert sein, sonst erscheint nichts.

Eine feste iFrame-URL

Konfiguration eines Custom Tools über eine feste iFrame-URL

Liefern Sie die URL über HTTPS aus. Ihr Webserver muss zudem Header senden, die dem Browser erlauben, Ihre Seite innerhalb unserer Seite darzustellen.

Das Label

Sie geben entweder einen festen String an oder eine Liste von Übersetzungen, mit Pipes (|) getrennt.

LabelErgebnis
My Custom ToolZeigt immer «My Custom Tool», egal, in welcher Sprache der Meetingraum läuft.
en:My Custom Tool|de-CH:Mein eigenes Tool|fr:Mon outil personnaliséAuf Englisch erscheint «My Custom Tool», auf Deutsch «Mein eigenes Tool» und so weiter. Fehlt eine Sprache in der Liste, greift der erste Eintrag. Setzen Sie die Standardsprache an den Anfang.

Was wir an Ihre URL anhängen

Wir ergänzen Query-Parameter, damit Ihre Seite weiss, wer sie betrachtet. Das gilt für eine feste URL und für die iFrameUrl jedes Tools, das ein API-Endpunkt zurückgibt:

ParameterWert
participantNameDer Name des Teilnehmers
participantIdDie eindeutige ID des Teilnehmers
meetingIdDie 24 Zeichen lange Meeting-ID, zum Beispiel 5349b4ddd2781d08c09890f3
meetingTokenDie Meetingnummer mit Bindestrichen, zum Beispiel 0000-0000-0000-0000
cultureDie aktuelle Oberflächensprache des Raums, zum Beispiel en, en-US oder de-DE

Drei Dinge sollten Sie wissen:

  • Wechselt der Teilnehmer die Sprache des Raums, laden wir den iFrame des Tools mit dem neuen culture neu.
  • moderatorToken senden wir hier nicht. Den erhält nur ein API-Endpunkt, siehe unten. Mit einer festen iFrame-URL erkennen Sie deshalb nicht, ob der Betrachter Moderator ist.
  • Enthält Ihre URL bereits ein ?, hängen wir die Parameter mit & an. Eine URL mit eigenem Query-String funktioniert also weiterhin.

Die Werte sind URL-codiert. Decodieren Sie sie also, bevor Sie damit arbeiten. Ein Name mit einem Leerzeichen oder einem & kommt so unversehrt bei Ihnen an.

Ein API-Endpunkt

Mit einem API-Endpunkt entscheiden Sie pro Teilnehmer, welche Tools erscheinen. Bis zu fünf dürfen es sein.

Konfiguration eines Custom Tools über einen API-Endpunkt

Tritt jemand bei, rufen wir Ihren Endpunkt auf und zeigen dieser Person an, was Ihr Endpunkt zurückgibt.

Ein Browser betritt das Meeting, der Meeting-Server ruft Ihren API-Endpunkt mit Angaben zu Teilnehmer und Meeting auf, Ihr Endpunkt entscheidet über die Tools und liefert bis zu fünf zurück, und der Meetingraum zeigt sie an

Der Aufruf

Wir schicken ein HTTP GET mit diesen Query-Parametern und legen Ihr konfiguriertes Geheimnis in den Header X-API-KEY:

ParameterWert
participantNameDer Name des Teilnehmers
participantIdDie eindeutige ID des Teilnehmers
meetingIdDie 24 Zeichen lange Meeting-ID
meetingTokenDie Meetingnummer mit Bindestrichen
moderatorTokenDer Moderatoren-Token des Teilnehmers

Hinweis: Die Anfrage an Ihren Endpunkt enthält culture nicht, moderatorToken hängen wir dagegen immer an. Die iFrameUrl jedes Tools, das Sie zurückgeben, erhält culture trotzdem, zusammen mit den übrigen Parametern aus «Was wir an Ihre URL anhängen». Bei einem Teilnehmer ohne Moderationsrechte ist der Parameter zwar vorhanden, enthält aber keinen gültigen Wert. Prüfen Sie deshalb den Wert selbst und nicht, ob der Parameter vorhanden ist. Alle Werte sind URL-codiert.

curl 'https://<CUSTOM-TOOL-API-URL>?participantName=Joe%20Doe\
&participantId=XXXXX\
&meetingId=5349b4ddd2781d08c09890f3\
&meetingToken=0000-0000-0000-0000\
&moderatorToken=YYYYY' \
  -H 'X-API-KEY: <CUSTOM-TOOL-API-KEY>' \
  -H 'accept: application/json, text/plain, */*'

Die Antwort

Antworten Sie mit HTTP 200 und einem reinen JSON-Array von Tool-Objekten. Verpacken Sie es nicht. Anders als bei der REST API entpackt hier niemand eine data-Eigenschaft für Sie.

EigenschaftBedeutung
iFrameUrlDie URL, die wir darstellen. Fehlt sie, überspringen wir das Tool.
toolIconEin SVG-String für das Icon. Alles über 50'000 Zeichen verwerfen wir, und das Tool erhält das Standard-Icon.
labelsEin Array von Label-Objekten

Ein Label-Objekt:

EigenschaftBedeutung
cultureDas Locale dieses Labels, zum Beispiel en, en-US oder de-DE
labelDer anzuzeigende Text, zum Beispiel «My Custom Tool»
[
  {
    "iFrameUrl": "https://www.example.com/custom-tool-1",
    "toolIcon": "<svg>...</svg>",
    "labels": [
      {
        "culture": "en-US",
        "label": "Custom tool 1"
      },
      {
        "culture": "de",
        "label": "Spezialtool 1"
      }
    ]
  }
]

Grenzen und Fallbacks

  • Höchstens fünf Tools. Wir hören nach dem fünften brauchbaren Tool auf; alles danach ignorieren wir.
  • Ein Tool ohne iFrameUrl überspringen wir vollständig.
  • Fehlt labels oder ist das Array leer, erhält das Tool das Label «Custom tool».
  • Kann der Meetingraum das Locale des Teilnehmers nicht zuordnen, nimmt er das erste Label Ihres Arrays. Setzen Sie Ihren bevorzugten Standard deshalb an den Anfang.
  • Antwortet Ihr Endpunkt mit einem Fehler, läuft er in einen Timeout oder gibt er kein Array zurück, zeigen wir keine Custom Tools an. Das Meeting läuft normal weiter.

Häufige Fehler

  • meetingId und meetingToken vertauschen. meetingId ist die 24 Zeichen lange, meetingToken die mit den Bindestrichen.
  • moderatorToken bei einer festen iFrame-URL erwarten, wo wir ihn nie senden.
  • culture in der Anfrage an den API-Endpunkt erwarten. Es wird nur an die iFrame-URL angehängt.
  • Das Vorhandensein von moderatorToken als Nachweis für Moderationsrechte werten.
  • Die API-Antwort verpacken, statt ein reines Array zurückzugeben.
  • Mehr als fünf Tools zurückgeben und sich wundern, wo die übrigen geblieben sind.
  • Das Tool über HTTP ausliefern oder mit Headern, die das Einbetten verbieten.
  • Einen Teilnehmernamen direkt aus dem Query-String lesen, ohne ihn zu decodieren.

Sind Sie nicht sicher, wie Sie Ihr Projekt am Besten umsetzen sollen?

Sprechen Sie mit unserem Team über Ihre Pläne.