当前位置: 首页 > 资讯 >

【Day 07】开始谈论主程序啦!!!

某一天我们提到,主要的逻辑都写在 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): 

事件,指的是用户传送任何资料进来,就会开始测试回圈内容。

任何资料 有哪些?

Message Objects

包含

  • Text Message:一般的文字讯息。虽然还是有一些限制,但基本上就只是文字讯息而已。
  • Sticker message:贴图讯息
  • Image message:照片讯息
  • Video message:影片讯息(虽然这个功能目前还不成熟)
  • Audio message:语音新闻
  • Location message:传送地点
  • Imagemap message:传送可点击的影片讯息(可以点击图片跳转至其他网页)
  • Template messages:一些按钮选项
  • Flex Message:更多客制化的讯息

之後会一一介绍每一个功能


回到 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= 的文字。
这里回传使用者传入的讯息。


剩下的我们就在往後的日子慢慢讲罗~


相关文章:

  • 【2022】忘记 Apple ID 密码?教你四个超实用破解技巧!
  • Day10 跟着官方文件学习Laravel-Migration
  • D-1, length、size & count
  • [铁人赛 Day12] 来读 Hooks FAQ 文件吧! - Hooks 取代 render props 跟 HOC 的用法了吗?
  • Day15 - 在 Next.js 做 JWT 验证,使用既有的 Backend API - PART 1
  • 【从零开始的Swift开发心路历程-Day14】打造自己的私房美食名单Part3(完)
  • 档案服务器架构设计备忘
  • D1- 谁适合使用 Google Apps Script (GAS)呀?
  • [Day28]用Canvas打造自己的游乐场-labyrinth 收尾
  • Gangstar Vegas 5.3.0o Apk Data For Latest Android
  • 30天打造品牌特色电商网站 Day.30 最後一天来总结
  • DAY 16 Big Data 5Vs – Variety(速度) Glue(4) Glue Studio
  • [Day_15]回圈与生成式
  • 卡夫卡的藏书阁【Book23】- Kafka - KafkaJS 监控状态事件
  • Siemens EDA 线上研讨会 - 车用半导体设计 !
  • Git是什么?
  • 印度独立站怎么做?如何做印度市场独立站商城
  • Windows服务器推荐:便宜好用稳定靠谱的国外Windows服务器推荐
  • 亚马逊卖家教程入门:如何做好亚马逊?教你怎么做亚马逊
  • 正规社交寻海外cps、网盟合作
  • 最便宜的国外VPS推荐:5美金以下的VPS大全
  • 免费用谷歌云的方法:最新谷歌云300美金免费用的申请教程和方法
  • Google SEO入门:如何做好谷歌网站排名SEO
  • WordPress怎么建多语言网站:Polylang怎么用?如何用Polylang建多语言网站
  • 新的 Web.com 电子商务平台帮助中小企业接触数百万潜在买家
  • 以太坊是什么?以太坊原理和以太坊入门教程
  • 数字人民币是什么?什么是数字人民币
  • 性价比最高的国外VPS服务器推荐:便宜好用的美国VPS大全
  • VPS优惠:搬瓦工香港VPS补货/G口/KVM/月付9.9美元
  • 国外抗攻击服务器推荐:DDOS高防服务器推荐