@@ -19,7 +19,8 @@ import (
1919 "os"
2020 "strconv"
2121
22- "github.com/line/line-bot-sdk-go/v7/linebot"
22+ "github.com/line/line-bot-sdk-go/v8/linebot"
23+ "github.com/line/line-bot-sdk-go/v8/linebot/webhook"
2324)
2425
2526var bot * linebot.Client
@@ -35,8 +36,7 @@ func main() {
3536}
3637
3738func callbackHandler (w http.ResponseWriter , r * http.Request ) {
38- events , err := bot .ParseRequest (r )
39-
39+ cb , err := webhook .ParseRequest (os .Getenv ("ChannelSecret" ), r )
4040 if err != nil {
4141 if err == linebot .ErrInvalidSignature {
4242 w .WriteHeader (400 )
@@ -46,34 +46,45 @@ func callbackHandler(w http.ResponseWriter, r *http.Request) {
4646 return
4747 }
4848
49- for _ , event := range events {
50- if event .Type == linebot .EventTypeMessage {
51- switch message := event .Message .(type ) {
49+ for _ , event := range cb .Events {
50+ log .Printf ("Got event %v" , event )
51+ switch e := event .(type ) {
52+ case webhook.MessageEvent :
53+ switch message := e .Message .(type ) {
5254 // Handle only on text message
53- case * linebot. TextMessage :
55+ case webhook. TextMessageContent :
5456 // GetMessageQuota: Get how many remain free tier push message quota you still have this month. (maximum 500)
5557 quota , err := bot .GetMessageQuota ().Do ()
5658 if err != nil {
5759 log .Println ("Quota err:" , err )
5860 }
5961 // message.ID: Msg unique ID
6062 // message.Text: Msg text
61- if _ , err = bot .ReplyMessage (event .ReplyToken , linebot .NewTextMessage ("msg ID:" + message .ID + ":" + "Get:" + message .Text + " , \n OK! remain message:" + strconv .FormatInt (quota .Value , 10 ))).Do (); err != nil {
63+ if _ , err = bot .ReplyMessage (e .ReplyToken , linebot .NewTextMessage ("msg ID:" + message .Id + ":" + "Get:" + message .Text + " , \n OK! remain message:" + strconv .FormatInt (quota .Value , 10 ))).Do (); err != nil {
6264 log .Print (err )
6365 }
6466
6567 // Handle only on Sticker message
66- case * linebot. StickerMessage :
68+ case webhook. StickerMessageContent :
6769 var kw string
6870 for _ , k := range message .Keywords {
6971 kw = kw + "," + k
7072 }
7173
72- outStickerResult := fmt .Sprintf ("收到貼圖訊息: %s, pkg: %s kw: %s text: %s" , message .StickerID , message .PackageID , kw , message .Text )
73- if _ , err = bot .ReplyMessage (event .ReplyToken , linebot .NewTextMessage (outStickerResult )).Do (); err != nil {
74+ outStickerResult := fmt .Sprintf ("收到貼圖訊息: %s, pkg: %s kw: %s text: %s" , message .StickerId , message .PackageId , kw , message .Text )
75+ if _ , err = bot .ReplyMessage (e .ReplyToken , linebot .NewTextMessage (outStickerResult )).Do (); err != nil {
7476 log .Print (err )
7577 }
78+ default :
79+ log .Printf ("Unknown message: %v" , message )
7680 }
81+ case webhook.FollowEvent :
82+ log .Printf ("message: Got followed event" )
83+ case webhook.PostbackEvent :
84+ data := e .Postback .Data
85+ log .Printf ("Unknown message: Got postback: " + data )
86+ case webhook.BeaconEvent :
87+ log .Printf ("Got beacon: " + e .Beacon .Hwid )
7788 }
7889 }
7990}
0 commit comments