Kontext dieses Dokuments: Die Flip Sync-API für Benutzer und Channels
Bitte beachten Sie die Spezifikationen für die Einschränkung von Interaktionen über den unten stehenden Link.
Die Funktion "Interaktionen einschränken" ist nur nach der Aktivierung verfügbar. Bitte setzen Sie sich mit Ihrem Ansprechpartner bei Flip in Verbindung.
- Diese Funktion verhindert im Wesentlichen, dass neue Chats gestartet werden können. Dies gilt sowohl für individuelle Chats als auch für das Hinzufügen anderer zu einer Chat-Gruppe.
- Wenn bereits ein Chat besteht, kann dieser genutzt werden, auch wenn Sie möglicherweise nicht mit dieser Person sprechen dürfen.
- Dies gilt nicht für das Erstellen von Beiträgen, Kommentaren oder Reaktionen.
- Wenn das Mitarbeiterverzeichnis aktiv ist, können Sie dennoch alle Benutzer darin sehen.
Anwendungsfälle für eingeschränkte Interaktionen und wie man dorthin gelangt
- Es ist wichtig sicherzustellen, dass Benutzer nur von relevanten Personen kontaktiert werden, die eine Arbeitsbeziehung zu ihnen haben.
- Aufgrund der großen Benutzerzahl müssen die Kommunikationsmöglichkeiten für Benutzer eingeschränkt werden, z. B. um sicherzustellen, dass sie sofort den richtigen und relevanten "Maximilian Meier" kontaktieren können, um Probleme bei der Kommunikation mit falschen Personen zu vermeiden.
- Ihre Benutzerbasis umfasst externe Mitarbeiter, die nur mit bestimmten internen Mitarbeitern kommunizieren dürfen.
Und natürlich viele andere.
Deshalb haben wir Tags und Regeln eingeführt:
- (Benutzer) Tags können den Benutzern über unsere Sync-API zugewiesen werden.
- Regeln können mit unserer Sync-API erstellt, gelesen, aktualisiert und gelöscht (CRUD) werden.
Die Regeln erklären, wie Benutzer mit bestimmten Tags interagieren. Sie bestehen aus zwei Teilen: den Bedingungen und dem Ergebnis. Sie haben auch eine Beschreibung und eine eindeutige Kennung (UUID).
Benutzertags für eingeschränkte Interaktionen
Benutzertags werden in den Benutzerinformationen gespeichert. Ein Tag ist ein String mit den folgenden Einschränkungen:
- Die maximale Länge beträgt 50 Zeichen,
- darf nur Kleinbuchstaben, Großbuchstaben, Zahlen, Bindestriche und Unterstriche enthalten.
Die Regeln für eingeschränkte Interaktionen
Regeln bestehen aus zwei Teilen: einer Bedingung und einem Ergebnis. Die Tags des handelnden Benutzers werden mit der Bedingung der Regeln verglichen. Wenn die Bedingung erfüllt ist, darf der Benutzer mit Benutzern interagieren, die eines der Tags besitzen, die im Ergebnis angegeben sind.
Bedingungen der Regeln
Die Bedingungen für Interaktionen sind in einer kurzen und beschreibenden Sprache geschrieben, die aus folgenden Elementen besteht:
Bedingung | Beschreibung |
---|---|
hasTag(<Tag>) | wählt nur Benutzer aus, die das Tag haben |
not(<condition>) | negiert eine andere Bedingung |
all(<condition>, <condition>, ...) | kombiniert andere Bedingungen mit logischem UND |
any(<condition>, <condition>, ...) | kombiniert andere Bedingungen mit logischem ODER (inklusiv) |
Weitere Beispiele:
-
hasTag(A)
: wählt nur Benutzer aus, die das TagA
haben -
not(hasTag(A))
: wählt nur Benutzer aus, die das TagA
nicht haben -
any(hasTag(A), hasTag(B), all(hasTag(C), hasTag(D)))
: wählt nur Benutzer aus, die das TagA
oderB
haben oder sowohlC
als auchD
haben.
Ergebnisse der Regeln
Das Ergebnis ist eine Menge von Tags, von denen der Benutzer mindestens einen Tag haben muss, damit die Regel angewendet wird.
-
A
: Benutzer mit dem TagA
-
A, B
: Benutzer mit entweder dem TagA
oderB
Anwendung der Regeln
Alle Regeln werden unabhängig voneinander ausgewertet. Wenn die Funktion "Einschränkung von Interaktionen" aktiviert ist, sind alle Interaktionen untersagt. Interaktionen können nur als Opt-in-Ansatz durch Regeln erlaubt werden. Sobald eine Regel während der Auswertung eine Interaktion erlaubt, kann keine andere Regel sie entfernen. Das Ergebnis der Regeln wird nicht gespeichert und wird erneut ausgewertet.
Die Regeln gelten nicht für bestehende Chats, sondern nur für neue Chats.
Beispiel Szenario und Lösung
Stell die Unternehmen mit Filialen in Berlin, München und Stuttgart vor. Daher haben wir die drei Tags Berlin
, Munich
und Stuttgart
.
- Regel-1: Da Stuttgart als Hauptquartier dient, kann jeder Benutzer aus Stuttgart einen Chat mit jedem Benutzer aus Berlin, München oder Stuttgart selbst initiieren.
- Regel-2: Benutzer aus den Filialen in Berlin und München dürfen auch mit Benutzern aus Stuttgart chatten.
- Regel-3: Jeder Benutzer aus München darf auch mit Kollegen aus München chatten.
- Regel-4: Es gibt Filialleiter mit den Tags
Berlin
undMunich
. Diese Benutzer dürfen ebenfalls einen privaten Chat mit jedem Benutzer aus Berlin und München starten.
Wichtig: Da für jede Interaktion zwischen Benutzern eine explizite Regel vorhanden sein muss, können in diesem Beispiel Benutzer aus Berlin implizit nicht mit Benutzern aus der gleichen Filiale in Berlin interagieren.
Die Regeln und Tags für das Beispiel Szenario
ID | Bedingung | Ergebnis |
---|---|---|
Regel-1 | hasTag(Stuttgart) | [Berlin, Munich, Stuttgart] |
Regel-2 | any(hasTag(Berlin), hasTag(Munich)) | [Stuttgart] |
Regel-3 | hasTag(Munich) | [Munich] |
Regel-4 | all(hasTag(Berlin), hasTag(Munich)) | [Berlin, Munich] |
Die folgende Tabelle zeigt die Benutzer mit unterschiedlichen Tags.
Benutzer | Tags |
---|---|
1 | [] |
2 | [Stuttgart] |
3 | [Berlin] |
4 | [München] |
5 | [Berlin, München] |
6 | [Berlin, München, Stuttgart] |
Anwendung der Regeln aus der ersten Tabelle auf alle Benutzer ergibt die folgenden Ergebnisse:
Benutzer | Tags | angewendete Regel | darf mit Benutzer interagieren |
---|---|---|---|
1 | [] | ||
2 | [Stuttgart] | Regel-1 | 3, 4, 5, 6 |
3 | [Berlin] | Regel-2 | 2, 6 |
4 | [München] | Regel-2, Regel-3 | 2, 5, 6 |
5 | [Berlin, München] | Regel-2, Regel-3, Regel-4 | 2, 3, 4, 6 |
6 | [Berlin, München, Stuttgart] | Regel-1, Regel-2, Regel-3, Regel-4 | 2, 3, 4, 5 |
Die API
Bevor du die API kennenlernst, ist es wichtig zu verstehen, wie Tags und Regeln funktionieren. Bitte beziehe dich auf die vorhergehenden Abschnitte und das obige Beispiel.
Anforderungen
- Um die API für Regeln vollständig nutzen zu können, müssen Sie Tags über die Sync-API den Benutzern hinzufügen.
- Der API-Client, der verwendet wird, muss die Bereiche
TAG_RULE_WRITE
undTAG_RULE_READ
haben. Bei Problemen wenden Sie sich bitte an Ihren Flip-Ansprechpartner.
Bitte finden Sie hier die API-Spezifikation:
Die Rules-API besteht aus vier grundlegenden Endpunkten:
- Erstellen einer neuen Regel
- Abrufen aller Regeln
- Aktualisieren einer Regel nach rule_id
- Löschen einer Regel nach rule_id
Erstellen einer neuen Regel
Wie bereits erwähnt, wenn keine Regeln definiert sind, kann niemand miteinander interagieren.
Eine Regel besteht aus einer Bedingung und einem Ergebnis. Optional kann eine Beschreibung hinzugefügt werden. Die folgende Regel ist aus dem Beispiel.
Bedingung | Ergebnis | Beschreibung |
---|---|---|
any(hasTag(Berlin), hasTag(Munich)) |
[Stuttgart] |
Nutzer aus Berlin und München können mit den Nutzern aus Stuttgart interagieren. |
Request
POST /sync/interaction-rules
{
"condition": "any(hasTag(Berlin), hasTag(Munich))",
"description": "Users from Berlin and Munich can interact with the users from Stuttgart.",
"outcome": ["Stuttgart"]
}
Antwort
In der Antwort wird die rule_id
zum Aktualisieren und Löschen zurückgegeben.
{
"condition": "any(hasTag(Berlin), hasTag(Munich))",
"description": "Users from Berlin and Munich can interact with the users from Stuttgart.",
"outcome": ["Stuttgart"],
"rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60"
}
Abfrage aller Regeln
This endpoint can be used to get all existing rules with all attributes rule_id
, condition
, outcome
, and description
.
Request
GET /sync/interaction-rules
Antwort
{
"rules": [
{
"rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60",
"condition": "any(hasTag(Berlin), hasTag(Munich))",
"outcome": ["Stuttgart"],
"description": "Users from Berlin and Munich can interact with the users from Stuttgart."
},
{
"rule_id": "18f71bae-0498-4edc-8091-dc6720f4359e",
"condition": "hasTag(Stuttgart)",
"outcome": ["Berlin", "Munich", "Stuttgart"],
}
]
}
Aktualisieren einer Regel nach rule_id
Die rule_id
ist erforderlich, um eine Regel zu aktualisieren. Sie wird bei der Erstellung der Regel oder bei der Abfrage aller Regeln zurückgegeben. Dieser Endpunkt verwendet die PUT-Semantik, bei der alle Felder mit dem angegebenen Wert aktualisiert werden, sodass es immer notwendig ist, alle Werte erneut zu senden.
Im folgenden Beispiel aktualisieren wir die bestehende Regel so, dass sie in umgekehrter Richtung gilt - die Bedingung muss also negiert werden.
Request
PUT /sync/interaction-rules/728c1541-d6d1-4290-9a53-cdf01dd32d60
{
"condition": "not(any(hasTag(Berlin), hasTag(Munich)))",
"description": "All users NOT from Berlin or Munich can interact with the users from Stuttgart.",
"outcome": ["Stuttgart"]
}
Response
{
"rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60",
"condition": "not(any(hasTag(Berlin), hasTag(Munich)))",
"description": "All users NOT from Berlin or Munich can interact with the users from Stuttgart.",
"outcome": ["Stuttgart"]
}
Löschen einer Regel nach rule_id
Der delete-Endpunkt kann die mit der rule_id
erstellte Regel löschen.
DELETE /sync/interaction-rules/728c1541-d6d1-4290-9a53-cdf01dd32d60
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.