[RUBY] [Rails] Créez un bot d'écho à l'aide de l'API de messagerie LINE.

Aperçu

Nous avons développé LINE Bot pour apprendre l'API Web. Cette fois, nous allons créer un echoBot qui renvoie un simple texte envoyé tel quel. Développez avec Rails et déployez même sur Heroku.

environnement

・ Rubis 2.6.5 ・ Rails 6.0.3.2 ・ PostgreSQL ・ Heroku

table des matières

・ Créez une chaîne avec les développeurs LINE ・ Créez un programme pour le Bot lui-même (Ruby / Rails) ・ Déployer sur Heroku

Créer une chaîne avec les développeurs LINE

Tout d'abord, inscrivez-vous en tant que développeur LINE. Créez ensuite un fournisseur et un canal pour obtenir la clé API requise. https://developers.line.biz/ja/docs/messaging-api/getting-started/

Créez un canal pour Bot en vous référant à la formule (ci-dessus). Si vous énumérez brièvement le travail,

・ Connectez-vous à la console LINE Developers ・ Entrez votre nom et votre adresse e-mail pour créer un compte développeur -Créer un fournisseur et un canal, spécifier l'API de messagerie à ce moment ・ Émettre un jeton d'accès ・ Désactivez les messages de réponse et activez Webhock

Un secret de chaîne et un jeton d'accès à la chaîne sont nécessaires pour le développement du bot, alors notez-le ici!

Créer un programme pour le Bot lui-même (Ruby / Rails)

La base de données utilise PostgreSQL car elle sera déployée sur Heroku.

$rail le nouveau nom de l'application-d postgresql
$nom de l'application cd
$ git init

Installez les gemmes requises

Utilisez une gemme appelée line-bot-api.

Gemfile


gem 'line-bot-api'
$ bundule install

la mise en oeuvre

1. Paramètres de routage

config/routes.rb



Rails.application.routes.draw do  
    post '/callback' => 'linebot#callback'  
end

2. Créez un contrôleur

$ rails g controller linebot

3. Description au contrôleur

La description du contrôleur a été (copiée) en référence à RUBY de la ligne officielle SDK. https://github.com/line/line-bot-sdk-ruby/blob/master/examples/echobot/app.rb

python


class LinebotController < ApplicationController
 require 'line/bot'  # gem 'line-bot-api'

def client
  @client ||= Line::Bot::Client.new { |config|
    config.channel_secret = ENV["LINE_CHANNEL_SECRET"]
    config.channel_token = ENV["LINE_CHANNEL_TOKEN"]
  }
end

post '/callback' do
  body = request.body.read

  signature = request.env['HTTP_X_LINE_SIGNATURE']
  unless client.validate_signature(body, signature)
    halt 400, {'Content-Type' => 'text/plain'}, 'Bad Request'
  end

  events = client.parse_events_from(body)

  events.each do |event|
    case event
    when Line::Bot::Event::Message
      case event.type
      when Line::Bot::Event::MessageType::Text
        message = {
          type: 'text',
          text: event.message['text']
        }
        client.reply_message(event['replyToken'], message)
      end
    end
  end

  "OK"
 end
end

Déployer sur Heroku

Tout d'abord, connectez-vous à Heroku, créez une application sur Heroku et déployez-la.

Définissez les variables d'environnement du côté Heroku.

$ heroku config:set LINE_CHANNEL_SECRET=Collez le secret de chaîne que vous avez noté plus tôt ici
$ heroku config:set LINE_CHANNEL_TOKEN=Collez le jeton d'accès que vous avez noté précédemment ici

Définir les paramètres du Webhook avec les développeurs LINE

Définissez le webhook sur l'URL avec / callback à la fin de l'adresse déployée. image.png

Ceci termine l'écho-bot. L'envoi du texte renverra le même texte.

Résumé

Actuellement, après avoir changé le code, il ne sera pas reflété sauf s'il est déployé, donc La prochaine fois, j'utiliserai ngrok pour l'exécuter dans un environnement local. https://qiita.com/shizu9d/items/42b2cb209b2e23a9af6d

Les références

J'ai fait référence à l'article suivant. https://qiita.com/noriya1217/items/00d6461e9f54900377a3

Recommended Posts

[Rails] Créez un bot d'écho à l'aide de l'API de messagerie LINE.
Nuxt.js × Créer une application en mode API Rails
Créer une application en spécifiant la version de Rails
[Rails] Créer une application
L'histoire de la création de Dr.Orchid avec LINE BOT
Ajouter une icône au lien d'en-tête en utilisant Rails fontawesome
Un moyen simple de créer une classe de mappage lors de l'utilisation de l'API
[Rails] Transmission push avec LINE Bot
[Parse] Hit l'API en utilisant callFunctionInBackground
[Rails 6] Développement d'API à l'aide de GraphQL (Query)
Créez une alternative à l'API Stream facile à étendre
Essayez d'utiliser le système de messagerie Pulsar
[Rails 6] détruit en utilisant la méthode des ressources
Essayez d'utiliser l'API Stream en Java
Construction de l'environnement du serveur API Rails à l'aide de docker-compose
Créer un service d'API RESTful à l'aide de Grape
Essayez d'utiliser l'API Emotion d'Android
[LINE @] J'ai essayé de créer un BOT de conversion de calendrier occidental de calendrier japonais [API de messagerie]