Un simple robot Telegram pour traduire les requêtes POST
avec la charge utile JSON en messages push Telegram. Similaire à Gotify et ntfy.sh, sauf sans application supplémentaire. Utile pour la surveillance du serveur, les alertes et toute autre chose.
Ouvrez Telegram, démarrez une discussion avec TelepushBot (ou votre propre bot, respectivement) et tapez /start
pour obtenir un jeton de destinataire.
Les messages sont envoyés via POST
à https://telepush.dev/api/[[inlets/<inlet_name>]|messages]/<recipient>
.
RECIPIENT_TONEN=... # Le jeton que vous avez reçu en utilisant /start.curl -XPOST -H 'Type de contenu : application/json' -d '{ "text": "*Bonjour tout le monde !* (oui, c'est Markdown)" }' "https://telepush.dev/api/messages/${RECIPIENT_TONEN}"
Lorsque vous hébergez votre propre instance, remplacez l'URL respectivement.
Clé | Taper | Description |
---|---|---|
text * | chaîne | Message réel en texte brut ou au format Markdown |
origin | chaîne | Qu'est-ce qui sera affiché en tant qu'expéditeur de votre message |
type | [ TEXT , FILE ] | Type de message, c'est à dire pour envoyer du texte ou un fichier (par défaut : TEXT ) |
file ** | base64 | Contenu du fichier encodé en base64 |
filename ** | chaîne | Nom du fichier à envoyer |
options | objet | Options supplémentaires à réussir |
options.disable_link_previews | bouffon | S'il faut afficher des aperçus des liens dans le chat |
*
= requis pour type: TEXT
, **
= requis pour type: FILE
Plus de détails à trouver ici.
Utilisez simplement l’instance hébergée officielle. Débit limité à 240 requêtes par destinataire et par jour.
Lorsque vous hébergez votre propre instance Telepush, vous devez d'abord créer un nouveau bot avec @BotFather. De ce fait, vous obtiendrez un token que vous transmettrez ensuite à Telepush lors du démarrage du serveur (voir ci-dessous).
$ Docker volume créer telepush_data $ docker exécuter -d -p 8080:8080 -v telepush_data:/srv/data --name télépush ghcr.io/muety/telepush webhook en mode -jeton <VOTRE_BOTFATHER_TOKEN>
Voir ici.
# Installer$ allez installer github.com/muety/telepush@latest# Exécuter (mode webhook)$ ./telepush -token <YOUR_BOTFATHER_TOKEN> -mode webhook
Vous pouvez exécuter le bot en mode interrogation longue ou webhook ( -mode [webhook|poll]
). Pour une utilisation en production, cette dernière option est recommandée pour diverses raisons. Cependant, vous aurez besoin d'un serveur avec une IP statique et un certificat TLS.
Plus de détails sur la configuration du webhook peuvent être trouvés dans le Marvelous Guide to All Things Webhook de Marvin .
En mode webhook, Telegram exige que votre point de terminaison de mises à jour utilise HTTPS. Pour activer cela, exécutez Telepush derrière un proxy inverse (comme Caddy), qui met fin à TLS.
Ou laissez Telepush lui-même gérer TLS. Vous aurez besoin d'un certificat pour cela, alors obtenez-en un auprès de Let's Encrypt ou créez-en un auto-signé, puis utilisez -useHttps
en combinaison avec -certPath
et -keyPath
pointant respectivement vers votre certificat et vos fichiers de clé privée.
Pour les certificats auto-signés, vous devrez également transmettre votre clé publique à la méthode setWebhook
de Telegram, consultez ces instructions.
-address
( string
) – Adresse réseau (IPv4) à laquelle se lier. La valeur par défaut est 127.0.0.1
.
-address6
( string
) – Adresse réseau (IPv6) à laquelle se lier. La valeur par défaut est ::1
.
-disableIPv6
( bool
) – Indique s'il faut désactiver l'écoute sur les interfaces IPv4 et IPv6. La valeur par défaut est false
.
-port
( int
) – Port TCP sur lequel écouter. La valeur par défaut est 8080
.
-proxy
( string
) – Chaîne de connexion proxy à utiliser pour le mode d'interrogation longue. La valeur par défaut est Aucun.
-urlSecret
( string
) – Suffixe aléatoire à ajouter à votre itinéraire de mises à jour appelé par les serveurs de Telegram pour éviter le spam. La valeur par défaut est Aucun.
-useHttps
( bool
) – Indique s'il faut utiliser HTTPS. La valeur par défaut est false
.
-certPath
( string
) – Chemin de votre certificat SSL lors de l'utilisation du mode webhook avec useHttp
. Par défaut, aucun.
-keyPath
( string
) – Chemin de votre clé SSL privée lors de l'utilisation du mode webhook avec useHttp
. Par défaut, aucun.
-dataDir
( string
) – Emplacement du système de fichiers où stocker les données persistantes. La valeur par défaut est .
.
-inlets
( string
) – Chemin d'accès au dossier contenant les définitions d'entrée basées sur la configuration au format YAML. La valeur par défaut est ./inlets.d
.
-blacklist
( string
) – Chemin d'accès à un fichier de liste noire séparé par des lignes contenant les identifiants utilisateur (envoyez /help
pour obtenir votre identifiant). La valeur par défaut est blacklist.txt
.
-whitelist
( string
) – Chemin d'accès à un fichier de liste blanche séparé par des lignes contenant les ID utilisateur (envoyez /help
pour obtenir votre identifiant). La valeur par défaut est whitelist.txt
.
-rateLimit
( int
) – Nombre maximum de messages à remettre à chaque destinataire par heure. La valeur par défaut est 100
.
-truncateMsgs
( bool
) – Tronque les messages trop longs à 4 096 caractères au lieu de les rejeter. La valeur par défaut est false
.
-metrics
( bool
) – S'il faut exposer les métriques Prometheus sous /metrics
. La valeur par défaut est false
.
Lorsque vous utilisez l'image Docker, vous pouvez également définir la plupart des options de configuration ci-dessus via des variables d'environnement (transmises à docker run
en utilisant -e
), par exemple APP_USE_HTTPS=true
, APP_CERT_PATH=/etc/telepush.crt
, etc. Pour plus de détails, voir entrypoint.sh
.
(c'est-à-dire liste verte et liste de blocage)
Les entrées fournissent un mécanisme permettant de prétraiter les données entrantes qui se présentent dans un format différent de celui normalement attendu par le bot.
Ceci est particulièrement utile si les données sont envoyées par des applications externes tierces que vous ne pouvez pas modifier.
Par exemple, vous souhaiterez peut-être envoyer des alertes d'Alertmanager de Prometheus sous forme de notifications Telegram. Cependant, les requêtes de webhook d'Alertmanager sont très différentes du format d'entrée par défaut de Telepush. Pour toujours les adapter, vous pouvez écrire un Inlet pour masser les données en conséquence.
Pour adresser directement une entrée, demandez https://telepush.dev/api/inlets/<inlet_name>
. Notez que /api/inlets/default
est équivalent à /api/messages
.
Les entrées suivantes sont actuellement disponibles :
Nom | Description | Statut |
---|---|---|
default | Transmet simplement la demande sans aucune modification | ✅ |
alertmanager | Consomme les requêtes de webhook Alertmanager | ✅ |
grafana | Consomme les requêtes de webhook Grafana | ✅ |
webmentionio | Accepte les demandes de webhook Webmention.io pour notifier une nouvelle webmention d'un de vos articles | ✅ |
stripe | Accepte les webhooks Stripe pour informer des changements de statut d'abonnement | ✅ |
bitbucket | Accepte les requêtes de webhook Bitbucket pour informer d'un changement d'état du pipeline | ⏳ |
Vous pouvez également définir vos propres entrées personnalisées dans YAML. Une documentation supplémentaire à ce sujet et sur les entrées individuelles préexistantes est disponible ici.
Pour toutes les entrées, les options suivantes peuvent être transmises en tant que paramètres de requête :
Paramètre | Description |
---|---|
disable_link_previews | Désactivez une version d'aperçu des liens Web détectés dans le message. Par défaut : false . |
disable_markdown | Désactivez le message que vous tentez d'analyser en tant que Markdown. Par défaut : false . |
Exemple : POST https://telepush.dev/api/inlets/default?disable_markdown=true&disable_link_previews=true
.
Les métriques fondamentales de Prometheus sont exposées sous /metrics
, si l'indicateur -metrics
est transmis. Ils comprennent :
telepush_messages_total{origin="string", type="string"}
telepush_requests_total{success="string"}
panic: template: pattern matches no files: *.tpl.html
Lorsque vous exécutez Telepush en tant qu'exécutable unique, vous ne devez pas utiliser le mode développement à moins que le code source de Telepush ne se trouve dans le même répertoire. Assurez-vous de ne pas transmettre -env dev
dans ce cas.
MIT @ Ferdinand Mütsch