Javaを使ってLINE botを作ってみる その4

その4 APIの接続確認をする

接続を行うためにngrokが必要となるので、以下を見ながらインストールを行う。

learning-collection.com

インストールを行った「ngrok.exe」を起動するとコマンドプロンプトが開く。
※ngrok.exeを環境変数パスに設定しておくと便利

ngrokのサイトからAuthtokenをコピーし、入力する

ngrok authtoken コピーしたトークン

ngrokの起動

ポート番号はeclipseで起動した時のポート番号に合わせること。
Forwardingに記載されているhttp~をWebhook URLに設定するため、コピーしておく。

ngrok http 8080

Webhook URLを設定

LINE Developersのコンソールを開き、Message APIタブの、Webhook URLを設定する。

接続確認として検証を行う。

502 Bad Gatewayが出れば接続確認OK。

コマンドプロンプト上にも表示されているはず。

Webhookの利用を有効にする。

Javaアプリを起動する

アプリを起動させる前にブレイクポイントを置いておく。

SpringBootアプリを起動する。
プロジェクトを右クリック > 実行 >Spring Boot アプリケーション

デバッグモードで起動する。

アプリが起動するとコンソールにログが出力される。

作成したLINEアカウントを友達追加する

LINE DevelopersのコンソールからQRコードを表示。

QRコードをLINEで読み込み、追加する。

メッセージを送信してみる。

すると、SpringBootのアプリ側(Eclipse上)の画面が動く。
ブレイクポイントで止まっているので、まだメッセージは帰ってこない。

ポインターを進めるとメッセージが返ってくる。

これで接続テストは完了。
(やっと繋がった。。)

次から本格的にボットの機能を考えてみよう。

Javaを使ってLINE botを作ってみる その3

その3 SpringBootのプロジェクト作成

その1,その2で設定したAPIと連携するプロジェクトを作っていく。

Eclipseのインストールはここから。
筆者が使用しているのはEclipse2022Windows x64 Full Edition Java mergedoc.osdn.jp

Eclipseを開き、
パッケージエクスプローラー上で右クリック > 新規 > Spring スターター・プロジェクト(Spring Initializr)

プロジェクト設定
  • 名前:omusubi_bot
  • タイプ:Gradle - Groovy
  • Javaバージョン:17

依存関係
  • SpringBoot Dev Tools
  • Lombok
  • Spring Web

プロジェクトが出来上がったら文字コードUTF-8する。
(文字化け防止のために)
ウィンドウ > 設定 > 一般 > ワークスペース > テキスト・ファイル・エンコードでUTF-8を選択
設定したら適用して閉じること。

次に、Herokuでデプロイする時にエラーにならないようにアノテーションを使用可能にする。

Heroku とは | Heroku

Heroku とはアプリの構築、提供、監視、スケールに役立つクラウドプラットフォームで、アイデアを出してから運用を開始するまでのプロセスを迅速に進めることが可能です。また、インフラストラクチャの管理の問題からも解放されます。

プロジェクトを右クリックして、
プロパティー > Javaコンパイラー >注釈処理 を押下し、
「プロジェクト固有の設定を可能にする」と「注釈処理を使用可能にする」にチェックを入れる。

適用して再ビルドを行う。

依存関係に「Line Bot Spring Boot」を追加する

Maven Repository」で「line-bot-spring-boot」を検索すると最新のバージョンがあるのでそれを使用していく。
https://mvnrepository.com/artifact/com.linecorp.bot/line-bot-spring-boot

dependenciesブロックの一番下に以下を追記して保存。 6.0.0の部分は使用するバージョンにすること。

implementation 'com.linecorp.bot:line-bot-spring-boot:6.0.0'

保存すると自動的にビルドされた。

LINEと連携可能にする為にテストコードを作成

「LINE Messaging API SDK」にアクセスし、Javaのソースを見る。
developers.line.biz

GitHubのリンクに飛ぶので、sampleの中にある「EchoApplication.java」を参考してみる。

先ほど作成したプロジェクトの中にデフォルトで作成されている「OmusubiBotApplication.java」を編集。

【編集前】

【編集後】

【編集後のソース】

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.linecorp.bot.model.event.Event;
import com.linecorp.bot.model.event.MessageEvent;
import com.linecorp.bot.model.event.message.TextMessageContent;
import com.linecorp.bot.model.message.Message;
import com.linecorp.bot.model.message.TextMessage;
import com.linecorp.bot.spring.boot.annotation.EventMapping;
import com.linecorp.bot.spring.boot.annotation.LineMessageHandler;

@SpringBootApplication
@LineMessageHandler
public class OmusubiBotApplication {

    public static void main(String[] args) {
        SpringApplication.run(OmusubiBotApplication.class, args);
    }

    @EventMapping
    public Message handleTextMessageEvent(MessageEvent<TextMessageContent> event) {
        final String originalMessageText = event.getMessage().getText();
        return new TextMessage(originalMessageText);
    }

    @EventMapping
    public void handleDefaultMessageEvent(Event event) {
        System.out.println("event: " + event);
    }

}
設定ファイルにAPI接続情報を追記する

その2で作成したLINE DevelopersのMessaging API設定から以下の情報をコピーしておく。

  • チャネルシークレット

  • チャネルアクセストークン(長期)

application.propertiesを編集

【編集前】

【編集後】

【編集後のソース】

line.bot.channel-token=トークン
line.bot.channel-secret=シークレット
line.bot.handler.path=/

eclipse側の設定はここまで。
次は実際にアプリの連携をしてみる。

Javaを使ってLINE botを作ってみる その2

その2 プロバイダーの作成

その1で作成したアカウントにログインする。

ここからログインできる。

account.line.biz

 

その1と同じように作成したアカウントであれば、ビジネスアカウントでログインする。

※普段使いのLINEと同様のメールアドレスを使用した場合、LINEアカウントでログインすると普段使いのLINEにログインしてしまうので注意が必要。

 

ログインしたら「新規プロバイダーの作成」を押下。


このプロバイダー名はどういった意味を持つのか念のため調べてみると、公式が説明しているようだった。

チャネルを作成する | LINE Developers

プロバイダーは、LINEプラットフォームを通じてサービスを提供する個人、企業、またはそのほかの組織を意味する情報です。プロバイダー名には、あなたの名前や企業名を入力してください。

 

ふむ。。

まあ今回はお試しなので個人名にしておこう。

 

作成されたみたい。

Messaging API を使用したいのでチャネルを作成していく。

 

Messaging APIを押下すると新規チャネル作成の画面に遷移する。

 

一応チャネルも調べておこう。

チャネルを作成する | LINE Developers

チャネルは、LINEプラットフォームが提供する機能を、プロバイダーが開発するサービスで利用するための通信路です。チャネルを作成するには、名前、説明文、およびアイコン画像が必要です

 

必要情報を入力していく。

プライバシーポリシーや利用規約は任意のようだ。

 

作成を押下すると、最終確認画面が出てくる。

 

情報利用に関する同意をする。


これでチャネルが作成されたみたい。

 

チャネルの設定をしていこう。

 

応答メッセージとあいさつメッセージが有効になっているのが不要なので、無効にしたい。

 

応答設定からそれぞれ設定できるようだ。

WebhookだけオンにしてLINE Developers画面に戻る。

 

LINE Developersに戻ってリロードすると応答メッセージとあいさつメッセージが無効になっているので、設定完了。

 

一番下までスクロールして、発行を押下。

 

チャネルアクセストークンが発行される。

伏せているが、URLみたいなのが表示されているはず。

 

APIを使用するときにこの長いURLを使用することになるのだろう。

期限切れにならないらしい。

 

ここまででLINE Developersの設定は完了。

次はeclipse上でSpringBootのプロジェクトを作っていく。

 

Javaを使ってLINE botを作ってみる その1

その1 LINE Developersでアカウント作成

LINEでボットを作成するにあたってボット用のアカウントが必要だそう。

なのでまずはアカウントを作成してみる。

 

LINE Developersというサイトから作成できるらしい。

developers.line.biz

 

LINE Developersにアクセスして「コンソールにログイン」を押下。

 

新規でアカウントを作成する。

 

メールアドレスを入力し、ボタンを押すと登録用のリンクが送られてくる。

 

メールを開き、登録画面に進む。

※このときメールはスマホではなくPCで開いたほうがスムーズにできた。

 

ボットに使用する名前とパスワードを入力。

ロボットでないチェックも入れる。

 

入力したら、登録を押下。

 

内容を確認し、登録を行う。


これで一旦登録は完了。

サービスに移動してみる。

 

コンソールにて、開発者名とメールアドレスを登録する。

 

利用規約の確認をしてアカウントを作成。

利用規約を読んでいてそういえばLINEってヤフーと統合したんだったな。。という今更感)

 

これでLINE Developersコンソールに登録完了。

 

 

次はプロバイダーを作成していこう。