建立頻道
首先,登入 LINE Developers 頁面,選擇 Messaging API 產品,建立一個 Channel。
建立專案
建立專案。
1 2
| mkdir line-bot-go cd line-bot-go
|
啟用 Go Modules。
下載 linebot
套件。
1
| go get github.com/line/line-bot-sdk-go/linebot
|
新增 main.go
檔:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| package main
import ( _ "github.com/joho/godotenv/autoload" "github.com/line/line-bot-sdk-go/linebot" "log" "net/http" "os" )
var ( client *linebot.Client err error )
func main() { client, err = linebot.New(os.Getenv("CHANNEL_SECRET"), os.Getenv("CHANNEL_ACCESS_TOKEN"))
if err != nil { log.Println(err.Error()) }
http.HandleFunc("/callback", callbackHandler)
log.Fatal(http.ListenAndServe(":84", nil)) }
func callbackHandler(w http.ResponseWriter, r *http.Request) { events, err := client.ParseRequest(r)
if err != nil { if err == linebot.ErrInvalidSignature { w.WriteHeader(400) } else { w.WriteHeader(500) }
return }
for _, event := range events { if event.Type == linebot.EventTypeMessage { switch message := event.Message.(type) { case *linebot.TextMessage: if _, err = client.ReplyMessage(event.ReplyToken, linebot.NewTextMessage(message.Text)).Do(); err != nil { log.Println(err.Error()) } } } } }
|
新增 .env
檔:
1 2
| CHANNEL_SECRET= CHANNEL_ACCESS_TOKEN=
|
CHANNEL_SECRET
環境變數填入 Basic settings
頁面的 Channel secret
。
CHANNEL_ACCESS_TOKEN
環境變數填入 Messaging API
頁面的 Channel access token
。
最後,將專案部署到主機。
設定
- 進到「Messaging API」頁面,設置應用程式的「Webhook URL」。
1
| https://line-bot-go.xxx.com/callback
|
點選「Verify」按鈕。
將「Use webhook」功能開啟。
將「Auto-reply messages」和「Greeting messages」功能關閉。
聊天
進到「主頁」,點選「加入好友」,使用行動條碼加入好友。
程式碼
參考資料