node.jsでLINE Notifyを使ってみた


概要

webサービスやバッチ処理を作っていると、何かアクションがあった事をすぐに気づきたいと思うことがあるかと思います。
この通知がよく使うアプリに送られて来たら気づきやすいですよね!?

よく使うアプリは人それぞれかと思いますが、LINEは多くの人が利用しているかと思います。
そして、LINEでは個人で簡単に通知を投げられる機能 LINE Notify を提供しています。

ここでは、LINE Notifyのパーソナルアクセストークンでの通知をnode.jsを用いて行うまでの軌跡をまとめています。

ざっと全体の流れ

手順はざっと以下な感じ。

  1. LINE) パーソナルアクセストークンを取得
  2. 開発) アクセストークンを使ってrequestを投げる
  3. LINE) 通知が届いた事を確認

とても簡単!

手順

1. パーソナルアクセストークンを取得

LINEアカウントを持っていれば簡単に作れます。

1-1. LINE Notifyページへ遷移

以下URLよりLINE Notifyのページへ遷移しましょう。
https://notify-bot.line.me/ja/

1-2. LINE ログイン

LINEにログインします。
メアドやパスワード登録がされている必要があります。
また、LINEアプリでPCでのログインを許可していないと弾かれるので、事前に外しておきましょう。

1-3. マイページに遷移

右上のアカウントメニューよりマイページに遷移。

1-4. アクセストークンの発行

マイページにある「アクセストークンの発行(開発者向け)」より、「トークンを発行」をクリックし、
トークン名や通知したい先を選択して発行!

1-5. アクセストークンをメモ

発行するとアクセストークンが表示されます。
このトークンは再発行されないので、確実にメモリましょう。
また、このトークンが流出すると、第三者が投稿し放題なので取り扱い要注意。


ここまででLINE Notifyの準備は完了です!

2. アクセストークンを使ってrequestを投げる

取得したTokenを利用して通知してみます。
ざっくり言うと、POSTでトークンをheaderに添えてメッセージ投げれば投げれます。簡単!

詳しいリクエスト方法は公式ドキュメントをみていただけたらと思います。
LINE Notify API Document
("通知系"項目が本記事で利用しているパーソナルアクセストークンでの通知です)

node.jsだとこんな感じで投げられるかと思います。
(requestモジュールがinstallされている前提)

app.js
const request = require('request');

const message = `これは
テスト
ですよ`;

sendRequest(message);

/**
 * LINE Notifyへ送信依頼
 * @param {Object} message - 送信メッセージ
 */
function sendRequest (message) {
  const options = {
    uri: 'https://notify-api.line.me/api/notify',
    headers: {
      // TOKENを誤ってgitに上げてしまわないように、環境変数から取得するようにした
      'Authorization': `Bearer ${process.env.LINE_TOKEN}`
    },
    form: {
      message
    }
  };

  request.post(options, (error, response, body) => {
    if (error) {
      console.error(error);
      return;
    }

    console.log(body);
  });
}

実行

$ LINE_TOKEN=<取得したTOKEN> node app.js
{"status":200,"message":"ok"}

LINEの通知先にLINE Notifyさんが通知してきたら成功です。
(どのTOKENから通知されたかは、メッセージの先頭にテキストでTOKEN名が書かれています)

終わりに

利用準備も簡単で、実装もシンプルなのですぐに通知を実装したい時とか便利なのではないでしょうか?
ただし、1時間に叩けるAPIの上限はトークンごとに1000回までらしいのでご注意ください。
(1000回/時 LINE API叩く仕様見直したほうが良さそうですががが)