设定完成後,开启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
未经实锤的资讯 中国电子科大表示:学校学工部从未发布过相关的简讯内容,表示「已经提醒各院系辅导员通知...
除了昨天介绍的 Viewset ,有另外一个大家不太熟悉但是看似又非常强大的 class,就是 Se...
你还在看,真有心,来吧! 我们一起牵手向前行! 读取委托回报,通常下单(raplace order)...
之前介绍了几天关於架设Bot的服务器,那接下来我们用程序写Bot并放上云端服务器呢? 目前我选择了先...
在程序设计中必须使用变数或常数储存资料,再将资料经由判断与演算,去得到需要的结果,建构出的内容就是运...