LINE Messaging APIを使用したLINE Botの作り方
LINEからMessaging APIが公開されたので、それを利用したLINE BOTを作ってみました。
「ハロー」と送信すると「こんにちは」と返ってくるBotです。とりあえずはじめの一歩ということでシンプルに。
使ったもの
- LINE ビジネスアカウント
- LINE Messaging API
- Heroku
- node.js
LINE BOT をつくるにはHTTPS でアクセスできる(SSL が利用できる)サーバーを用意する必要があります。自分で構築するかHerokuを使用するかですが、今回はとりあえず動かしたいだけなのでHeroku を利用しました。
※今後、勉強のためにもAWSのEC2を使用してみる予定です。
作成手順
LINE ビジネスアカウントの登録
https://business.line.me/ja/services/botにアクセスし、自分のLINEのIDでログインします。
ログイン後、画面右下の[Developer Trialを始める]をクリックし、必要な情報を入力します。
LINE@ MANAGERの設定
LINE ビジネスアカウントの登録後、LINE@ MANAGER の画面へ遷移すると思うので、
左側のメニューから、アカウント設定 > BOT設定 > 「APIを利用する」ボタンをクリック します。
リクエスト設定で Webhook送信を「利用する」にチェックを入れます。
LINE Developersでの設定
先ほどの BOT設定 のページで
ステータス > LINE Developersで設定する のリンクより、LINE Developersのページへ移動します。
そこで表示される値はこの後使用するので、メモしておきましょう。またQRコードから自分が持っているLINEアカウントに友達追加しておきましょう。
Webhook URL の設定
LINE Botのイベントをリアルタイムで通知するための仕組みとして、Webhookの設定を行います。
[EDIT]にてWebhook URLを設定します。アプリ名は自分で決めたものを入力して下さい。
https://アプリ名.herokuapp.com/webhook
Herokuの設定
今回はHerokuを利用したので、以下にてHeroku上にアプリケーションを作成します。
$ heroku apps:create アプリ名
この時作成されたURLが http://アプリ名.herokuapp.com/
という形でWebhook URL と同じURLであることを確認します。
これでLINE側のイベントをサーバ側(Heroku)で受け取ることが可能になります。
あとはリモートのGitリポジトリ等の設定します。Herokuについては、情報はいっぱいあると思うので、ここでは詳細を省きます。
Bot本体のプログラム作成
いろいろ公開されている物を参考にほぼパクらせてもらいました。。 作ったらHerokuへデプロイします。
const LINE_CHANNEL_ACCESS_TOKEN = 'Channl Access Token'; var express = require('express'); var bodyParser = require('body-parser'); var request = require('request'); var app = express(); app.post('/webhook', function(req, res, next){ res.status(200).end(); for (var event of req.body.events){ if (event.type == 'message' && event.message.text == 'ハロー'){ var headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + LINE_CHANNEL_ACCESS_TOKEN } var body = { replyToken: event.replyToken, messages: [{ type: 'text', text: 'こんにちは' }] } var url = 'https://api.line.me/v2/bot/message/reply'; request({ url: url, method: 'POST', headers: headers, body: body, json: true }); } } });
body-parser モジュールを使用してbody部からデータを取得します。取得したデータを判定して、条件に一致すれば、request モジュールでメッセージを返信するという単純な仕組みです。データの送受信はJSON形式で行っています。
これをHeroku にデプロイ後、「ハロー」と入力して、会話できることを確認してみましょう。
まとめ
プログラムについてはあまり触れませんでしたが、LINE API Referenceには、丁寧なAPIの説明が記載されているので、参照してみて下さい。
この基本的な「会話」さえできれば、あとは形態素解析や自然言語処理などを利用して、いろんなパターンの会話ができそうです。
ネタを考えつつ、今後何か作ってみたいと思います。