1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Line Messaging APIで簡単なグループへの通知アプリを雑に作ってみた

Last updated at Posted at 2025-01-12

環境

  • Rails8
  • Ruby 3.3.6

読んで欲しい人

  • 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:
  line_channel_secret: チャネルシークレット
  line_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.push_message('※グループID', 
        {
            "type":"text",
            "text":"通知だよ"
        })
  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のサーバーを構築した後で、公式ラインを追加したグループ内で実際にメッセージを飛ばしてみてください。

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

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

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

感想

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

参考

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?