質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

1回答

821閲覧

linebot(golang)をherokuで動かそうとしてるのですが、うまくいかない

matsuochinyu

総合スコア57

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2022/07/05 13:37

編集2022/07/22 09:47

前提

LINE-SDK-GOでLINEBotを作ろうとしてherokuで動かそうとしてるのですが、上手く行きません。原因はなんとなくわかっていて、func main()http.ListenAndServerの部分だと思っています。
これを直せば動かせると思うのですが、herokuで動かすにはどうすればいいのか分かりません。
教えて頂けると幸いです。お願い致します。

実現したいこと

herokuで動かせるようにしたい

返されるステータスコード・エラー

503 2022-07-05T11:48:40.000000+00:00 app[api]: Build started by user ***@gmail.com 2022-07-05T11:48:52.727382+00:00 app[api]: Deploy 09f8b8c4 by user ***@gmail.com 2022-07-05T11:48:52.727382+00:00 app[api]: Release v18 created by user ***@gmail.com 2022-07-05T11:48:53.322318+00:00 heroku[web.1]: State changed from crashed to starting 2022-07-05T11:48:53.571027+00:00 heroku[web.1]: Starting process with command `go run main.go` 2022-07-05T11:48:55.151186+00:00 app[web.1]: bash: go: command not found 2022-07-05T11:48:55.259468+00:00 heroku[web.1]: Process exited with status 127 2022-07-05T11:48:55.388132+00:00 heroku[web.1]: State changed from starting to crashed 2022-07-05T11:49:20.000000+00:00 app[api]: Build succeeded 2022-07-05T11:50:04.649640+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=POST path="/callback" host=line1bots.herokuapp.com request_id=7352fd4a-7a7b-426c-9f87-fc0f3a4db01d fwd="147.92.150.193" dyno= connect= service= status=503 bytes= protocol=https

該当のソースコード

go

1package main 2 3import ( 4 "fmt" 5 "log" 6 "os" 7 "net/http" 8 9 "github.com/line/line-bot-sdk-go/linebot" 10) 11 12func main() { 13 http.HandleFunc("/callback", lineHandle) 14 http.HandleFunc("/", helloHandle) 15 16 port := os.Getenv("PORT") 17 addr := fmt.Sprintf(":%s", port) 18 http.ListenAndServe(addr, nil) 19} 20 21func helloHandle(w http.ResponseWriter, r *http.Request) { 22 fmt.Fprint(w, "HELLO!") 23} 24 25func lineHandle(w http.ResponseWriter, r *http.Request) { 26 bot, err := linebot.New( 27 "CHANNEL_SECRET", 28 "TOKEN", 29 ) 30 if err != nil { 31 log.Fatal(err) 32 } 33 events, err := bot.ParseRequest(r) 34 if err != nil { 35 if err == linebot.ErrInvalidSignature { 36 w.WriteHeader(400) 37 } else { 38 w.WriteHeader(500) 39 } 40 return 41 } 42 for _, event := range events { 43 if event.Type == linebot.EventTypeMessage { 44 switch message := event.Message.(type) { 45 case *linebot.TextMessage: 46 if _, err = bot.ReplyMessage(event.ReplyToken, linebot.NewTextMessage(message.Text)).Do(); err != nil { 47 log.Print(err) 48 } 49 case *linebot.StickerMessage: 50 replyMessage := fmt.Sprintf( 51 "sticker id is %s, stickerResourceType is %s", message.StickerID, message.StickerResourceType) 52 if _, err = bot.ReplyMessage(event.ReplyToken, linebot.NewTextMessage(replyMessage)).Do(); err != nil { 53 log.Print(err) 54 } 55 } 56 } 57 } 58}

試したこと

いろいろな人が載せてるソースコードでやってるのですが、できません。

補足情報(FW/ツールのバージョンなど)

Go: 1.18
LINE=SDK=BOT: v7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

http.ListenAndServeのエラーハンドリングを忘れないでください。
サンプルコードでエラーハンドリングを省略していたりしても、実際には省略しないようにしてください。

投稿2022/07/06 00:06

nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matsuochinyu

2022/07/06 07:27

申し訳ないです。訂正したのでもう一度見てもらえると助かります。
nobonobo

2022/07/06 12:32

特に指摘したところが修正されていることを確認できませんでした。
nobonobo

2022/07/06 12:38

また、「bash: go: command not found」というエラーが出ているので、heroku.ymlの内容も確認したいところです。
matsuochinyu

2022/07/21 10:56

heroku.ymlというのはなんでしょうか? 僕はProcfileとruntime.txtしか使用してないです。
nobonobo

2022/07/22 00:47

であればどういう手順でherokuにデプロイされているのか示してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問