某一天我們提到,主要的邏輯都寫在 django_chatbot/views.py
。
但是裡面牽涉太多種 function 了。
在經過幾天的思考,打算一個一個功能講(跟網路上其他的教學方式比較不太一樣),所以看完三十天,應該就能夠自己建立一個功能齊全的 Line Chatbot 囉!
def callback(request)
@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()
這段程式碼的意思就是指
如果有
事件
傳入,就會進行到callback
函式裡面的程式碼。
中間的 try...except
部分我們不詳談,因為那是固定的模式!
event
# 當有事件傳入
for event in events:
if isinstance(event, MessageEvent):
事件
,指的是用戶傳送任何資料進來,就會開始測試迴圈內容。
那 任何資料 有哪些?
包含
之後會一一介紹每一個功能
回到 def callback()
if isinstance(event, MessageEvent): # 如果有訊息事件
line_bot_api.reply_message( # 回復傳入的訊息文字
event.reply_token,
TextSendMessage(text=event.message.text)
)
如果我把這個 event 印出來
{"message": {"id": "14765943962853", "text": "\u958b\u6703", "type": "text"}, "mode": "active", "replyToken": "e6c71c582b834585833f07d909e4fe4c", "source": {"type": "user", "userId": "Uaabbbdd6ba5a8630412b106b23def4d2"}, "timestamp": 1631932933913, "type": "message"}
[18/Sep/2021 02:42:15] "POST /django_chatbot/callback HTTP/1.1" 200 0
這就是一個 message 的 event 儲存下來的內容。
我們回傳訊息就需要靠 line_bot_api.reply_message
還有 event
裡的 reply_token
。
TextSendMessage()
,函式就是要回傳 text=
的文字。
這裡回傳使用者傳入的訊息。
剩下的我們就在往後的日子慢慢講囉~