(Rrrrrr ! ! !)
上回取得LINE Bot憑證後,我們回到Django內設定憑證吧!
pip install line-bot-sdk
pip install requests
安裝後我們在原專案下再新增一個APP用來放開發LINE Bot的程式碼:
還記得怎麼新增APP嗎?
#python manage.py startapp <APP名稱>
python manage.py startapp LINEBOT
這樣就新增好LINEBOT資料夾了
再來我們找到專案資料夾裡的settings.py
,把上回的兩個憑證新增進去:
#拉到最下方新增:
LINE_CHANNEL_SECRET = '頻道密碼(Channel secret)'
LINE_CHANNEL_ACCESS_TOKEN = '頻道憑證(Channel access token)'
#要用單引號('')把憑證內容包起來
完成後再拉到上方的INSTALLED_APPS新增我們的LINEBOT進去:
更新一下它python manage.py migrate
這樣就完成了,我們就可以正式開發屬於我們的LINE Bot機器人了,那麼我們就實現最基本的功能吧!
永不無聊的聊天回覆機器人,間單來說就是你打什麼傳送給機器人,機器人就回傳你傳送的訊息。
首先我們先到urls.py
新增路徑:
<Project/urls.py>
urlpatterns = [
(...)
path('LINEBOT/', include('LINEBOT.urls'))
]
在LINEBOT資料夾中也新增urls.py
添加指令:
<LINEBOT/urls.py>
from django.urls import path
from . import views
urlpatterns = [
path('chatbot/', views.chatbot)
]
切換到views.py
填寫我們需要的讓機器人執行的程式吧!
<LINEBOT/views.py>
#引入參數
from django.shortcuts import render
from django.http import HttpResponse
from django.http import HttpResponseBadRequest
from django.http import HttpResponseForbidden
from django.views.decorators.csrf import csrf_exempt
from django.conf import settings
#引入linebot參數
from linebot import LineBotApi
from linebot import WebhookParser
from linebot.exceptions import InvalidSignatureError
from linebot.exceptions import 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 chatbot(request):
if request.method == 'POST':
signature = request.META['HTTP_X_LINE_SIGNATURE']
body = request.body.decode('utf-8')
try:
chatinfo = parser.parse(body, signature)#解析傳入請求
except InvalidSignatureError:#憑證失效時
return HttpResponseForbidden()#禁止訪問
except LineBotApiError:#機器人發生錯誤時
return HttpResponseBadRequest()#回傳錯誤請求
for chat in chatinfo:
if isinstance(chat, MessageEvent):#當有訊息時
line_bot_api.reply_message(chat.reply_token,#回傳相同訊息
TextSendMessage(text=chat.message.text))
return HttpResponse()
else:
return HttpResponseBadRequest()
到這裡我們程式碼的部分就完成了,我們RUN看看有沒有問題:
能成功RUN起來就沒有問題了,但還需要將網址透過一些方法能對外公開HTTPS網址才能與LINE連結起來,這個部分我們下回再處理。
今天先到這邊,大家掰掰~
圖片來源:memenow