linebot-sdk-goとgoqueryを用いて、スクレイピングした結果を特定のワードの返答として返したいのですが、linebotで表示されません。
herokuで行っているのですが、リクエストは届いているみたいです。
以下はコードです。
go
1for _, event := range events { 2 if event.Type == linebot.EventTypeMessage { 3 switch msg := event.Message.(type) { 4 case *linebot.TextMessage: 5 if msg.Text == "test"{ 6 bot.ReplyMessage(event.ReplyToken, linebot.NewTextMessage("success")).Do() 7 }else if msg.Text == "now" { 8 n := time.Now() 9 NowT := timeutil.Strftime(&n,"%Y年%m月%d日%H時%M分%S秒") 10 bot.ReplyMessage(event.ReplyToken,linebot.NewTextMessage(NowT)).Do() 11 }else if msg.Text == "disney"{ 12 doc, err := goquery.NewDocument("http://disneyreal.asumirai.info/realtime/disneyland-wait-today.html") 13 if err != nil { 14 log.Fatal(err) 15 } 16 test := doc.Find(".wait-time #WL_BTMOUNTAIN .area .time p").Text() 17 _, err = bot.ReplyMessage(event.ReplyToken,linebot.NewTextMessage(test)).Do() 18 if err != nil { 19 log.Fatal(err) 20 } 21 } 22 } 23 } 24 }
disney
に対する応答でのherokuのlogは以下のようになりました。
2017-12-27T13:09:37.740726+00:00 app[web.1]: 2017/12/27 13:09:37 linebot: APIError 400 The request body has 1 error(s) 2017-12-27T13:09:37.740741+00:00 app[web.1]: [messages[0].text] May not be empty 2017-12-27T13:09:43.499233+00:00 heroku[web.1]: State changed from starting to up 2017-12-27T13:09:37.745937+00:00 heroku[router]: at=error code=H13 desc="Connection closed without response" method=POST path="/callback"
これだけではどこまで通ったか分かりません。heroku のログを確認したり log をもう少し足してどこまで処理が進んだのか確認して下さい。
あともう1点、bot.ReplyMessage(event.ReplyToken,linebot.NewTextMessage(test)).Do() でエラーが返っているかもしれないのでログに出力するなどした方が良いです。
bot.ReplyMessage(event.ReplyToken,linebot.NewTextMessage(test)).Do()でのエラーをログに出力の仕方がわからないのですが、教えていただけると助かります
https://github.com/line/line-bot-sdk-go/blob/c87b736869c5b513726a60407afa5c31d4a94aa4/linebot/send_message.go#L112 戻り値が2つ返るので _, err := bot.Reply.... の様に err を受けて if err != nil { log.Fatal(err) } などで出力すると良いかと思います。
ありがとうございます!err内容はでたのでかくにんしてみます
回答1件
あなたの回答
tips
プレビュー