用 Python 畅玩 Line bot - 04:TextMessage

现在我们可以来运行前面从官方找到的范例程序,来看看 Line bot 在传送讯息的时候会有甚麽样的资讯传来了。

@handler.add(MessageEvent, message=TextMessage) 这行是会在 Line bot 触发讯息事件,并且讯息的种类是文字的时候,去执行後续的程序码
例如我们在後面加上个函式并让它输出接收到的资讯。

def handle_message(event):
    print(event)

可以发现能从 enevt 中获得几个重要的资讯,例如:
讯息的内容:event.message.text
讯息的属性:event.message.type
回传用的 token:event.replyToken
传送者的身分:event.source.type
传送者在该 Line bot 的 ID:event.source.userId

{
"message":
{
"id": "14881017983375",
"text": "this is a test message",
"type": "text"
},
"mode": "active",
"replyToken": "817eb9e1741647909366b599c3e37ba6",
"source":
{
"type": "user",
"userId": "Ub8c776653b3d290b3c3f9d1b9c852cb9"
},
"timestamp": 1633706879515,
"type": "message"
}

在得知这些资讯之後,我们可以透过作些判断操作,去进行指定的回应,也可以直接将收到的讯息回传,制作一个 Echo bot,我们这边就先从 Echo bot 来体验看看回传讯息给使用者。
从前面的范例程序中,可以看到 line_bot_api 中有个 reply_message,这个就是在 line bot api 中用来被动回传讯息给发送者的函式。
该函式的用法如下:

line_bot_api.reply_message(欲回传者的 token, 回传的讯息)

回传者 token 可以从前面接收到的 event 中取得,而回传的讯息依据想要回传的资料型态不同,又有分成不同的函式需要呼叫,这边我们暂时只会用到回传文字讯息,因此会用到的是TextSendMessage(text=要回传的文字)

而 echo bot 会回传的内容等於发送者所传送的内容,此部分一样可以从前面接收到的 event 中取得,因此可以写成这样。

line_bot_api.reply_message(
    event.reply_token,
    TextSendMessage(text=event.message.text))

这时候再去重新运行 app.py,尝试传送讯息给 line bot 後,就会看到如下图的结果。


<<:  day23_如何采购 ARM 版本的 Mac 呢

>>:  EP24 - [TDD] OrderPayQuery 查询付款结果 (2/2)

Day 6 - Loop

回圈提供一个快速又简洁的方法来重复地做某件事,有了回圈,在取得资料时就方便许多。 for loop ...

Day 20 云端虚拟桌面

在资讯化管理上,越来越多企业会选择使用透过集中化管理的方式,除了让资料尽可能让员工无法外流等资安考...

Parser Generator (三)

上篇提到了 parser generator 在产生程序码的时候,可以用四个步骤去拆解里面的资讯并...

[Day12] placeholder for test day 18

写在前面 placeholder for test day 18 placeholder for t...

[Day24] Flutter with GetX Shimmer

Shimmer iOS Swift的话是类似SkeletonView 一般用在等待的时候 像是API...