LINE Messaging APIのGoの公式SDKを使って超簡単に実装する。
https://github.com/line/line-bot-sdk-go
Goの環境構築、プロジェクト作成までは割愛。
main.go
package main
import (
"log"
"net/http"
"os"
"github.com/joho/godotenv"
"github.com/line/line-bot-sdk-go/linebot"
)
func main() {
// .envファイルを読み込む
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
bot, err := linebot.New(
os.Getenv("LINE_CHANNEL_SECRET"),
os.Getenv("LINE_CHANNEL_TOKEN"),
)
if err != nil {
log.Fatal(err)
}
http.HandleFunc("/callback", func(w http.ResponseWriter, req *http.Request) {
events, err := bot.ParseRequest(req)
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 = bot.ReplyMessage(event.ReplyToken, linebot.NewTextMessage(message.Text)).Do(); err != nil {
log.Print(err)
}
}
}
}
})
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
log.Printf("Server is running at port %s", port)
if err := http.ListenAndServe(":"+port, nil); err != nil {
log.Fatal(err)
}
}
.env
LINE_CHANNEL_SECRET=YOUR_CHANNEL_SECRET # クォーテーションはつけない
LINE_CHANNEL_TOKEN=YOUR_CHANNEL_TOKEN # クォーテーションはつけない
PORT=8080
shell
go run main.go
LINE DevelopverコンソールでWebhook URLに{...公開したGoサーバーのURL...}/callback
を設定する。
以上。