สร้างบอทแจ้งเตือนบน Telegram
ข่าวสะเทือนวงการวันนี้คงหนีไม่พ้น LINE จะปิดบริการ LINE Notify ซึ่งคนไทยไปห้อยตัวอยู่ด้วยไว้เยอะมาก วันนี้เลยเอาวิธีทำบอทรับแจ้งเตือนบน Telegram แบบโคตรรรรรรรรรง่ายมาเสนอกันเป็นทางเลือก
ข้อดีคือมันเป็นการสร้างระบบแจ้งเตือนขึ้นมาบนระบบบอทของ Telegram อีกที นั่นแปลว่าวันดีคืนดีจะไม่โดนปิดทิ้งแน่นอน (เพราะนั่นคือ Telegram ต้องปิดระบบบอททั้งหมด)
สร้างบอทก่อน
บอทเทเลแกรมสร้างง่ายมาก ให้เราแอดบัญชี @BotFather เข้าไป จากนั้นพิมพ์สั่ง /newbot
ตั้งชื่อและ username ให้เรียบร้อย เสร็จ! (username ต้องลงท้ายด้วยคำว่า bot)
เราจะได้ API มาอันนึง เซฟเก็บไว้ก่อน
ถึงตรงนี้ต้องบอกก่อนว่าอันนี้เป็นการสร้างบอทใช้คนเดียว แล้วจะล็อก Chat ID ไว้เป็นแชทของเราเท่านั้น ดังนั้นคนอื่นแอดมาก็จะไม่เห็นการแจ้งเตือนใดๆ สำหรับการเอาค่า Chat ID นี้ ให้เราแอดบอทที่เราเพิ่งสร้างขึ้นมา แล้วทักอะไรไปก็ได้ทีนึงเพื่อสร้างห้องแชทขึ้น มันจะขึ้นอ่านไม่ตอบ ไม่ต้องเสียใจว่าโดนบอทเท บอทไม่ใช่สาวที่คุยด้วยอยู่ เราต้องการแค่นี้แหละ
จากนั้นเปิดไปที่ URL นี้ และอย่าลืมเปลี่ยน {{APY_Key}}
ให้เป็นคีย์ที่เราได้มาจาก @BotFather ด้วยนะ
https://api.telegram.org/bot{{API_Key}}/getUpdates
ซึ่งเราจะพบกับ response แบบนี้
ค่าที่เราต้องการคือ result[0].message.chat.id
นั่นเอง
ส่งข้อความหาบอท
วิธีส่งข้อความก็ง่ายมาก เช่นถ้าจะส่งข้อความธรรมดาๆ ก็ส่ง payload หน้าตาแบบนี้ไปที่ /sendMessage
https://api.telegram.org/bot{{API_Key}}/sendMessage
{
"chat_id": "*********",
"text": "Reply from Bot API"
}
หรือถ้าอยากส่งภาพไปด้วย ก็ส่ง payload ไปที่ /sendPhoto
https://api.telegram.org/bot{{API_Key}}/sendPhoto
{
"chat_id": "*********",
"caption": "Sending Photo",
"photo": "https://jirayu.in.th/wp-content/uploads/2024/10/telegram-logo-telegram-logo.png"
}
ข้อจำกัดของการส่งภาพเป็น URL เข้าไปก็ขึ้นขนาดไฟล์สูงสุดจะอยู่ที่ 5MB เท่านั้น แต่ก็น่าจะพอสำหรับการแจ้งเตือนทั่วไปอยู่แล้ว
และการส่ง document ต่างๆ เช่นไฟล์ PDF (ขนาดสูงสุด 50MB) จะเป็นการส่ง payload ไปยัง /sendDocument
https://api.telegram.org/bot{{API_Key}}/sendDocument
{
"chat_id": "*********",
"caption": "Sending Document",
"document": "https://jirayu.in.th/wp-content/uploads/2024/09/DnD-Character.pdf"
}
Simplify ขึ้นอีกนิดด้วย API Wrapper
ก่อนหน้านี้เราเคยใช้ Cloudflare Workers และ Worker Routes บน Cloudflare ในการทำตัวแปลงภาพเป็น WebP กันไปแล้ว ซึ่งรอบนี้เราจะวนกลับมาใช้ท่านี้อีกครั้งหนึ่ง
เซ็ตอัพเหมือนเดิมทุกอย่าง คือดีพลอย Worker ขึ้นไป แล้วไปตั้ง Worker Route ให้ชี้ไปที่ Worker ที่เราสร้างขึ้น แต่ครั้งนี้เราจะเปลี่ยน Worker เป็นตัวนี้ (งานหยาบ)
https://github.com/IronGhost63/telegram-notification-bot-bridge
ซึ่ง Payload ของเราก็จะง่ายขึ้นอีกหน่อย ส่งไปแค่นี้พอ
{
"api_key": <API Key>,
"chat_id": <Chat ID>,
"text": <ข้อความ>,
"image": <URL รูปภาพ>
"file": <URL ไฟล์>
}
ในกรณีที่เราส่ง image หรือ file ไปด้วย ข้อความใน text จะถูกเอาไปใช้เป็น caption อัตโนมัติ
ลองส่งเล่นได้ที่นี่
https://jirayu.in.th/workers/wp63-echo/