今天是铁人赛的第十一天,开始进入新的阶段啦
从这边开始会写一些我自学过程中写过的范例
要开始写Line Bot之前,先要有Line开发者帐号
请先到LINE Developers Console 建立一个开发者帐号
(注: 要创立开发者帐号之前...要先有Line的帐号)
建好开发者帐号後,就在管理页面上建立一个 provider
在建立的类型选择 Create Messaging API channel
之後就照着填资料,下面的图就是我建好的 (猪头可以换成自己喜欢的图..)
Line Bot的帐号建好之後,有两个资料要先保存
Channel secret
Channel access token
上面的两张图,红色框起来的部分,把文字复制下来,贴在记事本里保存
在本机开发Lien Bot时,会用到,存下来就不用去开网页查看。
补充: 最後记得要把这个LineBot 加到你的Line好友
以下都是在win10 64bit 家用版的环境下建置
下载Ngrok
这是一个可在本地端测试webhook 的必备工具
安装Python 虚拟环境的套件
pip install virtualenvwrapper-win
建立 Python 虚拟环境
mkvirtualenv mylinebot
建立 LineBot 开发专案
#注: 以下操作都需要在python的虚拟环境底下执行
#安装 Django & Line SDK
pip install Django==2.2.4
pip install line-bot-sdk==1.8.0
pip install yfinance
#建立 django 专案
django-admin starproject mybot
cd mybot
#建立 app 跟 资料库初始化
python manage.py startapp myapp
python manage.py makemigrations
python manage.py migrate
在这个范例里只会修改3只档案如下图所示:
/settings.py 设定档内容太长,只列出要改的地方
#找到ALLOWED_HOSTS 把内容改成 ['*']
ALLOWED_HOSTS = ['*']
#档案最後面加入
LINE_CHANNEL_SECRET ='这边改成你申请的'
LINE_CHANNEL_ACCESS_TOKEN ='这边改成你申请的'
/urls.py
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from myapp import views
urlpatterns = [
url('^callback',views.callback),
path('admin/', admin.site.urls),
]
/views.py
from django.conf import settings
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseForbidden
from django.views.decorators.csrf import csrf_exempt
from linebot import LineBotApi, WebhookParser
from linebot.exceptions import InvalidSignatureError, LineBotApiError
from linebot.models import MessageEvent, TextSendMessage
from module import func
line_bot_api = LineBotApi(settings.LINE_CHANNEL_ACCESS_TOKEN)
parser = WebhookParser(settings.LINE_CHANNEL_SECRET)
#传什麽讯息回覆相同讯息的范例
@csrf_exempt
def callback(request):
if request.method == 'POST':
signature = request.META['HTTP_X_LINE_SIGNATURE']
body = request.body.decode('utf-8')
try:
events = parser.parse(body, signature)
except InvalidSignatureError:
return HttpResponseForbidden()
except LineBotApiError:
return HttpResponseBadRequest()
for event in events:
if isinstance(event, MessageEvent):
line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.message.text))
return HttpResponse()
else:
return HttpResponseBadRequest()
以上的程序码内容,只要复制贴上,基本上都可以正确地执行
这个是Line Bot最简单的Echo范例,也是Line官网上面的范例(又可称为公版程序)
(注:Line官网的python范例是以另一个框架Flask为例,这边是用Django)
python manage.py runserver
打开 ngrok
把 ngrok的网址 填到 LineBot 的管理页面上
补充: "每次" 打开ngrok 得到的网址都不一样,每次都要去LineBot的管理页面更换Webhook URL
打开Line 传给讯息给Bot
下载本篇的范例程序码 (使用git clone)
git clone https://[email protected]/smilehsu/mylinebot.git
以上就是铁人赛第11天的内容 :)
<<: D13 - 用 Swift 和公开资讯,打造投资理财的 Apps { 加权指数K线图实作.1 }
>>: 全端入门Day23_後端程序撰写之多一点的Node.js
学习进度 Android Studio (以下功能皆为自学) ChipGroup、Chip使用 Sw...
完赛不发个心得好像怪怪的。原本想整个系列补充完再发心得,但是没有赶稿压力下的产出超低落,果然是人性....
呼~来到最後一天了 这次参加比赛终於每一天都有写一些内容了 不像上次凯特琳到了第9天就失败了 >...
今天想偷个懒,先为App加入一点动画, 主要是从欢迎页到登入页的过度动画。 Navigation t...
前言 Debian 也在这几天释出第 11 版,开发代号 bullseye,是目前的稳定 (Stab...