Простой бот Telegram для перевода запросов POST
с полезной нагрузкой JSON в push-сообщения Telegram. Аналогичный Gotify и ntfy.sh, только без дополнительного приложения. Полезно для мониторинга сервера, оповещения и всего остального.
Откройте Telegram, начните чат с TelepushBot (или вашим собственным ботом соответственно) и введите /start
чтобы получить токен получателя.
Сообщения отправляются через POST
на https://telepush.dev/api/[[inlets/<inlet_name>]|messages]/<recipient>
.
RECIPIENT_TONEN=... # Токен, который вы получили с помощью /start.curl -XPOST -H 'Тип контента: приложение/json' -d '{ "text": "*Hello World!* (да, это Markdown)" }' "https://telepush.dev/api/messages/${RECIPIENT_TONEN}"
При размещении собственного экземпляра замените URL-адрес соответственно.
Ключ | Тип | Описание |
---|---|---|
text * | нить | Фактическое сообщение в виде обычного текста или формата Markdown. |
origin | нить | Что будет отображаться как отправитель вашего сообщения |
type | [ TEXT , FILE ] | Тип сообщения, т.е. для отправки текста или файла (по умолчанию: TEXT ). |
file ** | база64 | Содержимое файла в кодировке Base64 |
filename ** | нить | Имя файла для отправки |
options | объект | Дополнительные варианты прохождения |
options.disable_link_previews | логическое значение | Показывать ли превью ссылок в чате |
*
= требуется для type: TEXT
, **
= требуется для type: FILE
Более подробную информацию можно найти здесь.
Просто используйте официальный размещенный экземпляр. Скорость ограничена 240 запросами на одного получателя в день.
При размещении собственного экземпляра Telepush вам необходимо сначала создать нового бота с помощью @BotFather. В результате вы получите токен, который затем передадите Telepush при запуске сервера (см. ниже).
$ docker том создать telepush_data $ докер запустить -d -p 8080:8080 -v telepush_data:/srv/data --name телепуш ghcr.io/muety/telepush -режим веб-перехватчика -токен <ВАШ_БОТФАТЕР_ТОКЕН>
Смотрите здесь.
# Install$ go install github.com/muety/telepush@latest# Запуск (режим веб-перехватчика)$ ./telepush -token <YOUR_BOOTFATHER_TOKEN> -mode webhook
Вы можете запустить бота в режиме длительного опроса или в режиме веб-перехватчика ( -mode [webhook|poll]
). Для производственного использования рекомендуется последний вариант по разным причинам. Однако вам понадобится сервер со статическим IP-адресом и сертификатом TLS.
Более подробную информацию о настройке вебхука можно найти в «Marvin's Marvelous Guide to All Things Webhook» .
В режиме веб-перехватчика Telegram требует, чтобы ваша конечная точка обновлений использовала HTTPS. Чтобы включить это, либо запустите Telepush через обратный прокси-сервер (например, Caddy), который завершит TLS.
Или позвольте Telepush самому обрабатывать TLS. Для этого вам понадобится сертификат , поэтому либо получите его от Let's Encrypt, либо создайте самозаверяющий, а затем используйте -useHttps
в сочетании с -certPath
и -keyPath
указывающими на ваш сертификат и файлы закрытого ключа соответственно.
Для самозаверяющих сертификатов вам также необходимо будет передать свой открытый ключ методу Telegram setWebhook
, см. эти инструкции.
-address
( string
) – сетевой адрес (IPv4), к которому осуществляется привязка. По умолчанию 127.0.0.1
.
-address6
( string
) – Сетевой адрес (IPv6), к которому осуществляется привязка. По умолчанию ::1
.
-disableIPv6
( bool
) – отключить ли прослушивание на интерфейсах IPv4 и IPv6. По умолчанию установлено значение false
.
-port
( int
) – TCP-порт для прослушивания. По умолчанию 8080
.
-proxy
( string
) – строка подключения прокси-сервера, которая будет использоваться в режиме длительного опроса. По умолчанию нет.
-urlSecret
( string
) – случайный суффикс для добавления к маршруту обновлений, вызываемому серверами Telegram для предотвращения спама. По умолчанию нет.
-useHttps
( bool
) – использовать ли HTTPS. По умолчанию установлено значение false
.
-certPath
( string
) – путь к вашему SSL-сертификату при использовании режима веб-перехватчика с useHttp
. По умолчанию нет.
-keyPath
( string
) – путь к вашему личному ключу SSL при использовании режима веб-перехватчика с useHttp
. По умолчанию нет.
-dataDir
( string
) – расположение файловой системы, где хранятся постоянные данные. По умолчанию .
.
-inlets
( string
) – путь к папке, содержащей определения входов на основе конфигурации в формате YAML. По умолчанию ./inlets.d
.
-blacklist
( string
) – путь к файлу черного списка, разделенному строками, содержащему идентификаторы пользователей (отправьте /help
чтобы получить ваш идентификатор). По умолчанию — blacklist.txt
.
-whitelist
( string
) – путь к файлу белого списка, разделенному строками, содержащему идентификаторы пользователей (отправьте /help
чтобы получить ваш идентификатор). По умолчанию — whitelist.txt
.
-rateLimit
( int
) – Максимальное количество сообщений, доставляемых каждому получателю в час. По умолчанию 100
.
-truncateMsgs
( bool
) – усекать слишком длинные сообщения до 4096 символов вместо того, чтобы отклонять их. По умолчанию установлено значение false
.
-metrics
( bool
) – отображать ли метрики Prometheus в /metrics
. По умолчанию установлено значение false
.
При использовании образа Docker вы также можете установить большинство из приведенных выше параметров конфигурации через переменные среды (передаваемые при docker run
с помощью -e
), например APP_USE_HTTPS=true
, APP_CERT_PATH=/etc/telepush.crt
и т. д. Подробности см. entrypoint.sh
. entrypoint.sh
.
(также известный как список разрешенных и черный список)
Входные элементы предоставляют механизм предварительной обработки входящих данных, которые поступают в формате, отличном от того, который обычно ожидает бот.
Это особенно полезно, если данные отправляются внешними сторонними приложениями, которые вы не можете изменить.
Например, вы можете захотеть доставлять оповещения из Alertmanager Prometheus в виде уведомлений Telegram. Однако запросы веб-перехватчиков Alertmanager сильно отличаются от формата ввода Telepush по умолчанию. Чтобы они по-прежнему подходили, вы можете написать Inlet для соответствующей обработки данных.
Чтобы напрямую обратиться к входу, запросите https://telepush.dev/api/inlets/<inlet_name>
. Обратите внимание, что /api/inlets/default
эквивалентен /api/messages
.
В настоящее время доступны следующие входы:
Имя | Описание | Статус |
---|---|---|
default | Просто передает запрос без каких-либо изменений. | ✅ |
alertmanager | Потребляет запросы веб-перехватчика Alertmanager | ✅ |
grafana | Потребляет запросы веб-перехватчика Grafana | ✅ |
webmentionio | Принимает запросы веб-перехватчика Webmention.io для уведомления о новом Webmention одной из ваших статей. | ✅ |
stripe | Принимает веб-хуки Stripe для уведомления об изменении статуса подписки. | ✅ |
bitbucket | Принимает запросы веб-перехватчика Bitbucket для уведомления об изменении статуса конвейера. | ⏳ |
Вы также можете определить свои собственные входы в YAML. Дополнительную документацию по этому вопросу и по отдельным ранее существовавшим входным отверстиям можно найти здесь.
Для всех входов доступны следующие параметры для передачи в качестве параметров запроса:
Параметр | Описание |
---|---|
disable_link_previews | Отключите предварительную версию веб-ссылок, обнаруженных в сообщении. По умолчанию: false . |
disable_markdown | Отключите сообщение, которое пытается проанализировать как Markdown. По умолчанию: false . |
Пример: POST https://telepush.dev/api/inlets/default?disable_markdown=true&disable_link_previews=true
.
Фундаментальные метрики Prometheus отображаются в /metrics
, если передан флаг -metrics
. Они включают в себя:
telepush_messages_total{origin="string", type="string"}
telepush_requests_total{success="string"}
panic: template: pattern matches no files: *.tpl.html
При запуске Telepush как одного исполняемого файла вы не должны использовать режим разработки, если исходный код Telepush не находится в том же каталоге. В этом случае обязательно не используйте -env dev
.
MIT @ Фердинанд Мютш