[RUBY] J'ai créé un robot LINE avec Rails + heroku

Ce que j'ai fait

J'ai pensé que ce serait pratique s'il y avait un BOT qui m'informerait de l'enlèvement des ordures chaque matin. Je l'ai fait après mes études.

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

Langue utilisée

Ruby Ruby On Rails6 Heroku LINE Messager API

ÉTAPE 1 Créez un LINE BOT qui renvoie un message

Je vais omettre cela parce que d'autres personnes l'ont publié en détail.

Article de référence

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

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

Message PUSH ÉTAPE 2

Ajoutez une tâche et envoyez un message à une heure fixe.

Créer une tâche

$rails g task reminder_task

Puis générez un contrôleur

$rails g controller webhook trash

décrire la description et la tâche

lib/tasks/reminder_task.rake


namespace :reminder_task do
  desc "Le sujet de la tâche ici"
  task :trash => :environment do
    webhook = WebhookController.new
    puts webhook.trash
  end
end

Ensuite, définissez l'action du contrôleur de webhook

app/controllers/webhook_controller.rb


  def trash
    puts "message"
  end

Vérifiez s'il est ajouté à la tâche de râteau ici

$ rake -T
rake reminder_task:thème de la tâche corbeille

Si vous pouvez confirmer qu'il a été ajouté

$ rake reminder_task:trash

OK lorsque [Message] est envoyé

Définition des variables d'environnement

Si vous souhaitez utiliser des messages PUSH, vous devez définir des variables d'environnement.

Voir ci-dessous pour les variables d'environnement. https://qiita.com/yuichir43705457/items/7cfcae6546876086b849 https://qiita.com/noraworld/items/bfa80811c9e30b4474af

Méthode de réglage

Ajouter dotenv à la gemme

gem 'dotenv-rails'

Créer un fichier .env dans le répertoire racine du répertoire de l'application (Créé là où il y a une application ou un gemfile)

Définir divers canaux LINE

/.env


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

Réécrire l'action de corbeille du contrôleur de webhook

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"
            "Aujourd'hui, c'est lundi, jour des déchets brûlants!"
        when "Tue"
            "Aucun!"
        when "Wed"
            "Aujourd'hui, c'est mercredi, jour des ordures et du carton incombustibles"
        when "Thu"
            "Aujourd'hui, c'est jeudi, un jour normal des ordures!"
        when "Fri"
            "Aujourd'hui, c'est vendredi, jour des canettes, des bouteilles et des bouteilles en PET!"
        when "Sat"
            "Fatigué depuis une semaine! Aucun aujourd'hui!"
        else
            ""
        end
    end
  end

Poussez sur Heroku et configurez un planificateur et vous devriez recevoir un message.

finalement

Le service que vous avez fait pour la première fois après avoir étudié le rubis? Par conséquent, il semble qu'il y ait de nombreuses erreurs. Dans ce cas, je vous serais reconnaissant de bien vouloir le signaler!

(Merci pour les articles de référence.)

Recommended Posts

J'ai créé un robot LINE avec Rails + heroku
[LINE BOT] J'ai créé un Ramen BOT avec Java (Maven) + Heroku + Spring Boot (1)
Déployer le bot Line avec rails5 + Docker + Heroku Note
J'ai fait un portfolio avec Ruby On Rails
[Rails] Transmission push avec LINE Bot
J'ai créé un environnement de développement avec rails6 + docker + postgreSQL + Materialise.
J'ai fait une mort risquée avec Ruby
J'ai créé une application Janken avec kotlin
J'ai créé une application Janken avec Android
J'ai créé une interface de ligne de commande avec WinMerge Plugin en utilisant JD-Core
[Rails] J'ai créé une mini-application de calendrier simple avec des spécifications personnalisées.
04. J'ai fait un frontal avec SpringBoot + Thymeleaf
J'ai fait de l'art de la mosaïque avec des images Pokemon
[Rails] J'ai créé une fonction de brouillon en utilisant enum
Faisons un Bot LINE avec Ruby + Sinatra - Partie 2
[Ruby] J'ai fait un robot avec de l'anémone et du nokogiri.
[Débutant] Je suis tombé sur le lancement d'un projet avec Rails6
Faisons un Bot LINE avec Ruby + Sinatra - Partie 1
J'ai créé une application de chat.
J'ai essayé de faire une version japonaise de la transmission automatique du courrier de Rails / devise
Je veux pousser une application créée avec Rails 6 vers GitHub
J'ai créé un plug-in qui exécute jextract avec des tâches Gradle
J'ai créé un MOD qui appelle instantanément un véhicule avec Minecraft
Je suis tombé sur un gars avec deux points dans les rails
J'ai créé une application shopify @java
J'ai fait une simple fonction de recommandation.
J'ai créé une application correspondante (application Android)
J'ai créé un outil de génération package.xml.
[Android] J'ai créé une application de podomètre.
Je veux créer un bouton avec un saut de ligne avec link_to [Note]
Je souhaite ajouter une fonction de navigation avec ruby on rails
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 1)
J'ai créé un formulaire de recherche simple avec Spring Boot + GitHub Search API.
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 5):
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
Une demi-année d'auto-apprentissage fait du SPA avec Rails + Nuxt.js, alors jetez un œil
J'ai construit un environnement de rails avec docker et mysql, mais j'étais malade
[Ruby] J'ai créé un simple client Ping
[Rails6] Créer une nouvelle application avec Rails [Débutant]
Déployez heroku avec Rails6 (Cloud9 + Ubuntu) + MySQL
Déployer sur heroku avec Docker (Rails 6, MySQL)
[Retrait des rails] Créez une fonction de retrait simple avec des rails
J'ai créé un bot de transaction d'arbitrage de monnaie virtuelle et essayé de gagner de l'argent
J'ai essayé de jouer un peu avec BottomNavigationView ①
Créez quand même une fonction de connexion avec Rails
J'ai créé un plug-in pour IntelliJ IDEA
J'ai créé une application de calculatrice sur Android
[Rails 5] Créer une nouvelle application avec Rails [Débutant]
J'ai créé un nouvel outil de déploiement Java
bot de ligne
J'ai créé une fonction de réponse pour l'extension Rails Tutorial (Partie 2): Changer de modèle
J'ai créé un site qui résume les informations sur la restriction du sucre avec Vue.js
[LINE @] J'ai essayé de créer un BOT de conversion de calendrier occidental de calendrier japonais [API de messagerie]
Je souhaite pouvoir lire des fichiers en utilisant refile avec administrate [rails6]