💻

Azure Web Apps × Java で簡単にLINE Bot を作ろう! (using GitHub Codespaces)

2021/10/11に公開

こんにちは、もっちゃんと申します。

今回の内容は 2021/06/14に開催された VS Code Meetup #13 のLTで発表した内容を改めてまとめるものになります!
それではAzure Web AppsとJavaの組み合わせで簡単にLINE Botが作れるかを実際に見ていきましょう!

必要なもの

必要なVS Codeの拡張機能

実際にやってみよう!

1.Messaging API チャネルの作成

まずはLINE Developersコンソール画面でMessaging API チャネルの作成作業を行います。

Messaging API チャネルの作成については下記あたりを参考に作業を進めてください。

https://developers.line.me/ja/services/messaging-api/ にアクセスしてログインし、Messaging API チャネルの作成画面まで進み、今回のチャネル名はazure-app-java-botとかにして、あとはチャネル名などの必要な情報を入力して最後に作成ボタンを押して作成してください。

チャネルを作成したら、アクセストークンとシークレットキーを取得しにいきます。(後で使います)

応答メッセージ設定もオフにしておきましょう!

2.Javaのプロジェクトを作成する

VS Code上で下記のように[Create a Maven Project] を選択し、プロジェクトを作成します。

3.Maven(pom.xml)にLINEのSDKを追加する

JavaのビルドツールであるMavenの設定ファイル pom.xml に依存関係のライブラリ(LINEのSDK)を追加します。

  • echo/pom.xml

https://mvnrepository.com/artifact/com.linecorp.bot/line-bot-spring-boot/4.6.0

サンプルコード

<!-- https://mvnrepository.com/artifact/com.linecorp.bot/line-bot-spring-boot -->
<dependency>
    <groupId>com.linecorp.bot</groupId>
    <artifactId>line-bot-spring-boot</artifactId>
    <version>4.6.0</version>
</dependency>

4.LINE Bot用のコード用意

LINE Messaging API SDK for Java のGitHubリポジトリにはサンプルコードが用意されているので丸っとコピペします。(このサンプルコードはオウム返しが実行できるコードになっています)

https://github.com/line/line-bot-sdk-java/blob/master/sample-spring-boot-echo/src/main/java/com/example/bot/spring/echo/EchoApplication.java

  • echo/src/main/java/com/example/bot/spring/echo/echo/EchoApplication.java
サンプルコード
/*
 * Copyright 2016 LINE Corporation
 *
 * LINE Corporation licenses this file to you under the Apache License,
 * version 2.0 (the "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at:
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations
 * under the License.
 */

package com.example.bot.spring.echo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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 EchoApplication {
    private final Logger log = LoggerFactory.getLogger(EchoApplication.class);

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

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

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

なお、テストコードは今回使わないので下記のファイルをいったん削除しておきます。

  • echo/src/test/java/com/example/bot/spring/echo/EchoApplicationTest.java

5.プロジェクトへの Azure App Service 用の Maven プラグインの追加

Azure Web Appsにデプロイするにあたり、MicrosoftではMavenのプラグインを用意しているので、そちらを使えるようにしていきます。

下記のコマンドをターミナルで実行してください。

mvn com.microsoft.azure:azure-webapp-maven-plugin:1.14.0:config

途中、色々と聞かれますが下記の情報を参考に進めてもらえればと思います。

6.Azure Web Appsへのデプロイ

準備が整いましたのでAzure Web Appsにデプロイしていきましょう。

先ほど、使えるようにしたMavenのプラグインを利用します。
azure-webapp:deploy を実行しましょう。

すると認証コードの入力を求められるので、入力します。

デプロイが成功すると下記のようにURLが表示されるのでメモしておきましょう。(後で使います)

7.環境変数の設定

LINEのBotを動かす際には、アクセストークンとシークレットキーの値が必要です。Messaging API チャネルの作成時に取得してあるので、下記の2つの環境変数名で設定していきます。

  • LINE_BOT_CHANNEL_SECRET
  • LINE_BOT_CHANNEL_TOKEN

8.Messaging API チャネルのWebhookに設定

最後の設定です。Messaging API チャネルのWebhookにデプロイ時に取得したURL + callbackを末尾に追加して設定完了です!

LINE Botと友達になって動かしてみましょう!

それでは今回作ったLINE Botを動かしてみましょう!
まずはLINE Botとお友達になります!(LINE BotはQR Codeで簡単に友達になれます!!)

友達になったら何かメッセージを打ち込んでみてください。
きっと皆さんのLINE Botも動いたのではないでしょうか!🎉🎉(ただオウム返しするだけです^^)

まとめ

いかがでしたでしょう?結構簡単だったんじゃないでしょうか!
基本VS Code上だけで作業が完結するのが素晴らしいところですね!
また、LINEのSDKを使うとコードの記述量もグッと抑えられるのでオススメです!
SDKは様々な言語に対応しているので他の言語でもぜひ試してみてください!

参考

Discussion