環境
- 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にリクエストを送る準備
今回はこんな感じで準備をしてみました
Rails.application.routes.draw do
root 'homes#show'
resources :notifications, only: %i[create]
end
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はいろんなアプリとコラボレートできると思うのでやっておいてよかった
参考