##はじめに
- Line bot勉強会の資料です。
- このスライドでは環境構築を目的としています。
- おみくじの続きから作成します。
LINE bot勉強会の流れ
流れ | step1 | step2 | step3 |
---|---|---|---|
機能 | おみくじbot | カウントbot | 最寄駅検索bot |
学ぶこと | LINE botの作り方 | DB・リッチニュー | ボタンアクション・URIスキーマ・外部API |
その他TIPS
- 可愛くするために
- スタンプの使い方
- 絵文字の使い方
##今回学ぶこと
- DBの作成
- リッチメニューについて
##DBの作成
###DBに必要なパッケージを入れる
GemfileにDB関連のパッケージを追加する
gem "activerecord", "< 5.0.0"
gem "sinatra-activerecord"
gem 'sqlite3', group: :development
gem 'pg', '~> 0.19.0', group: :production
##Rakefileを書く
rubyのコマンドを記述するファイル
touch Rakefile
require 'sinatra/activerecord'
require 'sinatra/activerecord/rake'
require './models.rb'
###migrateファイルを書く
$ bundle exec rake db:create_migration NAME=create_counts
class CreateCounts < ActiveRecord::Migration
def change
create_table :counts do |t|
t.integer :number
t.timestamps null: false
end
end
end
###models.rbを作る
$ touch models.rb
ActiveRecord::Base.establish_connection(ENV['DATABASE_URL']||"sqlite3:db/development.db")
class Count < ActiveRecord::Base
end
###migrateファイルを反映
$ bundle exec rake db:migrate
== ....... CreateCounts: migrating =====================================
-- create_table(:counts)
-> 0.0011s
== ....... CreateCounts: migrated (0.0012s) ============================
###app.rbに反映する
require 'bundler/setup'
Bundler.require
require 'line/bot'
require './models'
###gitignoreの追加
- .gitignoreを追加します。
$ touch .gitignore
db/development.db
db/schema.rb
###ここまでのチェック
rubyの動的実行を行います
Countが新しくできることを確認します。
$ irb
2.3.0 :001 > require './app'
=> true
2.3.0 :002 > Count.new
=> #<Count id: nil, number: nil, created_at: nil, updated_at: nil>
###Countの初期化
app.rbにCountがない場合に新たなカラムを追加します。
before do
if Count.all.empty?
Count.create(number: 0)
end
end
herokuの設定
$ heroku addons:create heroku-postgresql
$ heroku run rake db:migrate
##カウントアップしよう!
カウントアップのメッセージを受け取った時に数をあげます
if event.message['text'] =~ /おみくじ/
message[:text] = ["大吉", "中吉", "小吉", "凶", "大凶"].shuffle.first
elsif event.message['text'] =~ /カウントアップ/
c = Count.first.number + 1
Count.first.update(number: c)
message[:text] = "カウントアップ > 数は#{c}だよ"
end
###カウントアップ解説1
Countデータベースの一番初めの要素のnumberを取得し1足します。
c = Count.first.number + 1
###カウントアップ解説2
Countの最初の要素のデータを更新します。
データベースの操作はActiveRecordは、Railsでも同様の物を使っています。updateの他にも様々な操作があるので見て見ましょう
Count.first.update(number: c)
###カウントアップ解説3
変数は""の中で#{}で囲むことにより文字列の中で表現できます。
message[:text] = "数は#{c}だよ"
###同様にカウントダウンを作ります。
リッチメニューの導入
- LINEにはリッチメニューというボタンを押したらアクションを起こしてくれる機能があります。
- リッチメニューはプログラミングをしなくても使えるため非常に便利です。
- LINE@MANAGERから設定できます。
- アカウント一覧 > bot名 > リッチコンテンツ をクリックします。
リッチメニューの設定
リッチメニューの設定は次の様にしてください。
テンプレートの画像タイプは6です。
###画像の設定
- URLから画像をダウンロードしてアプロードします。
- ボタンを押すとテキストで「カウントアップ」「カウントダウン」を送信できる様にします。
###リッチメニュー完成
カウントアップの隣にデフォルのとメニューが残っています。次にメニューを消します。
###メニューを削除する
LINE@MANAGERのbot名から アカウント設定 > 基本設定 > アカウントページメニューを非表示にします。
まとめ
- データベースを使って数を保存する機能を実装した。
- リッチメニューを使って操作を行える様にした。