質問
LINE Messaging APIを利用しようと考えています。
手始めにオウム返しを、GitHubのサンプルコードを使ってHerokuへデプロイし、試してみました。
最初はうまくいったのですが、やがて、
LINE側のWebhook検証で、
「ボットサーバーから200以外のHTTPステータスコードが返されました」
ばかりが表示されるようになりました。
よくよく調べると、herokuでデプロイが成功しているはずなのに、
そのURLを開くと「存在しない」ことが分かりました。
何が原因でしょうか?
やりたいこと
我が社のLINE内に、いくつかの質問に答えてもらえば、
とある行為の妥当な金額のシミュレーションができるものを作りたい。
Javaの学習などの都合で本格的にLINEbotの仕組みを調べ始めたのは
2019年12月17日からだった。
試したこと
まずeclipse上で、コーディング・コンパイルし、コマンドプロンプト上で動いた。
いざLINEbotを、と思って調べたところ、
全然違っていた。
最初はLINEDeveloperのサイトにも気付かなかったので、
調べるまま、ほぼ環境設定、17日が終わった。
翌18日、
“こういうことは、LINEのサイトにありそうなものだ”
LINEDeveloperを探ってみると、サンプルボットまであった。
「heroku CLI」をインストールして、サンプルのコールバックも見事成功。
ここで遊び心が湧いて、
何を言っても「呼んだ?」と返すものも簡単に作れるだろう、と
コードの「originalMessageText」の箇所を「"呼んだ?"」に書き換え、デプロイ。
そして「返事して!」と書き込んだ。すると、
>「返事して!」
オウム返しのまま。
もう1回デプロイ。
>「返事して!」
もういい。Kitchensinkに進んだ。しかし何度デプロイしても、LINEのWebhook検証で、
「ボットサーバーから200以外のHTTPステータスコードが返されました」
という表示が出る。
ならばもう一度、echoをデプロイしよう。
「ボットサーバーから200以外の~」
あれ?できなくなってる。
帰宅後も調べてみた。
GASからデプロイする方法をやってみた。
それもエラー(エラーコード失念)
さらに調べたところ、callbackのやり方について面白いタッチのサイトを見つけた。
そこには、STSのインストールが書かれていた。
翌19日、STSをインストール。きっちりコードを作り込んで、コマンドプロンプトのコマンドでデプロイ。
あれ?何度やっても実行されないコマンドがある。
調べていると、ngrokのインストールを勧めるサイトに出会う。
ダウンロードそしてダブルクリック。しかしインストールが始まらない。
ついにngrokをインストールできなかった。
そこで再び、LINE Develoerの記載に従って、echoをデプロイ。
Webサイト上のGitHubリポジトリには、「呼んだ?」に書き換わったままのechoがある。
手入力で「originalMessageText」に戻し、デプロイ。
「ボットサーバーから200以外の~」
こうして初回の質問を投稿。
https://teratail.com/questions/230527
その一方で、GitHubのリポジトリを、今までにない名前に設定。
「ボットサーバーから200以外の~」
herokuのアプリネームを、今までにない名前に設定。
「ボットサーバーから200以外の~」
全部作り変えよう。
「ボットサーバーから200以外の~」
もう分からん。LINEに問い合わせをする。
翌20日はLINEの返事を待つ。しかし来なかった。
仕方なく、Kitchensinkのコードの分析だけで終える。
そして23日。LINEからの返事は22日にあった。
「この種の個別の問い合わせには答えられません。
DeveloperのQ&AかCommunityで・・・」
再び自分で調べた。
そして、そもそもURL自体が存在しない可能性に言及したサイトと出会う。
https://<アプリネーム>.herokuapp.comを開いてみた。
「Not Found status=404」
さらに調べた。するとこのteratailの過去の質問で、
「ちゃんとAdminしないとダメ」とある。
そこで、アドレスバーに直接「/admin/」を書き足してみた。
「Not Found status=404」
時間を空けてもう1回。
「Not Found status=404」
コマンドプロンプトから開いてみた。
「Not Found status=404」
意外と、/admin/を除いたもともとのURLが出来上がっていたりして。
「Not Found status=404」
あーもう分からない。
これらのログを取る方法がある。コマンドプロンプトで取れた。
これをteratailに貼って、質問しよう。
ということで今に至ります。
参考事項
ログをとってコピペしました。
個人情報と思われるものは事前に変換しております。
C:\Users\<端末名>>heroku logs --tail --app <アプリネーム> 2019-12-23T03:14:10.501337+00:00 app[api]: Release v1 created by user <メールアドレス> 2019-12-23T03:14:10.501337+00:00 app[api]: Initial release by user <メールアドレス> 2019-12-23T03:14:10.627098+00:00 app[api]: Release v2 created by user <メールアドレス> 2019-12-23T03:14:10.627098+00:00 app[api]: Enable Logplex by user <メールアドレス> 2019-12-23T03:14:11.199386+00:00 app[api]: Release v3 created by user <メールアドレス> 2019-12-23T03:14:11.199386+00:00 app[api]: Set LINE_BOT_CHANNEL_TOKEN, LINE_BOT_CHANNEL_SECRET config vars by user <メールアドレス> 2019-12-23T03:14:12.000000+00:00 app[api]: Build started by user <メールアドレス> 2019-12-23T03:19:33.973988+00:00 app[api]: Release v4 created by user <メールアドレス> 2019-12-23T03:19:33.973988+00:00 app[api]: Deploy by user <メールアドレス> 2019-12-23T03:19:33.993889+00:00 app[api]: Scaled to web@1:Free by user <メールアドレス> 2019-12-23T03:19:39.538186+00:00 heroku[web.1]: Starting process with command `java $JAVA_OPTS -jar sample-spring-boot-echo/build/libs/sample-spring-boot-echo-*.jar --server.port=5593` 2019-12-23T03:19:41.602694+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them. 2019-12-23T03:19:41.606727+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -XX:CICompilerCount=2 -Dfile.encoding=UTF-8 2019-12-23T03:19:44.631344+00:00 app[web.1]: 2019-12-23T03:19:44.631410+00:00 app[web.1]: . ____ _ __ _ _ 2019-12-23T03:19:44.631451+00:00 app[web.1]: /\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ 2019-12-23T03:19:44.632384+00:00 app[web.1]: ( ( )\___ | '_ | '_| | '_ / _` | \ \ \ \ 2019-12-23T03:19:44.632479+00:00 app[web.1]: \/ ___)| |_)| | | | | || (_| | ) ) ) ) 2019-12-23T03:19:44.632571+00:00 app[web.1]: ' |____| .__|_| |_|_| |_\__, | / / / / 2019-12-23T03:19:44.632666+00:00 app[web.1]: =========|_|==============|___/=/_/_/_/ 2019-12-23T03:19:44.634822+00:00 app[web.1]: :: Spring Boot :: (v2.2.1.RELEASE) 2019-12-23T03:19:44.634872+00:00 app[web.1]: 2019-12-23T03:19:44.924998+00:00 app[web.1]: 2019-12-23 03:19:44.918 INFO 4 --- [ main] c.e.bot.spring.echo.EchoApplication : Starting EchoApplication on c501d622-3c72-49b8-99d2-261008b7cbed with PID 4 (/app/sample-spring-boot-echo/build/libs/sample-spring-boot-echo-3.4.0-SNAPSHOT.jar started by u9943 in /app) 2019-12-23T03:19:44.926942+00:00 app[web.1]: 2019-12-23 03:19:44.926 INFO 4 --- [ main] c.e.bot.spring.echo.EchoApplication : No active profile set, falling back to default profiles: default 2019-12-23T03:19:47.566386+00:00 app[web.1]: 2019-12-23 03:19:47.566 INFO 4 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 5593 (http) 2019-12-23T03:19:47.616142+00:00 app[web.1]: 2019-12-23 03:19:47.615 INFO 4 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2019-12-23T03:19:47.616643+00:00 app[web.1]: 2019-12-23 03:19:47.616 INFO 4 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.27] 2019-12-23T03:19:47.805076+00:00 app[web.1]: 2019-12-23 03:19:47.803 INFO 4 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2019-12-23T03:19:47.805081+00:00 app[web.1]: 2019-12-23 03:19:47.804 INFO 4 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2546 ms 2019-12-23T03:19:48.975627+00:00 app[web.1]: 2019-12-23 03:19:48.975 INFO 4 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2019-12-23T03:19:50.634647+00:00 app[web.1]: 2019-12-23 03:19:50.627 INFO 4 --- [ main] c.l.b.s.b.s.LineMessageHandlerSupport : Registered LINE Messaging API event handler: count = 2 2019-12-23T03:19:50.642755+00:00 app[web.1]: 2019-12-23 03:19:50.641 INFO 4 --- [ main] c.l.b.s.b.s.LineMessageHandlerSupport : Mapped "[MessageEvent<TextMessageContent>]" onto public com.linecorp.bot.model.message.Message com.example.bot.spring.echo.EchoApplication.handleTextMessageEvent(com.linecorp.bot.model.event.MessageEvent<com.linecorp.bot.model.event.message.TextMessageContent>) 2019-12-23T03:19:50.643353+00:00 app[web.1]: 2019-12-23 03:19:50.642 INFO 4 --- [ main] c.l.b.s.b.s.LineMessageHandlerSupport : Mapped "[Event]" onto public void com.example.bot.spring.echo.EchoApplication.handleDefaultMessageEvent(com.linecorp.bot.model.event.Event) 2019-12-23T03:19:50.817899+00:00 app[web.1]: 2019-12-23 03:19:50.816 INFO 4 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 5593 (http) with context path '' 2019-12-23T03:19:50.844588+00:00 app[web.1]: 2019-12-23 03:19:50.844 INFO 4 --- [ main] c.e.bot.spring.echo.EchoApplication : Started EchoApplication in 7.252 seconds (JVM running for 9.237) 2019-12-23T03:19:51.333610+00:00 heroku[web.1]: State changed from starting to up 2019-12-23T03:20:06.000000+00:00 app[api]: Build succeeded 2019-12-23T03:20:15.082569+00:00 heroku[router]: at=info method=GET path="/" host=<アプリネーム>.herokuapp.com request_id=8839847a-c566-4761-8ad1-3b4e92142ad0 fwd="153.156.186.18" dyno=web.1 connect=0ms service=164ms status=404 bytes=550 protocol=https 2019-12-23T03:20:14.978131+00:00 app[web.1]: 2019-12-23 03:20:14.977 INFO 4 --- [nio-5593-exec-3] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2019-12-23T03:20:14.978357+00:00 app[web.1]: 2019-12-23 03:20:14.978 INFO 4 --- [nio-5593-exec-3] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2019-12-23T03:20:14.990506+00:00 app[web.1]: 2019-12-23 03:20:14.990 INFO 4 --- [nio-5593-exec-3] o.s.web.servlet.DispatcherServlet : Completed initialization in 12 ms 2019-12-23T03:20:15.517400+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=<アプリネーム>.herokuapp.com request_id=3190229d-e5f1-4149-9eac-2b61f21df29f fwd="153.156.186.18" dyno=web.1 connect=0ms service=78ms status=404 bytes=365 protocol=https 2019-12-23T03:21:08.178906+00:00 heroku[router]: at=info method=GET path="/admin/" host=<アプリネーム>.herokuapp.com request_id=52aff71e-d9ef-4da0-83ae-c7e802c38eec fwd="153.156.186.18" dyno=web.1 connect=0ms service=8ms status=404 bytes=550 protocol=https 2019-12-23T03:23:48.847310+00:00 heroku[router]: at=info method=GET path="/admin/" host=<アプリネーム>.herokuapp.com request_id=acfbbe99-9046-4c5f-bc01-18b8ab5dc8ac fwd="153.156.186.18" dyno=web.1 connect=0ms service=18ms status=404 bytes=550 protocol=https 2019-12-23T03:23:54.614020+00:00 heroku[router]: at=info method=GET path="/admin/" host=<アプリネーム>.herokuapp.com request_id=04dd0bc1-9e41-4958-b086-f7be403a94ac fwd="153.156.186.18" dyno=web.1 connect=0ms service=7ms status=404 bytes=550 protocol=https 2019-12-23T03:25:50.185453+00:00 heroku[router]: at=info method=GET path="/" host=<アプリネーム>.herokuapp.com request_id=a828c95c-2e16-4e8d-9376-8dc855de2e31 fwd="153.156.186.18" dyno=web.1 connect=0ms service=12ms status=404 bytes=550 protocol=https
補足
言語の知識はjavaコードが分かる程度です。
端末OSはWindows10です。
追記
丸投げというご意見を頂いたので、2時間かけて経緯を書き、字数オーバーになったため1時間かけて削る作業をしました。
しかし、結局聞きたい「なぜページが存在しないのか」の問と無関係の経緯ですので、丸投げというご批判を浴び続けることに変わりはないと考えます。
あなたの回答
tips
プレビュー