Skip to content

About

A Go LINE Bot demo showcasing message edit and unsend webhooks through a group-ordering story with live Flex Message summaries.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Repository files navigation

團購變形記:LINE Edit / Unsend Webhook Demo

「百變店長・單單」是一個用 Go 製作的 LINE 團購 Bot,用辦公室下午茶團購展示兩種 webhook:

  • messageEdited:使用者編輯原訊息時,以相同 message ID 更新訂單。
  • unsend:使用者收回原訊息時,刪除 Bot 保存的訂單並重新計算總額。

目前訂單會以 Flex Message 顯示店家、截單時間、訂購人、品項、杯數與總金額。

Demo 流程

請先將 LINE Official Account 加入群組。編輯訊息事件目前不支援與官方帳號的一對一聊天室。

  1. 開團:

    開團 五十嵐 15:20 截單
    
  2. Alice 下單:

    珍珠奶茶 / 半糖 / 少冰 / 1
    
  3. Alice 編輯同一則訊息:

    珍珠奶茶 / 微糖 / 去冰 / 2
    
  4. Bob 下單後收回原訊息,Bot 會刪除該筆內容,並用 push message 顯示更新後的 Flex 總結。

  5. 查詢或結單:

    目前訂單
    結單
    

Demo 菜單

品項 單價
四季春青茶 $40
紅茶拿鐵 $55
珍珠奶茶 $60
波霸紅茶拿鐵 $65

輸入 說明 可以在聊天室查看指令與菜單。

啟動

需要 Go 1.25,以及已啟用 Messaging API 的 LINE Official Account。

export ChannelSecret='YOUR_CHANNEL_SECRET'
export ChannelAccessToken='YOUR_CHANNEL_ACCESS_TOKEN'
export PORT=5000
go run .

將 LINE Developers Console 的 Webhook URL 設為:

https://YOUR_HOST/callback

另外需要:

  • 啟用 webhook。
  • 允許 Bot 加入群組聊天室。
  • 手機版 LINE 啟用支援訊息編輯的功能與版本。

測試

go test -race ./...
go vet ./...

測試涵蓋新增、編輯、亂序 edit、無效 edit、unsend、金額計算及 Flex JSON。

實作注意事項

  • 多個 edit webhook 可能亂序送達,程式只接受 timestamp 較新的事件。
  • webhook redelivery 會用 webhook event ID 去重。
  • unsend webhook 沒有 reply token,因此 Bot 使用 push message 更新群組;這會計入訊息用量。
  • 收到 unsend 後不會重現原始內容,並會從記憶體刪除該筆訂單。
  • 目前狀態保存在單一程式實例的記憶體中。服務重啟或多實例部署時會遺失/分散資料;正式環境應改用 Redis 或資料庫。

技術參考:Edit event/Unsend event

About

A Go LINE Bot demo showcasing message edit and unsend webhooks through a group-ordering story with live Flex Message summaries.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages