- Registriert
- 26. Okt. 2009
- Beiträge
- 10.060
- Reaktionspunkte
- 2.147
- Punkte
- 389
Mit Einführung von DSM 7 ist das Absetzen von DSM-Desktop-Benachrichtigungen aus einer App heraus ein wenig aufwändiger geworden, als noch unter DSM 6. Im aktuellen Synology DSM 7 Developer Guide (aus dem ich mich im folgenden beziehen und zitieren werde) wird das genaue Vorgehen leider nur sehr wage und teils zusammenhangslos beschrieben. Daher möchte ich hier gerne meine Erfahrungen mit euch teilen, indem ich dieses kleine HowTo verfasse.
Ausgehend von der Standard Paket Dateisystem Hierarchie [dsmuidir] wird unter /var/packages/[PAKET-NAME]/target/ui eine neue Ordnerstruktur aufgebaut. In diesem Zweig werden die entsprechenden Sprachdateien zur späteren Ausgabe von DSM-Desktop-Benachrichtigungen abgelegt.
Der jeweilige Inhalt einer Sprachdatei strings wird im sogenannten section:key Format (Synology spricht hier von einem i18n string) abgelegt.
Abschließend sollte bei allen neu angelegten Ordnern und Dateien noch der Eigentümer auf [PAKET-NAME]:[PAKET-NAME] sowie die Rechte auf 755 oder auch 644 geändert werden.
Der nun folgende Befehl löst die eigentliche DSM-Desktop-Benachrichtigung aus. Hierbei wird die Benachrichtigung an das im DSM aktive Paket gebunden. Das bedeutet, das der Befehl nur dann korrekt ausgeführt wird, wenn das zugehörige Paket im DSM aktiv, sprich das App Fenster geöffnet ist, oder sich zumindest minimiert in der Taskleiste befindet.
Das sieht erstmal ein wenig verwirrend aus, ist bei genauerer Betrachtung aber gut zu lesen. Die Bezeichnung SYNO.SDS._ThirdParty.App.[PAKET-NAME] wird durch den "url:" type in der Datei config definiert. @administrators steht Beispielhaft für die Benutzergruppe, die diese Benachrichtigung erhalten soll. Darauf folgt dann das section:key Format, wobei im ersten Teil die Überschrift, im zweiten Teil ein entsprechender Text ausgegeben wird.
Möchte man eine Benachrichtigung z.B. über ein externes Script bei inaktiver App auslösen wollen, so muss ein zusätzlicher Eintrag in der Datei config erfolgen. Hier wird festgeleg, welche section:key Werte bei inaktiver App ausgeführt werden dürfen. Entscheidend sind Nachfolgen die letzten drei Einträge…
Ich hoffe, ich konnte dieses HowTo einigermaßen verständlich rüber bringen. Falls Fragen offen bleiben, werde ich gerne versuchen, diese zu beantworten.
Noch ein Hinweis: Die eckigen Klammern bei [PAKET-NAME] dienen nur der Übersicht und werden nicht mitgeschrieben.
Viel Spaß
Tommes
Ausgehend von der Standard Paket Dateisystem Hierarchie [dsmuidir] wird unter /var/packages/[PAKET-NAME]/target/ui eine neue Ordnerstruktur aufgebaut. In diesem Zweig werden die entsprechenden Sprachdateien zur späteren Ausgabe von DSM-Desktop-Benachrichtigungen abgelegt.
JSON:
ui (specified by dsmuidir in INFO)
??? texts
??? enu
| ??? strings
??? ger
| ??? strings
??? ...
??? strings
Der jeweilige Inhalt einer Sprachdatei strings wird im sogenannten section:key Format (Synology spricht hier von einem i18n string) abgelegt.
JSON:
[app_tree]
index_title="This is a title"
node_1="This is node1"
Abschließend sollte bei allen neu angelegten Ordnern und Dateien noch der Eigentümer auf [PAKET-NAME]:[PAKET-NAME] sowie die Rechte auf 755 oder auch 644 geändert werden.
Der nun folgende Befehl löst die eigentliche DSM-Desktop-Benachrichtigung aus. Hierbei wird die Benachrichtigung an das im DSM aktive Paket gebunden. Das bedeutet, das der Befehl nur dann korrekt ausgeführt wird, wenn das zugehörige Paket im DSM aktiv, sprich das App Fenster geöffnet ist, oder sich zumindest minimiert in der Taskleiste befindet.
Bash:
synodsmnotify -c SYNO.SDS._ThirdParty.App.[PAKET-NAME] @administrators [PAKET-NAME]:app_tree:index_title [PAKET-NAME]:app_tree:node_1
Das sieht erstmal ein wenig verwirrend aus, ist bei genauerer Betrachtung aber gut zu lesen. Die Bezeichnung SYNO.SDS._ThirdParty.App.[PAKET-NAME] wird durch den "url:" type in der Datei config definiert. @administrators steht Beispielhaft für die Benutzergruppe, die diese Benachrichtigung erhalten soll. Darauf folgt dann das section:key Format, wobei im ersten Teil die Überschrift, im zweiten Teil ein entsprechender Text ausgegeben wird.
Möchte man eine Benachrichtigung z.B. über ein externes Script bei inaktiver App auslösen wollen, so muss ein zusätzlicher Eintrag in der Datei config erfolgen. Hier wird festgeleg, welche section:key Werte bei inaktiver App ausgeführt werden dürfen. Entscheidend sind Nachfolgen die letzten drei Einträge…
JSON:
{
".url": {
"SYNO.SDS._ThirdParty.App.[PAKET-NAME]": {
"type": "url",
"icon": "images/app_{0}.png",
"title": "Test App1",
"desc": "Description",
"url": "http://www.yahoo.com",
"allUsers": true,
"preloadTexts": [
"app_tree:index_title",
"app_tree:node_1"
]
}
}
Ich hoffe, ich konnte dieses HowTo einigermaßen verständlich rüber bringen. Falls Fragen offen bleiben, werde ich gerne versuchen, diese zu beantworten.
Noch ein Hinweis: Die eckigen Klammern bei [PAKET-NAME] dienen nur der Übersicht und werden nicht mitgeschrieben.
Viel Spaß
Tommes
Zuletzt bearbeitet: