用 Python 畅玩 Line bot - 02:Line bot SDK

在建立好帐号之后,我们可以开始来看看 Line bot SDK,可以从 Line developers ocumentation 中找到 python 的 github,从这边可以找到 Line bot 的最基础架构,我们之后想变化,增加的功能都是从这里开始。

# app.pyfrom flask import Flask, request, abortfrom linebot import (    LineBotApi, WebhookHandler)from linebot.exceptions import (    InvalidSignatureError)from linebot.models import (    MessageEvent, TextMessage, TextSendMessage,)app = Flask(__name__)line_bot_api = LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')handler = WebhookHandler('YOUR_CHANNEL_SECRET')@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)    app.logger.info("Request body: " + body)    # handle webhook body    try:        handler.handle(body, signature)    except InvalidSignatureError:        print("Invalid signature. Please check your channel access token/channel secret.")        abort(400)    return 'OK'@handler.add(MessageEvent, message=TextMessage)def handle_message(event):    line_bot_api.reply_message(        event.reply_token,        TextSendMessage(text=event.message.text))if __name__ == "__main__":    app.run()

首先,我们可以将整段程式码分为三个区块理解,分别是引入模组、告知 Line bot 的基本资料以及接收 Line 的资讯。
第一个区块的部分,主要引入了为了架设网站用的 Flask 以及整个 Line bot 中最重要的 Line bot API,这边架设网站不一定要使用 Flask,可以根据自己的习惯或是需求去改用其他的网页框架。这两个套件都要记得在 cmd 中进行 install。

pip install

line-bot-sdk
flask

而 Line bot API 的部分,因为最常用到的是讯息事件以及文字的接收与回覆,因此在一开始的架构之中,已经先把MessageEventTextMessageTextSendMessage给先引入完毕,若是后续有要再用到像是图片、音档等其他 API 的时候,就会需要再此处进行引入。

from flask import Flask, request, abortfrom linebot import (    LineBotApi, WebhookHandler)from linebot.exceptions import (    InvalidSignatureError)from linebot.models import (    MessageEvent, TextMessage, TextSendMessage,)app = Flask(__name__)

第二个区块是为了要让程式码知道他该去找到那一个帐号接收与传递资讯,这里需要填入的资料可以在 Line decelopers中进入建立好的 channel,从 Basic settings 的下方找到 channel secret,Messaging API 的下方中点选 issue 取得 channel access token,token 在点选 issue 后会让你设置重置的时间,如果不希望他重置的话,可以将时间设定为 0 hours。

line_bot_api = LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')handler = WebhookHandler('YOUR_CHANNEL_SECRET')

图一、channel secret

图二、channel access token

图三、设置 token 重置时间

第三个区块是用来接收当 Line bot 被触发各事件时,所得到的资讯,后续我们要对接收到的资讯做判断、归类、处理的时候,都是会在这区块中撰写。

@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)    app.logger.info("Request body: " + body)    # handle webhook body    try:        handler.handle(body, signature)    except InvalidSignatureError:        print("Invalid signature. Please check your channel access token/channel secret.")        abort(400)    return 'OK'@handler.add(MessageEvent, message=TextMessage)def handle_message(event):    line_bot_api.reply_message(        event.reply_token,        TextSendMessage(text=event.message.text))if __name__ == "__main__":    app.run()

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章