Line Developers建置Bot的教學裡面是使用Heroku平台做為示範,滿簡單可以上手的,不過Heroku的服務sleep後要喚醒較慢,剛好最近將開始使用AWS,查了一下透過AWS Lambda也可以達成,而且響應快速。
我對於Python以及AWS還沒有到很熟悉,很多地方也都還在摸索,如果有錯誤歡迎指正。
本篇使用的是Line Messaging API SDK for Python,需要修改Github上的範本得以在Lambda上執行。
新增資料夾,安裝line-bot-sdk相關套件到該資料夾
pip install line-bot-sdk -t .
新增檔案main.py
from linebot import ( LineBotApi, WebhookHandler ) from linebot.exceptions import ( InvalidSignatureError ) from linebot.models import ( MessageEvent, TextMessage, TextSendMessage, ) line_bot_api = LineBotApi('token') handler = WebhookHandler('secret') def main_handler(event, context): signature = event['headers']['X-Line-Signature'] body = event['body'] @handler.add(MessageEvent, message=TextMessage) def handle_message(event): line_bot_api.reply_message( event.reply_token, TextSendMessage(text=event.message.text)) try: handler.handle(body, signature) except InvalidSignatureError: return {'statusCode': 400, 'body': 'InvalidSignature'} return {'statusCode': 200, 'body': 'OK'}
將所有檔案打包為zip壓縮檔後,到Lambda新增函式並將剛剛的壓縮檔上傳為函式程式碼。支後也可以直接透過函式視窗做程式碼的測試跟修改。
新增API Gateway為觸發條件,這時候就可以將生成的API終端節點填入到Line Developers專案內的Webhook URL。