iT邦幫忙

2

用 Python 暢玩 Line bot - 04:TextMessage

  • 分享至 

  • twitterImage
  •  

現在我們可以來運行前面從官方找到的範例程式,來看看 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 後,就會看到如下圖的結果。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
nike01705
iT邦新手 5 級 ‧ 2022-08-10 14:12:46

請問一下,我在函式裡面寫了判斷程式

if event.message.text[:4] == 'ans:':
    ans = event.message.text[4:]

請問要如何才能把這個ans拿出來給其他程式使用?

我要留言

立即登入留言