概要
LINEが配布しているサンプルコードのline-bot-sdk-javaを使って、とりあえずLINE Botを動かしてみる手順。このサンプルコードは、LINE Botを作る上で必要なコードが一式揃っているので、これを元に拡張していくと効率がよいと思われる。
Javaのversionは11.02で実施。
関連
Spring boot + JPA + Flyway on herokuでLINE Botを作る
こちらはline-bot-sdk-javaに手を加えてDB接続など行ったもの。
環境
- Java 11.02
- Spring Boot 2.4.9 (line-bot-sdk-javaで使われているversion)
LINE Channelの作成
以下を参考にChannelを作成する。
ボット用のチャネルを作成
herokuでアプリを作成
herokuでアプリを作成する。
https://signup.heroku.com/
herokuに環境変数の登録
LINE Developersコンソールで、Messaging APIチャネルのチャネルシークレットとチャネルアクセストークンを確認し、herokuの管理画面のConfig Varsに以下を登録する。
CHANNEL_TOKEN:LINEのChannel access token
CHANNEL_SECRET:LINEのChannel secret
ソースコードの作成
サンプルコードを取得
サンプルコードには色々なものが入っているが、その中のsample-spring-boot-kitchensinkを使う。
$ git clone https://github.com/line/line-bot-sdk-java.git
Intellijでbuild.gradleを開く
TOP階層のbuild.gradleをIntellijで開く。
Procfileを編集
sample-spring-boot-kitchensinkを利用するため、Procfileを以下のように書き換える。
-web: java $JAVA_OPTS -jar sample-spring-boot-echo/build/libs/sample-spring-boot-echo-*.jar --server.port=$PORT
+web: java $JAVA_OPTS -jar sample-spring-boot-kitchensink/build/libs/sample-spring-boot-kitchensink-*.jar --server.port=$PORT
設定ファイルを作成、編集
templateをコピーする。
$ cd sample-spring-boot-kitchensink/src/main/resources/
$ cp application-template.yml application.yml
以下の文字列は削除して、以下の様に環境変数を使ってLINEのTOKENとSECRETを定義する。
This is a template for the configuration file.
Make a copy calledapplication.yml
and change the values below.
line.bot:
channel-token: ${CHANNEL_TOKEN}
channel-secret: ${CHANNEL_SECRET}
handler.path: /callback
Deploy
gitにherokuの情報を登録
$ heroku git:remote -a {HEROKU_APP_NAME}
Deploy
$ git add Procfile
$ git commit -m 'Initial commit'
$ git push heroku master
LINE Developer Console
LINEの管理画面で、herokuアプリのURLをwebhookとして登録する。
Webhook URL: https://{HEROKU_APP_NAME}.herokuapp.com/callback
Use webhook: onにする
OKとなればLINE BOTが正常に起動している。
動作確認
LINEアプリで該当Channelにメッセージを送ってみる。以下はすべてサンプルコードに実装されている機能。
「profile」と入力して、ユーザープロフィールを取得する
「buttons」と入力して、テンプレートメッセージを送る
「confirm」と入力して、テンプレートメッセージを送る
###「carousel」と入力して、テンプレートメッセージを送る
###「imagemap」と入力して、イメージマップメッセージを送る
LINE公式アカウントをグループチャットに招待してから「bye」と入力
グループチャットからLINE公式アカウントを退出させられる。
LINE公式アカウントに画像、音声、動画、位置情報などを送る
ボットはこれらのコンテンツを取得し、同じものを送り返してくる。
ソースコード
ファイル | 処理内容 |
---|---|
KitchenSinkApplication.java | メインのクラス |
KitchenSinkController.java | controller。テキスト、スタンプ、画像投稿など様々な投稿方法ごとの返信処理の窓口 |
ExampleFlexMessageSupplier.java | FlexMessage用 |
MessageWithQuickReplySupplier.java | quickReply用 |
KitchenSinkWebMvcConfigurer.java |
gradleのversionが低い
サンプルコードはgradleのversionが6.7.1なので必要であればアップグレードする。
$ ./gradlew -v
------------------------------------------------------------
Gradle 6.7.1
------------------------------------------------------------
Build time: 2020-11-16 17:09:24 UTC
Revision: 2972ff02f3210d2ceed2f1ea880f026acfbab5c0
Kotlin: 1.3.72
Groovy: 2.5.12
Ant: Apache Ant(TM) version 1.10.8 compiled on May 10 2020
JVM: 13.0.2 (Oracle Corporation 13.0.2+8)
OS: Mac OS X 10.14.6 x86_64
関連
Spring boot + JPA + Flyway on herokuでLINE Botを作る