3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rails LINE Messaging APIを触ってみた

3
Posted at

背景

  • LINEに通知飛ばす〜みたいな機能を実装することになったが、LINE Messaging APIを触ったことがなかったので一旦雑に作ってみた
  • その時のメモ

作成したもの

LINE Messaging APIを使用した、簡単な通知アプリ

使い方

  • Rails側で表示されているボタンを押す
  • 指定した公式アカウントが呟く

作成手順

Messaging APIの準備

LINEビジネスIDに登録する

前提としてLINE Messaging APIを利用するには、公式アカウントが必要
ここではフォームを作成して公式アカウントを作成するところまで行います

作成した公式アカウントのMessaging APIの利用を有効化する

公式アカウントが作成された次は、そのアカウントでMessaging APIの利用を許可する必要がある

Developersコンソールにログイン、チャネルを確認する

チャネルとは、LINEプラットフォームが提供する機能を利用するための通信路のこと

今回は、Messaging APIの利用を許可した公式アカウントのチャネルが確認できるはずです

チャネルアクセストークンの発行

チャネルを選択して、ログインしたらチャネルアクセストークンを発行してください

チャネルアクセストークンとは、Messaging APIを呼び出すときに使用するアクセストークンのことを指します、これがないとAPI通信が行えません

チャネルシークレットの確認

チャネルアクセストークン同様に、チャネルシークレットの確認を行います
アプリからアクセスする際の秘密鍵です

チャネルシークレット、チャネルアクセストークンをRails側で管理

Rails側でチャネルシークレット、チャネルアクセストークンを保存しておきます
今回はcredentialsを使用します

$ EDITOR="vi" bin/rails credentials:edit
line:
  channel_secret: チャネルシークレット
  channel_token: チャネルアクセストークン

Webhook URLを設定する

Webhook URLを設定します

httpだとWebhookを設定することができないのでngrokなどを使用してhttpsのURLを生成して設定します

公式アカウントを友達追加、テスト用のグループに入れる

ここで作成した公式アカウントを自分のアカウントで友達追加して、テスト用(なんでも良いですが)グループに招待をしておきます

Rails側の処理をする

line-bot-api gemをインストール

gem 'line-bot-api'

Rails側でMessaging APIにリクエストを送る準備

今回はこんな感じで準備をしてみました

routes.rb
Rails.application.routes.draw do
  root 'homes#show'
  resources :notifications, only: %i[create]
end
notifications_controller.rb
class NotificationsController < ApplicationController
  def create
    client = Line::Bot::Client.new do |config|
      config.channel_secret = Rails.application.credentials.dig(:line, :channel_secret)
      config.channel_token  = Rails.application.credentials.dig(:line, :channel_token)
    end

    client.push_message('※グループID',
        {
            "type": "text",
            "text": "通知だよ"
        })

    redirect_to root_path, notice: '通知を送信しました'
  end
end
<% #homes/show.html.erb %>
<h1>通知アプリ</h1>

<%= form_with url: notifications_path do |form| %>
  <%= form.text_field :name, class: "item-text-field" %>
  <%= form.submit "通知を送る", class: "submit-btn" %>
<% end %>

グループIDはどこで入手するのか?

ローカルのサーバーとngrokでhttpsのサーバーを構築した後で、公式LINEを追加したグループ内で実際にメッセージを飛ばしてみてください。

そうすると下記のようなレスポンスが帰ってくると思います

"source": {
  "groupId": "group_id",
  "type": "group"
},

こいつを※グループIDに指定してあげる感じです

感想

  • そもそもLINEにgroup_idがあるんだと思いました
  • LINEはいろんなアプリとコラボレートできると思うのでやっておいてよかった

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?