botにチャットでテキストを送信すると、同じ内容のテキストを返信してくれるアプリケーションを作成していきます。
LINE Developersの登録と設定
Ngrokをインストールしてローカル開発環境を構築
<aside> 💡 Ngrokとは、手元のPC内に立ち上げたローカルサーバを簡単に外部に公開することができるサービスです。LINE Bot開発で、ちょっとした動作確認行うために、毎回Herokuなどにデプロイしてログを確認するという作業をしなくてもいいので作業効率が上がります。
</aside>
$ brew install ngrok
$ ngrok —version
$ ngrok http 3000
※サーバーを起動した時に発行される赤線を引いた下記のURLが後々必要になります。
LINEbotの実装
$ rails new hoge
bundle install
します。gem 'line-bot-api'
$ rails g controller linebot
コントローラは公式のコードやQiitaの記事を参考にしました。
https://github.com/line/line-bot-sdk-ruby
https://qiita.com/natsukingdom-yamaguchi/items/e84dffdd90d7f5ef8224
class LinebotController < ApplicationController
require 'line/bot'
# callbackアクションのCSRFトークン認証を無効
protect_from_forgery :except => [:callback]
def client
@client ||= Line::Bot::Client.new { |config|
config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
}
end
def callback
body = request.body.read
signature = request.env['HTTP_X_LINE_SIGNATURE']
unless client.validate_signature(body, signature)
head :bad_request
end
events = client.parse_events_from(body)
events.each { |event|
case event
when Line::Bot::Event::Message
case event.type
when Line::Bot::Event::MessageType::Text
message = {
type: 'text',
text: event.message['text']
}
client.reply_message(event['replyToken'], message)
end
end
}
head :ok
end
end
Rails.application.routes.draw do
post '/callback', to: 'linebot#callback'
end
dotenvを使ってenvファイル環境変数を設定
bundle install
します。gem 'dotenv-rails'
<aside> 💡 dotenvとは環境変数を管理する事が出来るgemです。 アプリケーションの中で「DBの情報」や「サーバーの情報」「外部APIの連携情報」など第三者に見せたくない機密情報をコードとは別に環境変数として情報を保存します。保存先は.envファイル という機密情報をまとめたファイルを作成し、情報を管理します。.envファイル はgitにそのまま載せると機密情報がgitに乗ってしまうため、 .gitignore に .envファイル を追加することで情報漏洩を回避します。
</aside>
$ touch .env
LINE_CHANNEL_SECRET
とLINE_CHANNEL_TOKEN
を管理します。LINE_CHANNEL_SECRET=Channel secretを貼り付ける
LINE_CHANNEL_TOKEN=Channel access tokenを貼り付ける
※Channel secretはLINE Developersの指定チャンネル内、Basic settingに記載されています。
※Channel access tokenはLINE Developersの指定チャンネル内、Messaging APIに記載されています。
/.env
Webhook URLを設定
これで作成したLINEbotをQRコードで追加することで、チャットをおうむ返しするアプリケーションが完成しました。