実現したいこと
LINE BOTをHerokuとgoで作成したいと考えています。
Herokuとgoの勉強のためにLINE BOTの作成を行っています。
今の状態
Goで作成したLINE BOTプログラムをHerokuにデプロイ完了しました。
デプロイ完了後、herokuのプロセスを確認すると、次の通りとなっています。
html
1$ heroku ps 2Free dyno hours quota remaining this month: 1000h 0m (100%) 3Free dyno usage for this app: 0h 0m (0%) 4For more information on dyno sleeping and how to upgrade, see: 5https://devcenter.heroku.com/articles/dyno-sleeping 6 7=== web (Free): go-getting-started (1) 8web.1: up 2019/03/07 20:38:09 +0900 (~ 4m ago)
##LINE Messaging APIの設定は次の通りです。
◆Webhook送信: 利用する
◆Webhook URL: https://appliname.herokuapp.com:443/callback
⇒接続テストもOKでした。
◆Botのグループトーク設定: 利用する
◆自動応答メッセージ: 利用しない
◆友達追加時あいさつ: 利用する
#解決したいこと
デプロイが完了したので、早速LINEで友達追加したBOTにメッセージを送ってみました。
しかし、おうむ返しが返信されてきません。
おうむ返しが返信されるようにしたいのですが、Messaging APIの設定が悪いのか、goプログラムが悪いのか、
それとも、他の何かが原因なのかが分かりません。
どなた助けていただけると助かります。
#goプログラム
"CHANNEL_SECRET"と"CHANNEL_TOKEN"は、herokuの環境変数に登録してあります。
html
1package main 2 3import ( 4 "log" 5 "net/http" 6 "os" 7 8 "github.com/gin-gonic/gin" 9 "github.com/line/line-bot-sdk-go/linebot" 10) 11 12func main() { 13 port := os.Getenv("PORT") 14 15 if port == "" { 16 log.Fatal("$PORT must be set") 17 } 18 19 20 bot, err := linebot.New( 21 os.Getenv("CHANNEL_SECRET"), 22 os.Getenv("CHANNEL_TOKEN"), 23 ) 24 if err != nil { 25 log.Fatal(err) 26 } 27 28 router := gin.New() 29 router.Use(gin.Logger()) 30 router.LoadHTMLGlob("templates/*.tmpl.html") 31 router.Static("/static", "static") 32 33 router.GET("/", func(c *gin.Context) { 34 c.HTML(http.StatusOK, "index.tmpl.html", nil) 35 }) 36 37 38 router.POST("/callback", func(c *gin.Context) { 39 events, err := bot.ParseRequest(c.Request) 40 if err != nil { 41 if err == linebot.ErrInvalidSignature { 42 log.Print(err) 43 } 44 return 45 } 46 for _, event := range events { 47 if event.Type == linebot.EventTypeMessage { 48 switch message := event.Message.(type) { 49 case *linebot.TextMessage: 50 if _, err = bot.ReplyMessage(event.ReplyToken, linebot.NewTextMessage(message.Text)).Do(); err != nil { 51 log.Print(err) 52 } 53 } 54 } 55 } 56 }) 57 58 router.Run(":" + port) 59}
回答1件
あなたの回答
tips
プレビュー