DAY8 Linebot 自动回应-1

设定完成後,开启Django应用程序(APP)的views.py档案,这边就是撰写LINE Bot接收讯息後,所要执行的运算逻辑,这边先以使用者发送什麽讯息,就回覆什麽讯息为例,来测试Django应用程序(APP)能够成功的和LINE频道(Channel)进行连结,如下范例:

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()

这边几个地方说明一下,第10、11行为取得settings.py中的LINE Bot凭证来进行Messaging API的验证。

而在callback检视函式中,当侦测到使用者有传入的事件,就会透过Python回圈进行读取(第28行),如果其中有讯息事件(第29行),则回覆使用者所传入的文字(第30~33行)。


今天的歌曲是 周杰伦-疗伤烧肉粽 Healing Rice Dumpling
https://www.youtube.com/watch?v=Aa5j0_61Xfo&list=PLFl6Na2uUoOZBEhBtQ_jeGA4P1V20JvpW&index=8&ab_channel=%E5%91%A8%E6%9D%B0%E5%80%ABJayChou


<<:  Day8 Let's ODOO: View(1) Basic Views

>>:  Day-9: Migration 系虾米哇贵?

C国某大学生在校看色色的东西被简讯通知「...文明上网...写心得报告 」

未经实锤的资讯 中国电子科大表示:学校学工部从未发布过相关的简讯内容,表示「已经提醒各院系辅导员通知...

[Day20] - Django-REST-Framework Serializers 介绍

除了昨天介绍的 Viewset ,有另外一个大家不太熟悉但是看似又非常强大的 class,就是 Se...

Day8 - 如何读取委托回报、成交回报

你还在看,真有心,来吧! 我们一起牵手向前行! 读取委托回报,通常下单(raplace order)...

Day 06-Visual Studio 2019下载教学+初步建立chatbot专案

之前介绍了几天关於架设Bot的服务器,那接下来我们用程序写Bot并放上云端服务器呢? 目前我选择了先...

JavaScript运算子

在程序设计中必须使用变数或常数储存资料,再将资料经由判断与演算,去得到需要的结果,建构出的内容就是运...