当前位置: 首页 > 开发杂谈 >

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

相关文章:

  • 注册亚马逊店铺要考虑的3个问题
  • Day22:今天来聊一下如何用Ghost Eye来取得Web Server资讯
  • 9.MYSQL输出写入的内容
  • [Day 29] YARN
  • Day 28 : 撰写LineBot,利用短短三天认识自动化机器人(中)
  • 亚马逊卖家最常犯的错误汇总(一)
  • Day 25 - [Android APP] 03-Android 的 STT 与 TTS
  • Day 30 让 Tree View 变成彩虹吧~!
  • Forti是否可做到快速收拢?
  • 跨境电商杂谈之中东市场
  • [Day14] CH09:寻寻觅觅——二元搜寻法
  • Day 19 规划隐私资料敏感度分级
  • styled-components 的初步探索
  • [13th][Day30] 结语
  • 【Day 24】JavaScript 事件处理
  • 洛杉矶CN2服务器推荐:PCCW线路VPS,服务器服务商layerhost
  • Namesilo域名注册教程和域名注册流程方法
  • 海外营销周报:Facebook应用下载量下降30%,TikTok在欧洲测试应用内购买…
  • 糖果主机香港VPS优惠码最新七折促销
  • Goolge play怎么更改地区下载Apps : 谷歌应用商店更改地区教程
  • 升级wordpress出错怎么办?wordpress升级502错误解决方法
  • 韩国Moack蘑菇CN2服务器评测和特价服务器,优惠码
  • 国内出海企业用哪家公司的短信比较多?
  • 亚马逊卖家教程入门:如何做好亚马逊?教你怎么做亚马逊
  • 海外营销周报:谷歌在搜索中取消Q&A功能,FaceBook Marketplace用户总量达 10 亿人 – 知外贸
  • 一键脚本/Superspeed: 一键测试服务器到国内的速度
  • Google Fi怎么在国内激活的方法和教程
  • MovoCash虚拟信用卡教程:美国虚拟信用卡申请教程
  • 教育邮箱:申请塔拉哈西社区学院edu邮箱
  • 站点迁移问题:流量下降的 11 个潜在原因