某一天我们提到,主要的逻辑都写在 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=
的文字。
这里回传使用者传入的讯息。
剩下的我们就在往後的日子慢慢讲罗~
<<: IT 铁人赛 k8s 入门30天 -- day8 Demo Project: MongoDB and MongoExpress
第一次查看这系列文章的读者,欢迎参考 文章总览与心得 帮助你了解这系列文章的架构与脉络。 参赛背景 ...
这篇主要是讲到有关 Python 中很重要的 import,因为如果後面在做大型专案时,常常需要 i...
作者:Welly SEO 编辑部 想做好Google SEO排名,除了熟知SEO是什麽之外,还必须充...
GitHub Repo https://github.com/b2etw/Spring-Kotlin...
我们今天来做个小结,快速汇整这一系列实做的内容。 步骤1: 建立2个S3 Bucket 一个S3 B...