【LINE bot】初めてのおみくじbot


はじめに

  • Line bot勉強会の資料です。
  • このスライドでは環境構築を目的としています。

LINE bot勉強会の流れ

流れ step1 step2 step3
機能 おみくじbot カウントbot 最寄駅検索bot
学ぶこと LINE botの作り方 DB・リッチニュー ボタンアクション・URIスキーマ・外部API

その他TIPS


今回学ぶこと

  • LINE Messaging APIの利用法
  • 乱数を用いた処理

利用環境

環境 利用するもの
言語 ruby
フレームワーク sinatra
Server heroku

必要なパッケージのインストール


Gemfileの作成

$ gem install bundler
$ bundle init 

Gemfileの記述

Gemfile
gem 'sinatra'
gem 'sinatra-contrib'
gem 'rake'
gem 'line-bot-api'

gemのインストール

$ bundle

sinatraが動くかの確認

$ touch app.rb
app.rb
require 'bundler/setup'
Bundler.require

get '/' do
    'true'
end

サーバーを起動

起動した先にtrueが表示されれば大丈夫。

$  bundle exec ruby app.rb

line botを動かす


プログラムの記述

src/line.rbを作成し、line-bot-sdk-rubyのサンプルコードをコピー

$ mkdir src
$ touch src/line.rb 
src
require 'sinatra'
require 'line/bot'

def client
...
...

app.rbからsrc/line.rbを呼び出す

app.rb
require 'bundler/setup'
Bundler.require
require './src/line'
...
...

config.ru

config.ru
require 'bundler'
Bundler.require

require './app'
run Sinatra::Application

gitの作成

git init
git add -A
git commit -m 'initial commit'

herokuの作成

あらかじめherokuのアカウントを作成しておきます。
herokuにログインをし、アプリケーションを作成します。

$ heroku login
$ heroku create _original_application_name_

環境変数の設定

アプリケーションを作成するとアプリケーションのプロジェクトファイルを作成します。
herokuのダッシュボードから
作成したアプリのSettings > Reveal Config Varsで環境変数を設定していきます。


botのアカウントを作る

環境変数を設定するために元となるbotを作成します。
LINE developersからMessaging APIを選択しbotを作り始めます。


環境変数をとる

次に環境変数をherokuに設定します。


LINE_CHANNEL_SECRET

Channel Secretをコピーし、LINE_CHANNEL_SECRETに保存します。


LINE_CHANNEL_TOKEN

アクセストークンを発行し、LINE_CHANNEL_TOKENを設定します。有効時間が出て来ますが、24hで大丈夫です。


Webhock URL

「利用しない」から「利用する」に変更。
先ほど起動したweb serverのurl+'/callback'をWebhock URLに指定する。
_heroku_app_name_.herokuapp.com/callback


おみくじbotを作る


おみくじの機能

次のようにおみくじのプログラムを実装します。

./src/line.rb
37 if event.message['text'] =~ /おみくじ/
38  message[:text] = 
     ["大吉", "中吉", "小吉", "凶", "大凶"].shuffle.first
39  end

おみくじプログラム解説1

if文で正規表現でパターンマッチングをしています。

if event.message['text'] =~ /おみくじ/

おみくじプログラム解説2

配列の中の順番をランダムに並び替え一番最初の要素を返します。

["大吉", "中吉", "小吉", "凶", "大凶"].shuffle.first

以上でおみくじbotは終了です。