LineBot - 自动回覆 API

申请完 Line 机器人的帐号後,接下来要做的就是建立一个自动回覆的 api 程序,Line 也有提供 python 的套件 - line-bot-sdk,所以只要下载後,依照范例,就可以建立一个简单的自动回覆。

  • 安装 line-bot-sdk, flask
pip install line-bot-sdk flask

ps: flask 是 python 的一个轻量化 web server 套件

  • 建立 main.py 档案,内容如下(以下内容为 line-bot-sdk sample code)
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__)

# 把昨天 copy 的两个 token 贴到这里来
line_bot_api = LineBotApi('CHANNEL_ACCESS_TOKEN')
handler = WebhookHandler('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()

  • 在命令视窗下执行 main.py
python main.py

这时会看到你的 server 已经跑起来了,路径为 http://127.0.0.1:8080

  • 再来让 LineBot 可以连接到这个 api,因为还在测试中,所以暂时先放在本机电脑里,这时可以利用 ngrok 为本机建立一个连外的网址,让 LineBot 可以找到我们的 api

    1. ngrok 官网, 按下 [Get started for free]
    2. 注册新帐号
    3. 登入後,会到教学页面,先将 ngrok 下载後,解压缩後执行,会出现一个指令视窗。
    4. 先设定 Authtoken,在 ngrok 教学页面左边有一个 [Your Authtoken],点下去後,可以看到 authtoken,按下 copy 後,就可以复制下来,然後在 ngrok 的指令视窗执行以下命令
    ngrok authtoken [刚刚复制的 authtoken]
    
    1. 执行以下命令,为 http://127.0.0.1:8080 建立一个对外的连接通道
    ngrok http 8080
    
  • 这时会看到以下的图,Forwarding 的部份就是对外的网址
    ngrok forwarding

  • 回到 Line developers 的 Messaging API,把这个网址後面加 /callback 贴到 Webhook URL
    ngrok webhook url

  • 设定好後,可以按下 [Verify] 检查一下,如果有跳出 Success 的提示,代表你已经连结成功,这时就可以到 Line 测试,在和这个 LineBot 的对话视窗打字,它会回你一模一样字内容

  • 如果有预设的自动回覆,可以在 line 官方帐号 里关闭预设的自动回覆。
    line auto reply setting
    ps: Line 官方帐号这里有不少自动回覆的功能可以设定,不过这不是我们介绍的重点,有兴趣的朋友可以可以试试


<<:  [Day29] BERT(二)

>>:  [C 语言笔记--Day18] 用 linked list 实作 merge sort

day 16 - 开启git worktree 进行redis lua-script 测试比较

今天要来换个redis写法, 看看能不能缩短执行时间。 首先我会用git worktree再开一个专...

换了一个框架

今天学一下flask这个框架 因为django卡关所以不太想卡在那边 也没人可以问我就换框架看看 找...

[2021铁人赛 Day14] General Skills 11

引言 昨天比较重要的重点是 Python 中括号用法, 看看下面的练习回忆一下吧: a = 'pi...

[Day20]-程序除错与异常处理

程序异常 除数为0的错误 异常处理程序try except 档案不存在的错误FileNotFoun...

Day28 资安小结 - 红队与蓝队 ( 内附名字由来 )

打了这麽多的技术文,突然发现我好像都没有介绍到资安的基础,所以最後的这 3 篇文章可能就是做个资安的...