[RUBY] Ich habe einen LINE Bot mit Rails + Heroku gemacht

Was ich gemacht habe

Ich dachte, es wäre praktisch, wenn es einen BOT gäbe, der mich jeden Morgen über die Müllentsorgung informiert. Ich habe es nach dem Studium geschafft.

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

Verwendete Sprache

Ruby Ruby On Rails6 Heroku LINE Messager API

SCHRITT 1 Erstellen Sie einen LINE BOT, der eine Nachricht zurückgibt

Ich werde dies weglassen, weil andere Leute es im Detail gepostet haben.

Referenzartikel

https://qiita.com/y428_b/items/d2b1a376f5900aea30dc

https://qiita.com/natsukingdom-yamaguchi/items/e84dffdd90d7f5ef8224

SCHRITT 2 PUSH-Nachricht

Fügen Sie eine Aufgabe hinzu und senden Sie eine Nachricht zu einem festgelegten Zeitpunkt.

Eine Aufgabe erstellen

$rails g task reminder_task

Dann generieren Sie einen Controller

$rails g controller webhook trash

Beschreibung und Aufgabe beschreiben

lib/tasks/reminder_task.rake


namespace :reminder_task do
  desc "Das Thema der Aufgabe hier"
  task :trash => :environment do
    webhook = WebhookController.new
    puts webhook.trash
  end
end

Definieren Sie als Nächstes die Aktion des Webhook-Controllers

app/controllers/webhook_controller.rb


  def trash
    puts "Botschaft"
  end

Überprüfen Sie hier, ob es der Rechenaufgabe hinzugefügt wurde

$ rake -T
rake reminder_task:Trash-Task-Thema

Wenn Sie bestätigen können, dass es hinzugefügt wurde

$ rake reminder_task:trash

OK, wenn [Nachricht] gesendet wird

Umgebungsvariablen einstellen

Wenn Sie PUSH-Nachrichten verwenden möchten, müssen Sie Umgebungsvariablen festlegen.

Unten finden Sie Umgebungsvariablen. https://qiita.com/yuichir43705457/items/7cfcae6546876086b849 https://qiita.com/noraworld/items/bfa80811c9e30b4474af

Einstellmethode

Füge dotenv zu gem hinzu

gem 'dotenv-rails'

Erstellen Sie eine ENV-Datei im Stammverzeichnis des Anwendungsverzeichnisses (Erstellt, wo es eine App oder Gemfile gibt)

Stellen Sie verschiedene LINE-Kanäle ein

/.env


LINE_CHANNEL_SECRET='xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
LINE_CHANNEL_TOKEN='yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
LINE_USER_ID='zzzzzzzzzzzzzzzzzzzzzz'

Schreiben Sie die Papierkorbaktion des Webhook-Controllers neu

app/controller/webhook_controller.rb


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)
  end

  def self.contents

      date = Date.today

      case date.strftime('%a')
        when "Mon"
            "Heute ist Montag, Burning Garbage Day!"
        when "Tue"
            "Keiner!"
        when "Wed"
            "Heute ist Mittwoch, der Tag des nicht brennbaren Mülls und der Pappe"
        when "Thu"
            "Heute ist Donnerstag, ein normaler Mülltag!"
        when "Fri"
            "Heute ist Freitag, der Tag der Dosen, Flaschen und Haustierflaschen!"
        when "Sat"
            "Müde für eine Woche! Keine heute!"
        else
            ""
        end
    end
  end

Drücken Sie zu Heroku und richten Sie einen Planer ein. Sie sollten eine Nachricht erhalten.

Schließlich

Der Service, den Sie zum ersten Mal nach dem Studium von Ruby gemacht haben? Daher scheint es viele Fehler zu geben. In diesem Fall wäre ich Ihnen dankbar, wenn Sie darauf hinweisen könnten!

(Vielen Dank für die Referenzartikel.)

Recommended Posts

Ich habe einen LINE Bot mit Rails + Heroku gemacht
[LINE BOT] Ich habe einen Ramen BOT mit Java (Maven) + Heroku + Spring Boot (1) gemacht.
Stellen Sie Line Bot mit Rails5 + Docker + Heroku Note bereit
Ich habe mit Ruby On Rails ein Portfolio erstellt
[Schienen] Getriebe mit LINE Bot schieben
Ich habe eine Entwicklungsumgebung mit Rails6 + Docker + PostgreSQL + Materialise erstellt.
Ich habe mit Ruby einen riskanten Würfel gemacht
Ich habe eine Janken App mit Kotlin gemacht
Ich habe eine Janken App mit Android gemacht
Ich habe mit JD-Core eine Befehlszeilenschnittstelle mit dem WinMerge Plugin erstellt
[Rails] Ich habe eine einfache Kalender-Mini-App mit benutzerdefinierten Spezifikationen erstellt.
04. Ich habe mit SpringBoot + Thymeleaf ein Frontend gemacht
Ich habe Mosaikkunst mit Pokemon-Bildern gemacht
[Rails] Ich habe eine Entwurfsfunktion mit enum erstellt
Machen wir einen LINE Bot mit Ruby + Sinatra - Teil 2
[Ruby] Ich habe einen Crawler mit Anemone und Nokogiri gemacht.
[Anfänger] Ich bin auf ein Projekt mit Rails6 gestoßen
Machen wir einen LINE Bot mit Ruby + Sinatra - Teil 1
Ich habe eine Chat-App erstellt.
Ich habe versucht, eine japanische Version der Automatik-Mail von Rails / devise zu erstellen
Ich möchte eine mit Rails 6 erstellte App an GitHub senden
Ich habe ein Plug-In erstellt, das Jextract mit Gradle-Aufgaben ausführt
Ich habe einen MOD erstellt, der sofort ein Fahrzeug mit Minecraft anruft
Ich bin auf einen Typen mit zwei Punkten in Rails gestoßen
Ich habe eine shopify App @java erstellt
Ich habe eine einfache Empfehlungsfunktion erstellt.
Ich habe eine passende App erstellt (Android App)
Ich habe ein Tool zur Generierung von package.xml erstellt.
[Android] Ich habe eine Schrittzähler-App erstellt.
Ich möchte mit link_to [Hinweis] eine Schaltfläche mit einem Zeilenumbruch erstellen.
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 1) erstellt.
Ich habe ein einfaches Suchformular mit Spring Boot + GitHub Search API erstellt.
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 5) erstellt:
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
Ein halbes Jahr Selbststudium unerfahren gemacht SPA mit Rails + Nuxt.js, also schauen Sie bitte
Ich habe eine Rails-Umgebung mit Docker und MySQL erstellt, aber ich war krank
[Ruby] Ich habe einen einfachen Ping-Client erstellt
[Rails6] Erstelle eine neue App mit Rails [Anfänger]
Stellen Sie Heroku mit Rails6 (Cloud9 + Ubuntu) + MySQL bereit
Mit Docker auf Heroku bereitstellen (Rails 6, MySQL)
[Schienenentnahme] Erstellen Sie eine einfache Entnahmefunktion mit Schienen
Ich habe einen Arbitrage-Transaktionsbot für virtuelle Währungen erstellt und versucht, Geld zu verdienen
Ich habe versucht, ein wenig mit BottomNavigationView zu spielen ①
Erstellen Sie trotzdem eine Anmeldefunktion mit Rails
Ich habe ein Plug-In für IntelliJ IDEA erstellt
Ich habe eine Taschenrechner-App für Android erstellt
[Rails 5] Erstelle eine neue App mit Rails [Anfänger]
Ich habe ein neues Java-Bereitstellungstool erstellt
Linienbot
Ich habe eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 2) erstellt: Modell ändern
Ich habe mit Vue.js eine Seite erstellt, die Informationen zur Zuckereinschränkung zusammenfasst
[LINE @] Ich habe versucht, einen westlichen Kalender für einen japanischen Kalender zu konvertieren. BOT [Messaging API]
Ich möchte in der Lage sein, Dateien mit refile mit administrate [rails6] zu lesen.