[RUBY] I made a LINE bot with Rails + heroku

What I made

I thought it would be convenient if there was a BOT that would notify me of garbage disposal every morning. I made it after studying.

スクリーンショット 2020-10-28 23.01.21.png

Language used

Ruby Ruby On Rails6 Heroku LINE Messager API

STEP 1 Create a LINE BOT that returns a message

I will omit this because other people have posted it in detail.

Reference article



STEP 2 PUSH message

Add a task and send a message at a fixed time.

Creating a task

$rails g task reminder_task

Then generate a controller

$rails g controller webhook trash

describe description and task


namespace :reminder_task do
  desc "Here is the subject of the task"
  task :trash => :environment do
    webhook = WebhookController.new
    puts webhook.trash

Next, define the action of the webhook controller


  def trash
    puts "message"

Check if it is added to the rake task here

$ rake -T
rake reminder_task:trash task theme

If you can confirm that it has been added

$ rake reminder_task:trash

OK when [Message] is sent

Setting environment variables

If you want to use PUSH messages, you have to set environment variables.

See below for environment variables. https://qiita.com/yuichir43705457/items/7cfcae6546876086b849 https://qiita.com/noraworld/items/bfa80811c9e30b4474af

Setting method

Add dotenv to gem

gem 'dotenv-rails'

Create an .env file in the root directory of your application directory (Created where there is an app or gemfile)

Set various LINE channels



Rewrite the trash action of the webhook controller


class WebhookController < ApplicationController
  require 'line/bot'

def trash
  message = {
            "type": "text",
            "text": WebhookController.contents
            client = Line::Bot::Client.new { |config|
              config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
              config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
            response = client.push_message(ENV["LINE_USER_ID"], message)

  def self.contents

      date = Date.today

      case date.strftime('%a')
        when "Mon"
            "Today is Monday, Burning Garbage Day!"
        when "Tue"
        when "Wed"
            "Today is Wednesday, the day of non-burnable garbage and cardboard"
        when "Thu"
            "Today is Thursday, a normal garbage day!"
        when "Fri"
            "Today is Friday, the day of cans, bottles and PET bottles!"
        when "Sat"
            "Tired for a week! None today!"

Push to Heroku and set up a scheduler and you should get a message.


The service you made for the first time after studying ruby? Therefore, it seems that there are many mistakes. In that case, I would be grateful if you could point out!

(Thanks to all the reference articles.)

Recommended Posts

I made a LINE bot with Rails + heroku
[LINE BOT] I made a ramen BOT with Java (Maven) + Heroku + Spring Boot (1)
Deploy Line bot with rails5 + Docker + Heroku Note
I made a portfolio with Ruby On Rails
[Rails] Push transmission with LINE Bot
I made a development environment with rails6 + docker + postgreSQL + Materialize.
I made a risky die with Ruby
I made a rock-paper-scissors app with kotlin
I made a rock-paper-scissors app with android
I made a command line interface with WinMerge Plugin using JD-Core
[Rails] I made a simple calendar mini app with customized specifications.
04. I made a front end with SpringBoot + Thymeleaf
I made a mosaic art with Pokemon images
I made a gender selection column with enum
[Rails] I made a draft function using enum
Let's make a LINE Bot with Ruby + Sinatra --Part 2
[Ruby] I made a crawler with anemone and nokogiri.
[Beginner] I stumbled upon launching a project with Rails6
Let's make a LINE Bot with Ruby + Sinatra --Part 1
I made a chat app.
I made a Japanese version of Rails / devise automatic email
I want to push an app made with Rails 6 to GitHub
I made a plugin to execute jextract with Gradle task
I made a mod that instantly calls a vehicle with Minecraft
I came across a guy with two dots in Rails
Ruby: I made a FizzBuzz program!
I made a shopify app @java
[Rails] Creating a new project with rails new
I made a simple recommendation function.
I made a matching app (Android app)
I made a package.xml generation tool.
[Android] I made a pedometer app.
I want to make a button with a line break with link_to [Note]
I want to add a browsing function with ruby on rails
I made a reply function for the Rails Tutorial extension (Part 1)
I got a warning message with the rails _6.0.3_ new hello_myapp command
I made a simple search form with Spring Boot + GitHub Search API.
I made a reply function for the Rails Tutorial extension (Part 5):
I tried to make a group function (bulletin board) with Rails
I made a SPA with Rails + Nuxt.js for half a year of self-study, so please take a look.
I built a rails environment with docker and mysql, but I got stuck
[Ruby] I made a simple Ping client
[Rails6] Create a new app with Rails [Beginner]
Deploy heroku with Rails6 (Cloud9 + Ubuntu) + MySQL
I made an app to scribble with PencilKit on a PDF file
Deploy to heroku with Docker (Rails 6, MySQL)
[Rails withdrawal] Create a simple withdrawal function with rails
I made a virtual currency arbitrage bot and tried to make money
I tried playing with BottomNavigationView a little ①
Make a login function with Rails anyway
I made a plugin for IntelliJ IDEA
I made a calculator app on Android
[Rails 5] Create a new app with Rails [Beginner]
Make a site template easily with Rails
I made a new Java deployment tool
line bot
I made a bulletin board using Docker 1
I made a reply function for Rails Tutorial extension (Part 2): Change model
I made a site that summarizes information on carbohydrate restriction with Vue.js
[LINE @] I tried to make a Japanese calendar Western calendar conversion BOT [Messaging API]
I want to be able to read a file using refile with administrate [rails6]