今天就来实际撰写LineBot罗~
我们要先下载必要套件,linebot-sdk以及flask。主要是用flask这种小型框架来做API串接:
pip install line-bot-sdk
pip install flask
再来建立一个app.py的档案,开始撰写程序,起手式先这样:
import os
from flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import *
app = Flask(__name__)
line_bot_api = LineBotApi("")
handler = WebhookHandler("")
@ 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:
abort(400)
return 'OK'
if __name__ == "__main__":
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)
这个程序码的写法主要是flask框架的写法,前面先import套件并且设定程序进入点以及一些东西,再来我们在"/callback"这个子网页设定一些必要的东西,最後在5000port启动这个程序。
有看到WebhookHandler("")跟LineBotApi("")吗,这两个分别是放你频道的"身分证",Line要跟程序连结需要这两个东西才能知道要连到哪只Linebot,这个部分可以从昨天的网站找到:
没有的话记得按一下issue
@ handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
if event.message.text =='a':
msg = (TextSendMessage(text='这是测试'))
line_bot_api.reply_message(event.reply_token, msg)
TextMessage就是文字讯息的意思,这个部分专门传送文字讯息,图片等等的也可以参照官方文件做出类似的效果,这边先只讲文字的部分。
event.message.text就是这个事件的文字讯息,也就是使用者的输入,如果使用者输入a,我就将TextSendMessage(要传出的值)设定为'这是测试'并且保存到msg这个变数,再用line_bot_api.reply_message将这个变数的值发出去。这部分稍微理解後我们就可以来实际测试了,我们要让我们的程序到一个公开的网址上运作所以我们需要ngrok。
ngrok是一个可以让内部网路与外部沟通的一个工具,这个东西可以将你电脑中的port给予一个网址去做连线。要使用这个服务要先去官网下载他们的程序:
登入帐号後就下载,解压缩就好了。应该会得到一个ngrok.exe的档案,把它丢到你的程序资料夹中。
再来就要来开port了!看了一下程序码撰写的是5000port,所以ngrok需要开5000port,我们先到程序资料夹中开启cmd(在箭头处输入cmd)。
在cmd中输入python app.py(代表用python启动我们撰写的程序)。
这样就代表程序正在5000port执行罗!再来我们打开ngrok,输入ngrok http 5000(代表使用5000port做ngrok服务)。
Forwarding後面的网址就是他帮你开的网址,把这网址丢到Webhook URL:(自己的机器人→Messaging API→Webhook URL),点击Edit就能设定了,记得网址要是**https:**开头,而且因为我们刚刚设定在/callback下做事,所以我们要在网址後面加上/callback,然後将Use webhook打开,按下Verify测试,如果有出现下图的Success字样就是没有问题了。
往上滑有个QRCode,可以先扫加入好友。然後我们往下滑到Auto-reply messages,点进Edit,把Greeting message改成Disabled,Webhooks确定要为Enabled,以防万一先把Auto-response改成Disabled(理论上没什麽差)。
就可以去跟机器人私聊,发现他真的会回你话了!
明天就继续LineBot的部分吧,把我有用到的功能全部打上来做纪录。
昨天我们很有胆试的将 VPC 砍掉重建, 为的就是将网段重新安排, 但是还没处理好的部分, 则是 G...
review 上一篇介绍了 transduce 基本概念後,就可以知道 transduce 就是对资...
如何列举子目录所有档案 ? + 条件搜寻 ? os.walk() 的用法厘清,记录一下体会心得,以下...
前言 昨天讲完了TLB 以及MMU两个与实体记忆体分配有关系的机制之後,今天要讲一个比较少人谈论,在...
我这里用一点点SQL码教学大家可以在自己的表格上尝试 进入QUERY TOOL 存入资料(INSER...