申请完 Line 机器人的帐号後,接下来要做的就是建立一个自动回覆的 api 程序,Line 也有提供 python 的套件 - line-bot-sdk,所以只要下载後,依照范例,就可以建立一个简单的自动回覆。
pip install line-bot-sdk flask
ps: flask 是 python 的一个轻量化 web server 套件
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()
python main.py
这时会看到你的 server 已经跑起来了,路径为 http://127.0.0.1:8080
再来让 LineBot 可以连接到这个 api,因为还在测试中,所以暂时先放在本机电脑里,这时可以利用 ngrok 为本机建立一个连外的网址,让 LineBot 可以找到我们的 api
ngrok authtoken [刚刚复制的 authtoken]
ngrok http 8080
这时会看到以下的图,Forwarding 的部份就是对外的网址
回到 Line developers 的 Messaging API,把这个网址後面加 /callback 贴到 Webhook URL
设定好後,可以按下 [Verify] 检查一下,如果有跳出 Success 的提示,代表你已经连结成功,这时就可以到 Line 测试,在和这个 LineBot 的对话视窗打字,它会回你一模一样字内容
如果有预设的自动回覆,可以在 line 官方帐号 里关闭预设的自动回覆。
ps: Line 官方帐号这里有不少自动回覆的功能可以设定,不过这不是我们介绍的重点,有兴趣的朋友可以可以试试
>>: [C 语言笔记--Day18] 用 linked list 实作 merge sort
今天要来换个redis写法, 看看能不能缩短执行时间。 首先我会用git worktree再开一个专...
今天学一下flask这个框架 因为django卡关所以不太想卡在那边 也没人可以问我就换框架看看 找...
引言 昨天比较重要的重点是 Python 中括号用法, 看看下面的练习回忆一下吧: a = 'pi...
程序异常 除数为0的错误 异常处理程序try except 档案不存在的错误FileNotFoun...
打了这麽多的技术文,突然发现我好像都没有介绍到资安的基础,所以最後的这 3 篇文章可能就是做个资安的...