JSON ペイロードを含むPOST
リクエストを Telegram プッシュ メッセージに変換するシンプルな Telegram ボット。 Gotify と ntfy.sh に似ていますが、追加のアプリがない点が異なります。サーバーの監視、アラート、その他あらゆる用途に役立ちます。
Telegram を開き、TelepushBot (または独自のボット) とのチャットを開始し、 /start
と入力して受信者トークンを取得します。
メッセージはPOST
経由でhttps://telepush.dev/api/[[inlets/<inlet_name>]|messages]/<recipient>
に送信されます。
RECIPIENT_TONEN=... # /start.curl -XPOST を使用して受け取ったトークン -H 'コンテンツタイプ: application/json' -d '{ "text": "*Hello World!* (はい、これは Markdown です)" }' 「https://telepush.dev/api/messages/${RECIPIENT_TONEN}」
独自のインスタンスをホストする場合は、URL をそれぞれ置き換えてください。
鍵 | タイプ | 説明 |
---|---|---|
text * | 弦 | プレーンテキストまたはマークダウン形式の実際のメッセージ |
origin | 弦 | メッセージの送信者として表示される内容 |
type | [ TEXT 、 FILE ] | メッセージ タイプ、つまりテキストまたはファイルを送信します (デフォルト: TEXT ) |
file ** | Base64 | Base64 でエンコードされたファイルのコンテンツ |
filename ** | 弦 | 送信するファイルの名前 |
options | 物体 | 渡す追加オプション |
options.disable_link_previews | ブール | チャット内のリンクのプレビューを表示するかどうか |
*
= type: TEXT
の場合は必須、 **
= type: FILE
の場合は必須
詳細については、こちらをご覧ください。
公式にホストされているインスタンスを使用するだけです。受信者あたり 1 日あたり 240 リクエストにレート制限されています。
独自の Telepush インスタンスをホストする場合は、最初に @BotFather を使用して新しいボットを作成する必要があります。その結果、トークンを取得して、サーバーの起動時に Telepush に渡します (以下を参照)。
$ docker volume create telepush_data $ docker run -d -p 8080:8080 -v telepush_data:/srv/data --name テレプッシュ ghcr.io/muety/telepush -mode Webhook -トークン <YOUR_BOTFAHER_TOKEN>
ここを参照してください。
# インストール$ go install github.com/muety/telepush@latest# 実行 (webhook モード)$ ./telepush -token <YOUR_BOTFATHER_TOKEN> -mode webhook
ボットはロングポーリングモードまたは Webhook モード ( -mode [webhook|poll]
) で実行できます。運用環境での使用には、さまざまな理由から後者のオプションをお勧めします。ただし、静的 IP と TLS 証明書を持つサーバーが必要です。
Webhook のセットアップの詳細については、「Marvin's Marvelous Guide to All Things Webhook」を参照してください。
Webhook モードでは、Telegram は更新エンドポイントで HTTPS を使用する必要があります。これを有効にするには、TLS を終了するリバース プロキシ (Caddy など) の背後でTelepush を実行します。
または、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
) – useHttp
で Webhook モードを使用する場合の SSL 証明書のパス。デフォルトはなしです。
-keyPath
( string
) – useHttp
で Webhook モードを使用する場合の秘密 SSL キーのパス。デフォルトはなしです。
-dataDir
( string
) – 永続データを保存するファイル システムの場所。デフォルトは です.
。
-inlets
( string
) – YAML 形式の構成ベースのインレット定義を含むフォルダーへのパス。デフォルトは./inlets.d
です。
-blacklist
( string
) – ユーザー ID を含む行区切りのブラックリスト ファイルへのパス (ID を取得するには/help
送信します)。デフォルトはblacklist.txt
です。
-whitelist
( string
) – ユーザー ID を含む行区切りのホワイトリスト ファイルへのパス (ID を取得するには/help
送信します)。デフォルトはwhitelist.txt
です。
-rateLimit
( int
) – 1 時間あたりに各受信者に配信されるメッセージの最大数。デフォルトは100
です。
-truncateMsgs
( bool
) – 長すぎるメッセージを拒否するのではなく、4096 文字に切り詰めます。デフォルトはfalse
です。
-metrics
( bool
) – /metrics
の下で Prometheus メトリクスを公開するかどうか。デフォルトはfalse
です。
Docker イメージを使用する場合は、環境変数( -e
使用してdocker run
に渡される) を介して上記の構成オプションのほとんどを設定することもできます (たとえば、 APP_USE_HTTPS=true
、 APP_CERT_PATH=/etc/telepush.crt
など)。 詳細については、 entrypoint.sh
を参照してください。 entrypoint.sh
。
(別名、許可リストとブロックリスト)
インレットは、ボットが通常予期する形式とは異なる形式で受信される受信データを前処理するメカニズムを提供します。
これは、変更できない外部のサードパーティ アプリケーションによってデータが送信される場合に特に便利です。
たとえば、Prometheus の Alertmanager からアラートを Telegram 通知として配信したい場合があります。ただし、Alertmanager の Webhook リクエストは、Telepush のデフォルトの入力形式とは大きく異なります。それらを適合させるには、それに応じてデータをマッサージするインレットを作成します。
インレットを直接アドレス指定するには、 https://telepush.dev/api/inlets/<inlet_name>
をリクエストします。 /api/inlets/default
/api/messages
と同等であることに注意してください。
現在、次のインレットが利用可能です。
名前 | 説明 | 状態 |
---|---|---|
default | リクエストを変更せずにそのまま渡すだけです | ✅ |
alertmanager | Alertmanager Webhook リクエストを消費します | ✅ |
grafana | Grafana Webhook リクエストを消費します | ✅ |
webmentionio | 記事の 1 つの新しい Webmention について通知する Webmention.io Webhook リクエストを受け入れます | ✅ |
stripe | Stripe Webhook を受け入れてサブスクリプションステータスの変更を通知します | ✅ |
bitbucket | パイプラインのステータス変更を通知するための Bitbucket Webhook リクエストを受け入れます | ⏳ |
YAML で独自のカスタム インレットを定義することもできます。これと個々の既存のインレットに関するさらなるドキュメントは、ここから入手できます。
すべてのインレットで、次のオプションをクエリ パラメーターとして渡すことができます。
パラメータ | 説明 |
---|---|
disable_link_previews | メッセージ内で検出された Web リンクのプレビュー バージョンを無効にします。デフォルト: false 。 |
disable_markdown | Markdown として解析しようとしているメッセージを無効にします。デフォルト: false 。 |
例: POST https://telepush.dev/api/inlets/default?disable_markdown=true&disable_link_previews=true
。
-metrics
フラグが渡された場合、基本的な Prometheus メトリクスは/metrics
の下で公開されます。それらには次のものが含まれます。
telepush_messages_total{origin="string", type="string"}
telepush_requests_total{success="string"}
panic: template: pattern matches no files: *.tpl.html
Telepush を単一の実行可能ファイルとして実行する場合、Telepush のソース コードが同じディレクトリ内にない限り、 dev モードを使用してはなりません。この場合は、 -env dev
渡さないようにしてください。
MIT @ フェルディナンド・ミュッチュ