iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
Software Development

LINE機器人學習歷程系列 第 10

[DAY9]觀察運行程式

  • 分享至 

  • xImage
  •  

看了LINE提供的程式檔很久,我發現我根本看不懂因此我借用了MASO老師的程式碼為模板開始我的改造歷程
Maso老師的YT: Maso的萬事屋 - YouTube
老師的檔案一開始下載有這些
https://ithelp.ithome.com.tw/upload/images/20210924/20140159zBF1QhYOVN.png
資料夾的部分不重要
我們首先先看到app.py

from flask import Flask, request, abort
from linebot import (LineBotApi, WebhookHandler)
from linebot.exceptions import (InvalidSignatureError)
from linebot.models import *
#======這裡是呼叫的檔案內容=====
from message import *
from new import *
from Function import *
from mongodb_function import *
#======這裡是呼叫的檔案內容=====
#======python的函數庫==========
import  os
#======python的函數庫==========
app = Flask(__name__)
static_tmp_path = os.path.join(os.path.dirname(__file__), 'static', 'tmp')
line_bot_api = LineBotApi('你的Channel AcessToken')
handler = WebhookHandler('你的Channel Secret')

此區塊是呼叫我們在執行程式時會用到的程式和設定我們網頁、LINEBOT的值

#監聽所有來自 /callback 的 Post Request
@app.route("/callback", methods=['POST'])
def callback():
    # get X-Line-Signature header value
    signature = request.headers['X-Line-Signature']
    #get request body as text
    **body** = request.get_data(as_text=True)
    write_one_data(eval(body))
    app.logger.info("Request body: " + body)
    #handle webhook body
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        abort(400)
    return 'OK'

此區塊是我們用於監視系統執行情況的程式碼可於其中加上print(body)能夠在LOG看到更詳細的情況

#處理訊息
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    msg = event.message.text
    if '最新合作廠商' in msg:
        message = imagemap_message()
    elif '最新活動訊息' in msg:
        message = buttons_message()
    elif '註冊會員' in msg:
        message = Confirm_Template()
    elif '旋轉木馬' in msg:
        message = Carousel_Template()
    elif '圖片畫廊' in msg:
        message = test()
    elif '功能列表' in msg:
        message = function_list()
    print(body)
    line_bot_api.reply_message(event.reply_token, message)

此處為我們回訊息的地方,我們利用副程式取的我們所需要的值後將其轉化成訊息傳出,副程式方面接下來這幾天我會說到。

@handler.add(PostbackEvent)#顯示程式運作過程在LOG中
def handle_message(event):
    print(event.postback.data)
@handler.add(MemberJoinedEvent)#入群歡迎詞
def welcome(event):
    uid = event.joined.members[0].user_id
    gid = event.source.group_id
    profile = line_bot_api.get_group_member_profile(gid, uid)
    name = profile.display_name
    message = TextSendMessage(text=f'{name}歡迎加入')
    line_bot_api.reply_message(event.reply_token, message)
if __name__ == "__main__":
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)

最下面的If...是我們的主程式因為Python的一些問題所以不是我們常見的main他負責開頭及回傳Http值給Line。


上一篇
[DAY9]觀察heroku logs
下一篇
[DAY11]文字與表情符號
系列文
LINE機器人學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言