noyのブログ

健康なエンジニアを目指す人のブログ

全肯定ハ◯太郎 LINE bot を作る [初心者向け]

f:id:noy72:20180723115253p:plain

LINE botを作ります。オウム返しができるようになれば、あとはおまけみたいなもんです。全肯定要素はおまけです。

qiita.com

上記の内容をほぼそのまんまやります。

準備

インストール

gem install bundler
bundle init

決まったフォーマットで提供されるRuby言語用のライブラリを「gem」と呼びます。 (中略) gem同士の互換性を保ちながら各gemの導入、管理を行ってくれるのがBundlerです。
(Bundlerの使い方より引用)

カレントディレクトリ直下に GemFile が生成されます。

Gemfileに追加した 4 つのライブラリをインストールします。

bundle

サーバの起動

Rubyのファイルを作ります。

touch app.rb

app.rbに下記を追加。

5 行目の文字列はなんでも良いです。

sinatraを起動。

bundle exec ruby app.rb

http://localhost:4567 をブラウザで開きます。 true が表示されればOKです。

LINE bot の準備

次に、 src/line.rb を作ります。

mkdir src
touch src/line.rb

line.rb の中身は GitHub - line/line-bot-sdk-ruby: Line: :API - SDK of the LINE Messaging API for Ruby. の usage をコピペします。

app.rbに1行追加します。

config.ru を作ります。

heroku での設定

クラウド・アプリケーション・プラットフォーム | Heroku でアカウントを作成します。 

アカウント作成後、右上のアイコン -> account setting -> ssh key で ssh key を登録します。 ※後でもいい

harokuで使うものをインストールします。
(参考: The Heroku CLI | Heroku Dev Center)

brew install heroku/brew/heroku

コンソールからログインします。

heroku login

その後、メールアドレスとパスワードの入力を促されます。ssh key が未登録だと、この段階で設定します。
参考:Heroku導入メモ · GitHub

ログインできたらアプリケーションを作成します。

heroku create zenkoutei-line-bot

作成したら、準備しておいたファイル群をデプロイします。

heroku git:remote -a zenkoutei-line-bot
git add .
git commit -m "First commit"
git push heroku master

https://[アプリ名].herokuapp.com/ に true が表示されればOKです。 表示されない場合は、
- heroku のサイトからデプロイができているかを確認
- サーバを一旦停止させてみる(無意味かも)
とかやってみるといいかもしれません。

LINE bot を作る

LINE Developers に登録します。

登録後、ここ から、

今すぐ始めよう
→ 新規プロバイダー作成
 → 新規チャネル作成

多分、名前にハイフンはダメ。プランはフリーでいいと思います。

これで何もしないbot が作成できました。

環境変数の設定

先ほど作成したページのチャネル基本設定にChannel Secret とアクセストークンがあるので、heroku に登録します。

heroku で作成したアプリのページ
→ 歯車アイコン
 → Config vars

以下のようにします。

f:id:noy72:20180723114839p:plain

オウム返し bot

作成した bot を LINE で友達に追加し、実際にメッセージを送ってみます。 うまくできていれば、送ったメッセージをそのまま返してくれます。

あとは、好きに line.rb をいじってください。

おまけ

全肯定させる

元ネタ:https://togetter.com/li/1233070

line.rb を少しいじります。

replyText メソッドでパターンマッチを用いて全肯定させます。正規表現がわかってない感じがありますが、それっぽく動きます。

正規表現参考

class MatchData (Ruby 2.5.0)

Ruby 正規表現の使い方

結論

Oneshotは良ゲー