今天要来正式建立 Chatbot 的 Python 专案!
进入 Line Developers 直接登入自己的 Line 帐号。
如果是第一次建立开发者帐号,需要先填写一些基本资料(仅限第一次登入时才要)。
之後,建立一个 Provider
。
Provider
指的是提供服务的个人或公司。
接着我们就要建立一个 Messaging API 的 channel。
继续填写资料~
基本设定
项目 | 画面 |
---|---|
Channel icon(optional) | Chatbot 的大头贴 |
Channel name | Chatbot 名字 |
Channel description | 启动时的同意权限画面(仅针对有建立 LIFF 的 Channel) |
Privacy policy URL(optional) | - |
Terms of use URL(optional) | - |
这之後我们就可以在主页上看到我们建立好的 channel 了!!
在 Line Developers 上该建立的东西到这边基本上就几乎完成了,但是先不要把网页关掉!
在建立 Python 专案时,还需要回来这个网页复制两个凭证。(等我们要用到的时候再回来)
首先,我们要建置环境,安装以下之後会使用到的 Python 套件
$ pip install django
$ pip install line-bot-sdk
$ pip install requests
接着建立 Django 专案
#建立Django专案
$ django-admin startproject mylinebot .
#建立Django应用程序 程序名称 django_chatbot
$ python manage.py startapp django_chatbot
$ python manage.py migrate
此时
mylinebot
是专案主程序
django_chatbot
是应用程序
我们可以回到 Line Developers,需要拿到以下两个凭证。
Basic Settings 里的 Channel Secret
Messaging API 里的 Channel access token,是 long-lived 的
之後开启专案,我们在 mylinebot/settings.py
里增加上面提到的两个凭证。
LINE_CHANNEL_ACCESS_TOKEN = 'Messaging API > Channel access token'
LINE_CHANNEL_SECRET = 'Basic settings > Channel secret'
直接把两个凭证复制上去(type: str
)。
然後在同一个 settings.py
档里面的 INSTALLED_APPS
加上刚刚所建立的 Django 应用程序,如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_chatbot.apps.DjangoChatbotConfig', #新增APP名称
]
也就是在 django_chatbot/apps.py
里的 class
class DjangoChatbotConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'django_chatbot'
echo
Chatbot我们先来看另一个档案 django_chatbot/views.py
,这个档案可以算是 Chatbot 的主程序(?)。
我们会把 Chatbot 接收讯息後要执行的内容写在 def callback(request):
里。
我们来试写一个最基本的 Chatbot,echo
,Chatbot 会回传使用者输入的文字内容。
范例取自官方 documentation
from django.shortcuts import render
# Create your views here.
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseForbidden
from django.views.decorators.csrf import csrf_exempt
from django.conf import settings
from linebot import LineBotApi, WebhookParser
from linebot.exceptions import InvalidSignatureError, LineBotApiError
from linebot.models import MessageEvent, TextSendMessage
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()
虽然目前我们把 Chatbot 的主要功能都写出来的,可是到目前为止,还不能执行。
我们要把网址公开才可以让这个机器人连结到我们的 channel,这样机器人才可以回应我们写的主要功能。
明天会继续讲解如何公开网址连结 channel。
之後的几天都会慢慢把挖出来的坑给填起来!
Ref.
今天在分享几个方便好用的工具。 一个是 Android Asset Studio ,有9种图标的变形...
这是我第一次参加这种撰写文章的比赛,参加这个比赛主要是让我能保持学习并透过写文章分享自己的学习历程,...
Meterpreter 功能 透过 Meterpreter 可以利用 Reverse Shell 控...
今天的内容为介绍另一种档案格式—JSON档,是一位爬取网路资料时常会碰到的朋友~ 赶快趁现在好好的认...
-1. Google store link 这七天做的app上架罗! 欢迎下载 https://pl...