剛開始寫這系列的時候,我滿懷信心地想:「三十天?簡單啦~AWS 這麼多坑可以寫三百天!」
結果沒幾天就開始懷疑人生,再來就開始懷疑自己,第二十九天開始突然意識到快跑完了,但想寫的東西似乎還沒寫完。
但既然都講到 API Gateway 跟 Lambda 了,就不得不講到跟「訊息軟體整合」這件事。
畢竟身為一個 IT 工程師,我們每天都在被訊息淹沒:
所以,能自動回覆、能主動推播錯誤訊息的 Bot,根本就是維運人生的救贖。
講到訊息整合,大家第一個想到的不是 LINE 就是 Telegram。
不過呢……LINE 的免費訊息額度就像你的 AWS 免費額度一樣,講究但用不久。
再加上 LINE 的 API 開放程度沒有 Telegram 的好,相較之下,Telegram 就像開放世界遊戲,
API 文件清楚、彈性高、開放友善,
最重要的是:可能是我比較偏心Telegram吧!
以前我們想讓 Telegram Bot 自動回訊息,
必須開一台伺服器,24 小時待命接收 Telegram 的通知。
結果伺服器每天閒著沒事幹,月初 AWS 帳單就寄來說:「你好,我又來收保護費了。」
但現在有了 API Gateway + Lambda,這一切都不一樣了!
伺服器可以下班、錢包也能喘口氣。
簡單講:
整個流程超像:
Telegram:「嘿,有人跟你 bot 說話!」
API Gateway:「好我收到了,Lambda 幫我回一下!」
Lambda(被吵醒):「幹...好啦好啦。」然後回一個訊息回去。
超省電、超有效率、超適合懶人工程師。
當然,如果訊息量暴增,你帳單的 Lambda 部分也會暴增。
(AWS 說:「你省伺服器費沒錯啊,但我會從別的地方收回來。」)
好,前戲講完,我們正式動工。
Telegram 的機器人世界裡,有個傳說中的 NPC —— BotFather。
它是所有 Telegram Bot 的爸爸。
你要建立新的 Bot,一定得先拜他。
打開 Telegram 搜尋「BotFather」,
看到有藍勾勾的那個才是正版,
沒有藍勾的那些是「假爸爸」,拜了會出事。
點進去,按下「Open」。
你就會看到這個傳說中的介面👇, 要先增加一個 Bot ,請點擊畫面中間的 Create New Bot
bot
,因為試了好幾個都重覆有人用了,最後試出一個 smallbee123_bot (UserName 的後面必須要以 bot
作為結尾)Create Bot
創好以後,BotFather 會送你一個神秘代碼 —— Bot Token。
就是紅框框起來看不到內容的部份,只要對著模糊不清的地方點一下,原本看不清楚的Token就會顯現出來。它長得像一串密碼:1234567890:ABCdefGHIjklMNOpqRSTuvwxyz
,只要點一下藍色的Copy按鈕,就可以將 Token 複製到剪貼簿中。千萬別亂貼出來,不然你的 Bot 可能會被別人拿去跟別人聊天(比被盜帳號還悲劇)。
到這裡就算成功的建立一個 Telegram 的 Bot,至於其他BOT的相關資訊,可以到官方文件當中參考詳細的資料 - Bots: An introduction for developers 。
接下來進入重頭戲:Webhook。
簡單講,Webhook 就是「Telegram Bot 的耳朵」。
它會幫你聽使用者在 Telegram 上說了什麼,
然後把那些訊息轉送到你指定的 URL。
也就是說:
使用者:「嗨!」
Telegram:「收到,我幫你丟去這個 URL」
Lambda:「幹嘛啦?哦,你要回嗨啊,OK。」
Webhook 的設定方式也超工程師:
不用 GUI、不用按按鈕,
只要在瀏覽器網址列打這段:
https://api.telegram.org/bot[Bot_Token]/setWebhook?url=[你的API Gateway網址]
就可以設定完成。
是不是感覺很熟悉?
沒錯,這就跟打 curl
指令差不多的浪漫(如果你是 GUI 派的工程師那請忽略)。
唯一要注意的是:
Webhook URL 必須是 HTTPS(Telegram 很重視安全感),
所以別拿那種在 localhost 跑的 API 來騙它,
Telegram 會直接已讀不回。
因為我們的 API Gateway 尚未設定好,所以還不知道設定好之後的 URL。我們會在API Gateway設定好後再來進行這項設定。
明天我們會繼續讓這個 Telegram Bot 學會回話。
也就是說 —— Telegram 傳訊息 → API Gateway → Lambda → 回傳結果 → Telegram。
這條通訊鍊,讓你從「被通知」變成「主動通知別人」。
到時候我們會讓 Lambda 開口說話,
只要再加上你天馬行空的想法,讓你的 Telegram Bot 成為團隊裡那個不請自來的「自動化小助理」不再是夢想。