DSM 7 et les notifications push
Depuis la version 7 de DSM, il est possible de configurer des Webhooks.

Cependant, il y a un hic !
Les données au format JSON envoyé par le Synology ne sont pas valides.
En effet, ils ont laissé trainer des sauts de lignes au lieu d’utiliser “/n”. Gotify bête est méchant refuse catégoriquement la requête entrante.
J’ai rapporté le bug il y a quelques mois, mais même après validation de leurs parts, toujours pas de correctif à l’heure actuel.
Perdant un peu patience, j’ai donc cherché dans l’intégralité des fichiers du système du texte contenant l’adresse de mon serveur Gotify. Et, j’ai trouvé une solution !
ℹ️ Pour info
Depuis la version 7.1 de DSM le bug semble résolu. Ce tuto n’a plus lieu d’être si vous avez la version 7.1 ou supérieur installé sur votre NAS.
Passons à la pratique !
Prérequis :
Synology DSM 7.0 ou supérieur.
Un accès SSH avec les droits root au Synology.
Et, une instance Gotify… bien sûr.
Je vous épargne la création d’une App sur Gotify et la récupération du token. Si vous êtes là, c’est que vous connaissez.
Première étape, créer une notification webhook sur le Synology
Paramètres -> 1 – Notification -> 2 – Service Push -> 3 – Gérer les webhooks
Dans la fenêtre des webhooks cliquez sur “Ajouter”.

Cliquez sur “Personnalisé”

- Nom du fournisseur : Le nom que vous souhaitez (exemple : Gotify)
- Objet : Laisser tel quel
- URL du webhook : L’adresse de l’API de votre serveur Gotify contenant aussi le token (exemple : https://push.machin.fr/message?token=57XXXXX_89
- Méthode HTTP : POST
Cliquez sur “Suivant”
L’étape d’après “Modifier l’en-tête de la demande HTTP” ne va pas nous servir. Cliquez encore une fois sur “Suivant”

- Paramètre : message
- Valeur : hello world (oui, c’est bizarre, mais Synology l’impose pour la configuration)
Cliquez sur “Suivant”

Dernière étape dans la partie graphique
- token : Autre
- message : Contenu du message
Puis cliquez sur “Appliquez”. Si tout est correct, l’ajout devrait être terminé.
Ça devrait ressembler à un truc comme ça :

Maintenant la partie SSH
Connectez-vous à votre Synology via SSH. Comme pour Gotify je ne rentrerais pas dans les détails pour l’activation du Shell et la connexion SSH.
Éditer en suite le fichier /usr/syno/etc/synowebhook.conf
avec les droits root.
sudo vi /usr/syno/etc/synowebhook.conf
Vous devriez avoir quelque chose qui ressemble à ceci :
"Gotify":{"needssl":true,"port":443,"prefix":"Un nouvel événement système s'est produit sur votre %HOSTNAME% le %DATE% à %TIME%.","req_header":"","req_method":"post","req_param":"{\"message\":\"@@FULLTEXT@@\"}","sepchar":" ","template":"https://push.machin.fr/message?token=57XXXXX_89","type":"custom","url":"https://push.machin.fr/message?token=57XXXXX_89"}
Pour plus de clarté dans mes explications et comme je suis un mec sympa, j’ai indenté le code. Ce qui donne :
"Gotify": {
"needssl": true,
"port": 443,
"prefix": "Un nouvel événement système s'est produit sur votre %HOSTNAME% le %DATE% à %TIME%.",
"req_header": "",
"req_method": "post",
"req_param": "{\"message\":\"@@FULLTEXT@@\"}",
"sepchar": " ",
"template": "https://push.machin.fr/message?token=57XXXXX_89",
"type": "custom",
"url": "https://push.machin.fr/message?token=57XXXXX_89"
}
Le but est de remplacer {\"message\":\"@@FULLTEXT@@\"}
par {\"message\":\"@@PREFIX@@\\n@@TEXT@@\"}
Ça devrait ressembler à ça :
"Gotify": {
"needssl": true,
"port": 443,
"prefix": "Un nouvel événement système s'est produit sur votre %HOSTNAME% le %DATE% à %TIME%.",
"req_header": "",
"req_method": "post",
"req_param": "{\"message\":\"@@PREFIX@@\\n@@TEXT@@\"}",
"sepchar": " ",
"template": "https://push.machin.fr/message?token=57XXXXX_89",
"type": "custom",
"url": "https://push.machin.fr/message?token=57XXXXX_89"
}
Attention à bien conserver les bons guillemets aux bons endroits.
Si vous avez changé la mise en forme comme moi, je vous conseille de la restaurer avant de sauvegarder. Je ne sais pas comment DSM réagirai.
Il vous suffit en suite de sauvegarder.
Il est fortement déconseillé d’aller éditer les paramètres webhook depuis DSM après notre petite bidouille. Vous pouvez les éditer depuis le fichier de config sans problème, si vous souhaitez changer le token par exemple.
Pour les non-initiés à Vi
Pour passer en mode édition, appuyez sur la touche “A” de voter clavier.
Pour sauvegarde, appuyez sur “Echap” puis entrez “:wq” (write quit)
Si vous souhaitez quitter vi sans sauvegarder, entrez “:q!” (quit override)
Et, voilà, vous devriez recevoir les notifications de votre NAS directement sur Gotify.
Si vous ne savez pas quoi activer dans les règles de notification, je vous conseille de tout activer dans la colonne “Services Push” puis de les désactiver au fur et à mesure que vous les recevez si elles ne vous sont pas utiles.
Hey !
Merci pour le tuto ! Malheureusement et étonnamment sans succès de mon côté avec DSM 7.0.1.
J’ai aussi essayé avec l’utilisation du header X-Gotify-Key à la place du query param token, ainsi qu’un header Content-Type application/json au cas où.
Cela fonctionne-t-il donc toujours de votre côté ? Et pouvez-vous m’expliquer comment vous avez debugger ?
En vous remerciant d’avance !
Oh, je viens juste de tomber sur votre issue en question : https://github.com/gotify/server/issues/429
MITMProxy sera donc ma solution pour debugger…
J’ai solutionné le problème en utilisant la commande proposée (sudo sed -i -e ‘s/@@FULLTEXT@@/@@PREFIX@@\\\\n@@TEXT@@/’ /usr/syno/etc/synowebhook.conf)
Ce qui revient exactement à ce que vous proposez dans votre tuto et que j’ai pourtant suivi mais il faut croire que mon copié/collé ne correspondait pas.
Merci rubber duck !
Merci pour ton retour.
C’est vrai que j’aurais pu utiliser directement la commande sed. Mais, ne voulant pas “casser” d’éventuel d’autres entrées dans le fichier, j’ai préféré faire ça à la main.