Telegram Bot ง่ายๆ สำหรับแปลคำขอ POST
ด้วยเพย์โหลด JSON เป็นข้อความพุช 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 * | เชือก | ข้อความจริงในรูปแบบข้อความธรรมดาหรือรูปแบบ Markdown |
origin | เชือก | สิ่งที่จะแสดงเป็นผู้ส่งข้อความของคุณ |
type | [ TEXT , FILE ] | ประเภทข้อความ เช่น ส่งข้อความหรือไฟล์ (ค่าเริ่มต้น: TEXT ) |
file ** | ฐาน64 | เนื้อหาไฟล์ที่เข้ารหัส Base64 |
filename ** | เชือก | ชื่อของไฟล์ที่จะส่ง |
options | วัตถุ | ตัวเลือกเพิ่มเติมที่จะผ่าน |
options.disable_link_previews | บูล | จะแสดงตัวอย่างลิงก์ในการแชทหรือไม่ |
*
= จำเป็นสำหรับ type: TEXT
, **
= จำเป็นสำหรับ type: FILE
รายละเอียดเพิ่มเติมสามารถพบได้ที่นี่
เพียงใช้อินสแตนซ์ที่โฮสต์อย่างเป็นทางการ จำกัดอัตราคำขอไว้ที่ 240 คำขอต่อผู้รับต่อวัน
เมื่อโฮสต์อินสแตนซ์ Telepush ของคุณเอง คุณต้องสร้างบอทใหม่ด้วย @BotFather ก่อน ด้วยเหตุนี้ คุณจะได้รับโทเค็นที่คุณส่งต่อไปยัง Telepush เมื่อเริ่มต้นเซิร์ฟเวอร์ (ดูด้านล่าง)
ปริมาณนักเทียบท่า $ สร้าง telepush_data $ นักเทียบท่ารัน -d -p 8080:8080 -v telepush_data:/srv/data --ชื่อเทเลพุช ghcr.io/muety/telepush -โหมดเว็บฮุค -โทเค็น <YOUR_BOTFATHER_TOKEN>
ดูที่นี่
# ติดตั้ง$ ไปติดตั้ง github.com/muety/telepush@latest# Run (โหมด webhook)$ ./telepush -token <YOUR_BOTFATHER_TOKEN> -mode webhook
คุณสามารถรันบอทในโหมด long-polling- หรือ webhook ( -mode [webhook|poll]
) สำหรับการใช้งานจริง แนะนำให้ใช้ตัวเลือกหลังด้วยเหตุผลหลายประการ อย่างไรก็ตาม คุณจะต้องมีเซิร์ฟเวอร์ที่มี IP แบบคงที่และใบรับรอง TLS
รายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่า webhook สามารถพบได้ใน Marvelous Guide to All Things Webhook ของ Marvin
ในโหมด webhook นั้น Telegram กำหนดให้ตำแหน่งข้อมูลการอัปเดตของคุณเพื่อใช้ HTTPS หากต้องการเปิดใช้งาน ให้เรียกใช้ Telepush หลังพร็อกซีย้อนกลับ (เช่น แคดดี้) ซึ่งจะยุติ TLS
หรือปล่อยให้ Telepush จัดการ TLS เอง คุณจะต้องมี ใบรับรอง สำหรับสิ่งนี้ ดังนั้นขอใบรับรองจาก Let's Encrypt หรือสร้างใบรับรองที่ลงนามด้วยตนเอง จากนั้นใช้ -useHttps
ร่วมกับ -certPath
และ -keyPath
ชี้ไปที่ใบรับรองและไฟล์คีย์ส่วนตัวของคุณตามลำดับ
สำหรับใบรับรองที่ลงนามด้วยตนเอง คุณจะต้องส่งคีย์สาธารณะของคุณไปยังวิธี setWebhook
ของ Telegram นอกจากนี้ โปรดดูคำแนะนำเหล่านี้
-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 ของคุณเมื่อใช้โหมด webhook กับ useHttp
ไม่มีค่าเริ่มต้น
-keyPath
( string
) – เส้นทางของคีย์ SSL ส่วนตัวของคุณเมื่อใช้โหมด webhook กับ useHttp
ไม่มีค่าเริ่มต้น
-dataDir
( string
) - ตำแหน่งระบบไฟล์ที่จะจัดเก็บข้อมูลถาวร ค่าเริ่ม .
เป็น -
-inlets
( string
) – เส้นทางไปยังโฟลเดอร์ที่มีคำจำกัดความทางเข้าตามการกำหนดค่าในรูปแบบ YAML ค่าเริ่มต้นเป็น ./inlets.d
-blacklist
( string
) – พาธไปยังไฟล์บัญชีดำที่แยกบรรทัดซึ่งมี ID ผู้ใช้ (ส่ง /help
เพื่อรับ ID ของคุณ) ค่าเริ่มต้นคือ blacklist.txt
-whitelist
( string
) – พาธไปยังไฟล์ไวท์ลิสต์ที่แยกบรรทัดซึ่งมี ID ผู้ใช้ (ส่ง /help
เพื่อรับ ID ของคุณ) ค่าเริ่มต้นคือ whitelist.txt
-rateLimit
( int
) – จำนวนข้อความสูงสุดที่จะส่งถึงผู้รับแต่ละรายต่อชั่วโมง ค่าเริ่มต้นคือ 100
-truncateMsgs
( bool
) – ตัดข้อความที่ยาวเกินไปให้เหลือ 4,096 อักขระแทนที่จะปฏิเสธ ค่าเริ่มต้นเป็น false
-metrics
( bool
) – เปิดเผยเมตริก Prometheus ภายใต้ /metrics
หรือไม่ ค่าเริ่มต้นเป็น false
เมื่อใช้อิมเมจ Docker คุณสามารถตั้งค่าตัวเลือกการกำหนดค่าด้านบนส่วนใหญ่ผ่าน ตัวแปรสภาพแวดล้อม (ส่งผ่านไปยัง docker run
โดยใช้ -e
) เช่น APP_USE_HTTPS=true
, APP_CERT_PATH=/etc/telepush.crt
ฯลฯ สำหรับรายละเอียด โปรดดู entrypoint.sh
.
(aka. รายการที่อนุญาตกับรายการบล็อก)
Inlets จัดเตรียมกลไกในการประมวลผลข้อมูลขาเข้าล่วงหน้าซึ่งมีรูปแบบที่แตกต่างจากที่บอทคาดหวังตามปกติ
สิ่งนี้มีประโยชน์อย่างยิ่งหากข้อมูลถูกส่งโดยแอปพลิเคชันภายนอกซึ่งเป็นบุคคลที่สามซึ่งคุณไม่สามารถแก้ไขได้
ตัวอย่างเช่น คุณอาจต้องการส่งการแจ้งเตือนจาก Alertmanager ของ Prometheus ในรูปแบบการแจ้งเตือนทางโทรเลข อย่างไรก็ตาม คำขอเว็บฮุคของ Alertmanager ดูแตกต่างไปจากรูปแบบอินพุตเริ่มต้นของ Telepush มาก เพื่อให้ยังคงพอดี คุณสามารถเขียน Inlet เพื่อนวดข้อมูลตามนั้นได้
หากต้องการระบุทางเข้าโดยตรง ให้ขอ https://telepush.dev/api/inlets/<inlet_name>
โปรดทราบว่า /api/inlets/default
เทียบเท่ากับ /api/messages
ช่องทางต่อไปนี้มีอยู่ในปัจจุบัน:
ชื่อ | คำอธิบาย | สถานะ |
---|---|---|
default | เพียงส่งคำขอโดยไม่มีการเปลี่ยนแปลงใดๆ | |
alertmanager | ใช้คำขอ Webhook ของ Alertmanager | |
grafana | ใช้คำขอ Grafana webhook | |
webmentionio | ยอมรับคำขอ Webmention.io webhook เพื่อแจ้งเตือนเกี่ยวกับ Webmention ใหม่ของหนึ่งในบทความของคุณ | |
stripe | ยอมรับ Stripe webhooks เพื่อแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงสถานะการสมัครสมาชิก | |
bitbucket | ยอมรับคำขอ Bitbucket webhook เพื่อแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงสถานะของไปป์ไลน์ |
คุณยังสามารถ กำหนดช่องเข้าที่กำหนดเองของคุณเอง ใน 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 ในรูปแบบปฏิบัติการเดียว คุณ ต้องไม่ใช้โหมด dev เว้นแต่ว่าซอร์สโค้ดของ Telepush จะอยู่ในไดเร็กทอรีเดียวกัน ตรวจสอบให้แน่ใจว่าไม่ผ่าน -env dev
ในกรณีนี้
MIT @ เฟอร์ดินานด์ มูทช์