search
LoginSignup
38

More than 3 years have passed since last update.

posted at

updated at

Organization

LINE Bot × Java(Spring Boot)構築手順

このエントリーはGMOアドマーケティングAdvent Calendar 2018の21日目です。前日は@thomi40さんのWebVRのフレームワーク「A-Frame」についてでした。

こんにちは@zakisanbaimanです。
普段は広告配信アプリケーションのロジック部分(Java)を担当しています。

最近LINE botで遊んでたので、その構築方法を紹介します。

構築の流れ

  1. LINE@アカウント作成
  2. Messaging API
  3. Herokuの準備
  4. SDK準備
  5. botのデプロイ
  6. LINE DeveloperでWebhook設定

1. LINE@アカウント作成

まずLINE@アカウントを作成します
アカウントは2種類あるのですが、趣味用なら一般アカウントでOKです。
スクリーンショット_2018-12-09_15_32_14.png

アカウント作成画面です。
業種は「個人」でいいでしょう。
スクリーンショット 2018-12-09 15.40.24.png

アカウントが発行されると、LINE@MANAGERにログインできます。
ここでボットのアイコンやステータスメッセージなど設定できます。とはいえあんまりこの画面は使いません。
スクリーンショット_2018-12-09_15_51_54.png

今回はボットをMessaging APIを使うので、「LINE Developers」に移りましょう。¥
スクリーンショット_2018-12-09_15_47_25.png

以下が「LINE Developers」の画面です。主にこのサイトを使ってボットの設定をしていきます。

スクリーンショット_2018-12-09_16_05_33.png

  1. Messaging API

「プロバイダー」を設定していきます。
ここでいうプロバイダーとは、botのサービス提供者のことです。

Kobito.Uof4qL.png

プロバイダーが作成されました。
続いてチャネルを作ります。
ites01.png

プランは一旦「Developer Trial」で良いと思います。
image.png

ここでアプリ名やアプリアイコンを設定します。
Kobito.dv18ve.png

これでアプリはできました。
「チャンネル基本設定」の下の方に友達追加用のQRコードがあるので、友達追加してみましょう。

image.png

友達登録すると、初期設定であいさつだけしてくれます。

Kobito.GM1Ugt.png

ここまでOKなら、続いてボットのプログラムを作って行きましょう。

3. Herokuの準備

プログラムを乗せるためのサーバを用意します。
今回は無料で簡単に用意できるherokuというクラウドプラットフォームを使います。
スクリーンショット 2018-12-18 10.59.50.png

ここでは一旦Sign upだけ済ましときましょう。
herokuのセットアップはもうちょっと後ろでやります。
スクリーンショット 2018-12-19 23.36.13.png

4. SDK準備

まずGitHubからLINEが用意しているLINE Bot開発用のSDKをクローンしてきましょう。
今回はJavaのものを紹介しますが、他にもPHP,Go,Perl,Ruby,Python,Node.jsなどがあります。
https://github.com/line/line-bot-sdk-java

ディレクトリ構造が複雑ですが、シンプルな返答をするだけなら
sample-spring-boot-echo内をいじるだけでOKです。
コードはそのままでもオウム返しの処理が動くので、ここではとくにJavaファイルは変更しません。

1つだと作成しないといけないファイルがあり、それがapplication.ymlです。
resourcesにapplication-template.ymlがあるので、それをコピーしてapplication.ymlを作りましょう。
(パス:line-bot-sdk-java/sample-spring-boot-echo/src/main/resources/application-template.yml)

application.ymlにはチャネルトークンとチャネルシークレットを設定します。
(どちらも「チャネル基本設定に載っています」)

application.yml
line.bot:
  channel-token: '{チャネルトークン}'
  channel-secret: '{チャネルシークレット}'
  handler.path: /callback

5. botのデプロイ

line-bot-sdk-java/sample-spring-boot-echo/README.mdの中に「Deploy to Heroku」というボタンああるので、押してみましょう。

Kobito.anDcdS.png

するとブラウザが勝手に開いてログイン画面が開くので、ログインします。
そしてアプリ名、チャネルシークレット、チャネルトークンを入力して「Deploy app」押下します。

ites02_1.png

デプロイに数分かかりますが、「Your app was successfully deployed.」と出たらデプロイ成功です。

Kobito.rJWhav.png

6.LINE DeveloperでWebhook設定

Webhook送信を「利用する」にします。

Kobito.HemXll.png

Webhook URLに「https://${YOUR_HEROKU_APP_NAME}.herokuapp.com/callback」と設定します。
{YOUR_HEROKU_APP_NAME}は、herokuで設定したapp nameです。

Kobito.umGEKq.png

自動応答メッセージは「利用しない」にします。
こう設定しないと、作成したプログラムが呼ばれません。

Kobito.l06xUw.png

↑上記設定をしてもうまく反映されていないときがあります。その際は画面更新を行うと反映されるので画面更新などしてみましょう。

ひとまずオウム返ししてくれるボットができました!

Kobito.vD2nql.png

参考サイト

https://qiita.com/skycat_me/items/9f27cbd9354515df744a

ハマったこと

  • ../gradlew bootRunが通らない
    application.ymlの「This is tempalte〜」の部分がコメントアウトされていないため

  • gradle homeが分からない
    $ echo $GRADLE_HOME
    /usr/local/gradle

  • @AllArgsConstructor(onConstructor = @__(@JsonCreator))
    Error:(27, 38) java: シンボルを見つけられません
    シンボル: クラス __
    「Enable annotation processing」にチェックを入れると直った。(IntelliJの場合)

次回のAdvent Calendar 2018

明日は@yoshishinの【Rails6のactiontextを試してみる】のお話です。良いクリスマスを〜

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
38