14
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【2021年】はじめてのLINE Notify、IoTデバイスから通知を送ってみる with obniz

Last updated at Posted at 2021-10-18

こんにちは、もっちゃんと申します。

LINEのAPIといえばMessaging API(LINE Botを作る時に使う)のイメージが強いですが、LINEを活用した通知の機能を導入するにあたってシンプルな仕組みのLINE Notifyというプロダクトがあります。
そこで今回はこのLINE Notifyがどういうもので、どう使うのかを改めて見ていこうと思います。

LINE Notifyとは

image.png

Webサービス、アプリケーション、IoTデバイスなどから、LINEが提供する公式アカウント"LINE Notify"に通知を届けます。
複数のサービスと連携でき、グループでも通知を受信することが可能です。

ちなみに、テキスト以外のメッセージを送ることも可能です。現在対応しているメッセージの形式は下記です。

対応しているメッセージ形式をAPIリファレンスから抜粋
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/121860/0ee2904c-1990-3b7e-3676-3d42dead16df.png)
  • テキスト
  • 画像
  • ステッカー

また、下記のサービスと連携していることを公式サイトで謳っています。

image.png

LINE Notifyの仕様

LINE Notifyは使い方が非常にシンプルになっています。OAuth2に準拠する形で認可してアクセストークンを取得し、HTTPSのNotify APIを実行して通知を行う流れです。
LINE Notifyの管理画面で、LINE Notifyと連携させたい自身のサービスの登録を行い、OAuth2の認可の手順を実装し、NotifyのAPIにアクセストークンを渡して通知を実行します。

image.png

image.png

しかし、OAuth2の認可の手順を実装するのも面倒だという開発者のために、LINE Notifyではさらにパーソナルアクセストークンを発行する機能まで管理画面に設けています。
これでより簡単にLINE Notifyを使えるので、下記以降で使い方を見ていきましょう!

LINE Notifyの使い方

STEP1: LINE Notify公式アカウントと友達になる

まずは公式サイトに記載されているQR Codeをスマホで読んでLINE Notifyの公式アカウントとお友達になります。(大前提としてLINEアプリはインストールしておいてください)

image.png

STEP2: 管理画面からパーソナルアクセストークンを取得する

マイページからアクセストークンを発行するボタンがあるのでポチッと押して、

image.png

image.png

すると下記のようにトークンを発行するのに必要な情報入力などが求められるので、案内通りに進めます。(ちなみに通知先にグループも選べます)

image.png

最後にパーソナルアクセストークンが表示されるので忘れずにメモしておきましょう。(ここでトークンをメモし忘れると二度と表示されません、忘れた場合はトークンを新規で発行しなおしですね)

image.png

STEP3: Notify APIを実行する

アクセストークンが手に入ったのでさっそく通知を試してみましょう。
公式ドキュメントに記載されているサンプルのコマンドを実行します。

サンプル

## 下記<access_token>の部分を先ほど取得したパーソナルアクセストークンに置き換えます
$ curl -X POST -H 'Authorization: Bearer <access_token>' -F 'message=foobar' \
https://notify-api.line.me/api/notify
{"status":200,"message":"ok"}

シェルを実行するだけで簡単に通知が実現できました❗️

image.png

obnizでもやってみた

とりあえずobnizの左上のボタンを押したら、通知が飛ぶようにしてみます!(obnizの詳細な使い方については公式サイトなどをご覧ください!)

image.png

コードは下記です。(そんなに良いコードでは無いので参考まで!)

ココを展開するとコードが見れます
  • app.js
const Obniz = require("obniz");
const request = require('request');

const LINE_NOTIFY_URL = "https://notify-api.line.me/api/notify";
const TOKEN = <access_token>;

const OBNIZ_ID = <obniz ID>

const MESSAGE = "obnizの左上ボタンが押されたやで!";

const HEADERS = {
  "Content-Type": "application/x-www-form-urlencoded",
  "Authorization": "Bearer " + TOKEN
};

const OPTIONS = {
    url: LINE_NOTIFY_URL,
    method: "POST",
    headers: HEADERS,
    json: true,
    form: {
      message: MESSAGE,
      stickerPackageId: 11537,
      stickerId: 52002735
    }
  }

const obniz = new Obniz(OBNIZ_ID);
obniz.onconnect = async function () {
    // called while online.
    obniz.onloop = async function() {
        // Javascript Example
        var state = await obniz.switch.getWait();
        if (state === "push") {
            console.log("pressed");
            await request(OPTIONS, async(error, response, body) => {
                console.log(body);
                if(error){
                  console.log(error);
                }
            });
        }
    }
}
  • package.json
{
  "name": "my-obniz",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "obniz": "^3.17.0",
    "request": "^2.88.2"
  }
}

あとはnodeを起動して、obnizの左上ボタンを押してみます!...
(ちなみにコード書いたりnode実行したりを全てGitHub Codespacesで行っています!nodeもデフォルトで入ってるし色々楽すぎますw)

image.png

**キタ━━━(゚∀゚)━━━!!**🎉🎉🎉

image.png

まとめ

LINE Notifyがめちゃくちゃ簡単に使えることがお分かりいただけたと思います。
また、obnizもドキュメントや開発者用の管理画面など充実しており、IoTでの開発をとっても楽にしてくれますね!

皆さまも是非1度ためしてみてください〜

参考

14
7
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
14
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?