Struktur eines Plugins¶
In diesem Kapitel wird auf die allgemeine Struktur eines Plugins eingegangen.
Dateistruktur¶
Ein Plugin hat typischerweise folgende Dateistruktur:
plugin.zip
├── manifest.json
├── button.js
├── pane.html
├── settings.html
└── images
└── logo.png
- manifest.json
- Die zentrale Datei eines Plugins. Sie enthält Informationen wie den Namen und die Version des Plugins aber auch Informationen darüber, welche Extension Points von diesem Plugin implementiert werden.
- button.js, pane.html und settings.html
- JavaScript und HTML Dateien dienen zur Implementierung der UI und Logik eines Plugins. Typischerweise wird pro Erweiterungstyp eine eigene HTML bzw. eine JavaScript Datei angelegt.
- images
Die einzelnen Dateien können Sie in Unterordner organisieren.
Die einzige Ausnahme ist die
manifest.json
Datei. Diese muss im Root-Verzeichnis liegen.
Manifest¶
Die manifest.json
Datei muss im Root-Verzeichnis des Plugins abgelegt werden und besitzt folgende Struktur:
{
"pluginId": "sample-plugin",
"label": "Sample plugin",
"version": "0.2",
"description": "This is just a sample Plugin",
"icon": "images/logo.png",
"buttons": [
{
"buttonId": "sampleButton",
"extensionPoint": ["agentclient.*"],
"label": "Just a label",
"icon": "maps:local-cafe",
"filename": "button.js",
"function": "messageSend",
"disabled": true
}
],
"panes": [
{
"paneId": "samplePane",
"extensionPoint": ["agentclient.*"],
"label": "Just a label",
"hidden": false,
"defaultOpen": true,
"filename": "pane.html",
"height": "100px"
}
],
"dialogs": [
{
"dialogId": "sampleDialog",
"width": "300px",
"height": "400px",
"modal": "true",
"filename": "dialog.html",
"functionClose": "onClose",
"functionCancel": "onCancel",
"functionSave": "onSave"
}
],
"settings:": {
"type": "iframe",
"filename": "settings.html",
"function": "onClose"
}
}
Metainformationen¶
- pluginId - Pflichtfeld
Die technische ID des Plugins, die möglichst eindeutig sein sollte.
Die ID muss dem HTML 4 Standard erfüllen. Das heißt sie muss mit einem Buchstaben
([A-Za-z])
beginnen und kann mit beliebig vielen Buchstaben([A-Za-z])
, Zahlen([0-9])
und den Sonderzeichen(-_:.)
fortgesetzt werden. Leerzeichen sind nicht erlaubt.- label
- Der Name des Plugins, der dem Benutzer angezeigt wird.
- version
- Eine optionale Versionsnummer.
- description
- Eine Kurzbeschreibung des Plugins.
- icon
Ein optionales Icon für das Plugin.
Erlaubt sind relative Pfade auf Bilddateien, die mit dem Plugin ausgeliefert werden.
Erweiterungstyp Schaltfläche¶
- buttons
Falls das Plugin Schaltflächen in der Kontrollleiste hinzufügen will, müssen sie in diesem Attribut angegeben werden.
Ein Plugin kann mehrere Schaltflächen definieren.
- buttonId - Pflichtfeld
- Die technische ID der Schaltfläche.
- extensionPoint - Pflichtfeld
Der Extension Point an dem die Schaltfläche hinzugefügt werden soll.
Beispiele:
["agentclient.livechat.*", "agentclient.teamchat.videochat"]
,["agentclient.livechat.public.videochat"]
- label - Pflichtfeld
Das Label für die Schaltfläche.
Es kann entweder ein internationalisierbares Label referenziert (siehe Internationalisierung) oder ein Freitext angegeben werden.
Beispiele:
Plugin Button
,IDS_CLOSE
- icon
Das Icon der Schaltfläche. Sie können alle Icons aus der Material Design Spezifikation wählen.
Bei mehrwörtigen Icons müssen die Leerzeichen durch einen Bindestrich ersetzt werden. Unterstriche müssen ebenfalls durch Bindestriche ersetzt werden.
Sollten Sie ein Icon auswählen welches nicht aus der Kategorie Action stammt, müssen die die Kategorie als Prefix vor den Iconnamen setzen.
Beispiele:
3d-rotation
,accessibility
,av:add-to-queue
- filename - Pflichtfeld
- Die JavaScript Datei, die die Logik für die Schaltfläche enthält. Insbesondere die Funktion, die bei Betätigen der Schaltfläche aufgerufen werden soll.
- function - Pflichtfeld
Der Name der Funktion, die bei Betätigen der Schaltfläche aufgerufen wird.
Die JavaScript Datei muss eine entsprechende globale Methode auf dem
window
Objekt implementieren.- disabled
Der initiale Zustand der Schaltfläche.
Erlaubte Werte:
true
,false
Default:
false
Erweiterungstyp Pane¶
- panes
Falls das Plugin einen neuen Bereich in der Erweiterungs Pane hinzufügen will, müssen sie in diesem Attribut angegeben werden.
Ein Plugin kann mehrere Bereiche definieren.
- paneId - Pflichtfeld
- Die technische ID der Pane.
- extensionPoint - Pflichtfeld
Der Extension Point an dem die Schaltfläche hinzugefügt werden soll.
Beispiele:
["agentclient.livechat.*", "agentclient.teamchat.videochat"]
,["agentclient.livechat.public.videochat"]
- label - Pflichtfeld
Die Überschrift des neuen Bereichs.
Es kann entweder ein internationalisierbares Label referenziert (siehe Internationalisierung) oder ein Freitext angegeben werden.
Beispiele:
Plugin Button
,IDS_CLOSE
- hidden
Die initiale Sichtbarkeit des Bereichs.
Sie kann zur Laufzeit über die lcapi.ui.pane API geändert werden.
Default:
false
- closed
Definiert ob der Bereich initial auf- oder zugeklappt ist.
Der Zustand kann zur Laufzeit über die lcapi.ui.pane API geändert werden.
Default:
false
- filename - Pflichtfeld
Die HTML Datei für den neuen Bereich.
Es werden nur relative Pfade unterstützt. Die referenzierte Datei muss mit dem Plugin ausgeliefert werden.
- height - Pflichtfeld
Die Höhe des neuen Bereichs in einer CSS Einheit.
Beispiel:
150px
Erweiterungstyp Dialog¶
- dialogs
Falls ein Plugin Dialoge hinzufügen will, müssen Sie in diesem Attribut definiert werden.
- dialogId - Pflichtfeld
- Die technische ID des Dialogs.
- width - Pflichtfeld
Die Breite des Dialogs in einer CSS Einheit.
Beispiel:
300px
- height - Pflichtfeld
Die Höhe des Dialogs in einer CSS Einheit.
Beispiel:
200px
- modal
Gibt an ob der Dialog als modaler Dialog dargestellt werden soll. Modale Dialoge lassen sich nur über die definierten Schaltflächen schließen.
Default:
false
- filename - Pflichtfeld
Die HTML Datei, die im Dialog angezeigt wird.
Es werden nur relative Pfade unterstützt. Die referenzierte Datei muss mit dem Plugin ausgeliefert werden.
- functionClose
Der Name der Funktion, die beim Betätigen der Schließen Schaltfläche ausgeführt wird.
Die JavaScript Datei muss eine entsprechende globale Methode auf dem
window
Objekt implementieren.Falls keine Funktion hinterlegt ist, wird die Schließen Schaltfläche nicht angezeigt.
- functionCancel
Der Name der Funktion, die beim Betätigen der Abbrechen Schaltfläche ausgeführt wird.
Die JavaScript Datei muss eine entsprechende globale Methode auf dem
window
Objekt implementieren.Falls keine Funktion hinterlegt ist, wird die Abbrechen Schaltfläche nicht angezeigt.
- functionSave
Der Name der Funktion, die beim Betätigen der Speichern Schaltfläche ausgeführt wird.
Die JavaScript Datei muss eine entsprechende globale Methode auf dem
window
Objekt implementieren. Als Argument wird eine Callback Funktion mitgeliefert, die zum Beispiel nach einer Validierung aufgerufen werden muss. Über diese Callback Funktion kann auch gesteuert werden, ob der Dialog sich schließen, oder weiterhin offen bleiben soll.Beispiel:
window.onSave = function(cb) { let isValid = true; // Some logic to determine if it is valid to close the dialog. cb(isValid); }
Falls keine Funktion hinterlegt ist, wird die Speichern Schaltfläche nicht angezeigt.
Erweiterungstyp Einstellungen¶
- settings
Falls Sie für das Plugin Einstellungsmöglichkeiten anbieten wollen, können Sie sie hier definieren.
Im Agentenclient werden unter Einstellungen -> Plugins alle installieren Plugins angezeigt. Über diese Ansicht können auch die Einstellungen eines Plugins geöffnet werden.
- filename
Die HTML Datei für die Einstellungen. Öffnet der Benutzer die Einstellungen des Plugins, wird diese Datei in einem Dialog angezeigt.
Es werden nur relative Pfade unterstützt. Die referenzierte Datei muss mit dem Plugin ausgeliefert werden.
- function
Der Name der Funktion, die beim Schließen des Einstellungsdialogs aufgerufen wird.
Die JavaScript Datei muss eine entsprechende globale Methode auf dem
window
Objekt implementieren.