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

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

# app.py
from flask import Flask, request, abort

from 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, abort

from 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()

<<:  【在厨房想30天的演算法】Day 21 演算法 : 最短路径 Shortest Path Dijkstra 演算法

>>:  [经典回顾]预设密码事件纪录

# Day22--眼前一黑...啊!原来是终端机!

这个时候就要打开那个工程师很常用的东西,以前对工程师的印象就是打开一个黑黑的东西,输入一些什麽东西。...

wish平台出于税收目的收集商户所在地国家/地区信息

为了遵守当地的适用法律,Wish 需要收集商户的所在地国家/地区信息。所在地国家/地区信息将被政府用...

亚马逊卖家需要重视的流量指标

为了在未来的“黑五”、“网一”以及圣诞节等销售旺季最大化销售额,为给买家提供更好的购物体验,下面整理...

[Day 30] 认识LIFF

所以 LIFF 到底是什麽? 从前,我们只能用 LINE app,在聊天室内与朋友一对一谈话,或是用...

外贸营销之接触点营销是怎样的呢

接触点营销实际上适用范围很广,远远超过了外贸和制造业。如果每个人都掌握了基本原则,相信一定能举一反三...