はじめに
LINE Botを作成してみたので本エントリにまとめます。
Herokuをはじめる
botアプリケーションはHerokuにデプロイするため、 こちらの手順に従ってHerokuアカウントの登録、Heroku CLIのインストールと使い方を学びます。
Herokuはアプリケーションをクラウドでビルド、実行、運用できるPaaSです。 devcenter.heroku.com
LINE Developersコンソールでチャネルを作成
LINEが提供するMessaging APIを使用したbotを作成するためには、 開発者アカウントの登録とLINEプラットフォームを使用するために必要な"チャネル"を作成する必要があります。 手順はこちらの記事にまとまっています。 qiita.com
次のようにチャネルの作成ではアプリ名を'My bot'としました。
Herokuにはmy-bot-201805
としてsample-spring-boot-echo
をデプロイしました。
これでLINEからMy botにメッセージを送ると、送信したメッセージがMy botから返ってきます。
サンプルbotの修正
ここまででEchoサンプルボットの動作確認ができました。
続けて少しだけサンプルアプリsample-spring-boot-echo
に手を加えてみます。
まず、Herokuからmy-bot-201805
のリポジトリをgitでクローンします。
$ heroku git:clone -a my-bot-201805 Cloning into 'my-bot-201805'... warning: You appear to have cloned an empty repository.
しかし、上記に示すように空のリポジトリをクローンした、と警告されます。
この事象についてはこちらのヘルプに載っていました。
どうやらsample-spring-boot-echo
のREADMEで行なったように、
Herokuボタンを使用したHeroku API経由のデプロイだとこのような結果になるようです。
Why do I see a message 'You appear to have cloned an empty repository' when using `heroku git:clone`? - Heroku Help
同ヘルプページのResolutionに従ってHerokuボタンのリンクからgitリポジトリのURLを取得し、git remote add
、git pull
すれば良いです。
$ cd my-bot-201805/ $ git remote add origin https://github.com/line/line-bot-sdk-java $ git pull origin master
それではbotに修正を加えます。
以下の通り、EchoApplication::handleTextMessageEvent()
に"How are you?"というメッセージを受け取った場合には"I'm great!"と応答するコードを追加します。
EchoApplication.java
@EventMapping public TextMessage handleTextMessageEvent(MessageEvent<TextMessageContent> event) { System.out.println("event: " + event); if (event.getMessage().getText().equals("How are you?")){ return new TextMessage("I'm great!"); } else { return new TextMessage(event.getMessage().getText()); } }
変更を反映します。
$ git add . $ git commit -am "Make it more interactive" $ git push heroku master
LINEからメッセージを送ると期待通りに動作することが確認できました。
さいごに
bot作成は思った以上に簡単にできることがわかりました。なかなか面白いです。
実用的なbotアプリの実装に向けてこれからアイディアを捻出してみようと思います。