この記事は、「LINEDC Advent Calendar 2024」の 19日目の記事です。
はじめに
この記事では、LINEDC Advent Calendar 2024 の 13日目の記事に登場した @miso_develop さん作のライブラリ「LINE Bot Notify」を使ってみます。
●LINE BotにサクッとPush通知するだけのライブラリ「LINE Bot Notify」 - Qiita
https://qiita.com/miso_develop/items/b13bd0bbf8fc04912f64
リポジトリは、以下になるようです。
●miso-develop/linebot-notify: A library for easily sending push notifications to LINE Bot
https://github.com/miso-develop/linebot-notify
仕様などの確認
上記の記事に書かれたサンプルや仕様は、以下となっています。
サンプル
import { LineBotNotify } from "linebot-notify"
const channelAccessToken = "<Channel Access Token>"
const notify = new LineBotNotify({ channelAccessToken })
const main = async () => {
const remainingQuota = await notify.push("LINE Bot Notify!")
console.log(remainingQuota)
}
main()
仕様
こだわりポイント
このライブラリのこだわりポイントは以下になるようです。
サクッと試す
それでは実際に試します。
仕様について、「トークン発行までの手軽さを重要視し、チャネルアクセストークンを発行せずともチャネルIDとシークレットだけでも使えるようにしました」という話があります
これについて、今回はチャネルアクセストークンのほうを試してみました。
※ チャネルアクセストークンの発行までを個人的に試したかったため
【追記】チャネルID とシークレットの組み合わせを使う方も試したので、記事に追記しています
LINE Messaging API を使うための下準備
詳細は省略しますが、LINE公式アカウントを作成したりして、Messaging API を利用できる環境を作ります。
●Messaging APIを始めよう | LINE Developers
https://developers.line.biz/ja/docs/messaging-api/getting-started/#create-oa
手順は ↓こちらも参照しました。
●LINE Notifyの代替方法として、LINE Messaging APIを利用して、LINEグループに送る。 - Qiita
https://qiita.com/MikH/items/d9876b6e50f7c8510d0b
「Channel ID」「Channel secret」の発行
「LINE Official Account Manager」から、とりあえず「Channel ID」「Channel secret」を発行しました。
この時点で、既に「LINE Bot Notify」を使った通知が行える情報はそろっているようです。
チャネルアクセストークンの発行
個人的に、チャネルアクセストークンの発行までを試して進めてみたかったので、その後、「LINE Developersコンソール」からチャネルアクセストークンも発行しました。
LINEアプリに登録
この後に進む前に、プッシュ通知先の準備をしました。
QRコードを使って LINEアプリへの登録を行い、準備完了です。
簡単なテスト
準備は整ったので、簡単なテストをやってみます。
Node.js で npm i linebot-notify
などというコマンドで、パッケージを準備します。
コードは、上で掲載していたサンプルを用います。その中の「<Channel Access Token>
」の部分は、先ほど自分で準備したチャネルアクセストークンに置きかえます(環境変数を使うほうが良いところですが、今回は環境変数は使わず)。
以下、再掲です。
import が使われていますが、それに簡易に対応するためにファイルの拡張子を mjs にしました(もちろん、他の対応方法でも可)。
import { LineBotNotify } from "linebot-notify"
const channelAccessToken = "<Channel Access Token>"
const notify = new LineBotNotify({ channelAccessToken })
const main = async () => {
const remainingQuota = await notify.push("LINE Bot Notify!")
console.log(remainingQuota)
}
main()
そして上記を実行した結果、LINEアプリへプッシュでメッセージが送られたのが確認できました。さらに、プッシュするメッセージを書きかえて、2回目の送信もやってみました。
以下は、2回のプッシュを行った後の LINEアプリの画面です。
2回分のメッセージが届いたのが確認できました。
【追記】チャネルID とシークレットの組み合わせも試す
こだわりに書かれていた「チャネルID とシークレットの組み合わせ」のほうも、試してみたので追記します。
使い方は GitHub のリポジトリに書かれている以下となるようです。
先ほどのコードの以下の部分を書きかえます。
const channelAccessToken = "<Channel Access Token>"
const notify = new LineBotNotify({ channelAccessToken })
書き換え後は以下です。
「<Channel ID>
」と「<Channel secret>
」は、ご自身のものに置きかえてください。
const channelId = "<Channel ID>";
const channelSecret = "<Channel secret>";
const notify = new LineBotNotify({ channelId, channelSecret });
※「オブジェクトリテラルのプロパティ名省略記法」が使われているので、上記の { channelId, channelSecret }
の ID・シークレットを格納する変数は、スペルを同じにしてください
⇒ { channelId, channelSecret }
が { channelId: channelId, channelSecret: channelSecret }
の意味となる省略記法
あと、送るテキストを「"Channel ID・Channel secretでプッシュ!"」という内容にして実行してみました。そうすると、以下のように通知が行われたのが確認できました。
おわりに
今回、「LINE Bot Notify」を使うことで、簡単にプッシュ通知を行うことができました。