LoginSignup
12
3

Node-RED で functionノードや専用ノードを使わず LINE Notify を利用する(changeノードを利用、Sticker送信も試す)

Last updated at Posted at 2022-04-10

Node-RED で LINE Notify を利用する話ですが、よく見かける functionノードや専用ノードを使った方法ではなく、changeノードを利用したやり方の話です。

LINE Notify を使う

LINE Notify は、LINEアプリにお手軽に通知を送ることができる仕組みです。この仕組みを使うためには、アクセストークンの発行という手順をふむ必要があります。

LINE Notify のアクセストークンを取得する

以下の記事などを参考にして、LINE Notify のアクセストークンを取得してください。

curl を用いた LINE Notify の動作確認

先ほど取得したアクセストークンと curl を使って、LINE Notify を試してみます(説明などは以下の記事を参照ください。)。

●コマンドラインから LINE にメッセージを送れる LINE Notify
 https://engineering.linecorp.com/ja/blog/using-line-notify-to-send-messages-to-line-from-the-command-line/

まずは、シンプルなメッセージの送信を行います。以下を実行してメッセージが送られることを確認してください。

curl -X POST -H "Authorization: Bearer 【アクセストークン】" -F "message=メッセージのテスト" https://notify-api.line.me/api/notify

上記の「【アクセストークン】」の部分にはご自身のアクセストークンを設定いただき、上記の「メッセージのテスト」と書いている部分は、適宜変更して利用してみてください。

また、以下の公式の情報に書かれている「LINE Notify の Sticker送信」というものもあるので、こちらも使ってみます。

実行するコマンドはこのようになります。

curl -X POST -H "Authorization: Bearer 【アクセストークン】" -F "message=メッセージのテスト" https://notify-api.line.me/api/notify -F 'stickerPackageId=8515' -F 'stickerId=16581242'

今度はメッセージと Sticker がセットで送信されました。

Node-REDのフローを作って実行する

LINE Notify の動作確認がうまくいったところで、Node-RED のフローの準備を進めていきます。

簡単なテキスト送信を試す

まずは、お試しの 1つ目で行ったテキスト送信をやってみます。
作成したフローは以下のとおりです。
作成したフロー.jpg

このフローでは、以下のノードを組み合わせています。

  1. injectノード
  2. changeノード
  3. http requestノード
  4. debugノード

この中で設定を変更したのは「injectノード」、「changeノード」と「http requestノード」の 3つで、具体的には、以下の内容が POST されるような設定にします。

  • メソッド: 「POST」
  • URL: 「https://notify-api.line.me/api/notify」
  • リクエストの HTTPヘッダ
    • Authorization: 「Bearer 【アクセストークン】」
    • Content-Type: 「application/x-www-form-urlencoded」
  • リクエストボディ
    • message: 「【送信するテキスト】」

http requestノードの設定

先に http requestノードの設定を行います。設定を変える部分は、以下の 2箇所です。
http_requestノードの設定.jpg

あとは、この http requestノードでの POST時にヘッダ等が設定された状態にする方法を、ヘルプを見て確認します。headers と payload を用いれば良さそうです。
http requestノードの入力について.jpg

changeノードの設定

上記の HTTPリクエストの HTTPヘッダを設定するため、changeノードを用います。
具体的な設定は、以下のとおりです。
changeノードの設定.jpg

値の代入を 2つセットしており、そこで以下を設定しています。

  • msg. 「headers.Content-Type」 に 文字列「application/x-www-form-urlencoded」を代入
  • msg. 「headers.Authorization」 に 文字列「Bearer 【アクセストークン】」を代入

本当は、アクセストークンは環境変数経由で取得するような形にするべきかな、と思いますが、とりあえずの動作確認ということで上記でやってみます。

injectノードの設定

残る設定は、injectノードでリクエストボディを作成する部分です。
injectノードの設定.jpg

上記の画像では、設定内容の一部が隠れていますが、以下を設定しています。

  • msg. 「payload.message」 に 文字列「メッセージのテスト」を代入

動作確認

あとは、フローをデプロイして実行してみましょう。自分の場合は、以下のメッセージが送信されたことを確認できました。
Node-REDからLINE Notifyを利用

Node-RED で Sticker送信を使ってみる

curl によるお試しで用いた、LINE Notify での Sticker送信もやってみます。
上記のフローの中で、以下のように changeノードの設定を少し足してやります。
Sticker送信を利用

  • 追加した設定(値の代入を 2つ)
    • msg. 「payload.stickerPackageId」 に 文字列「8515」を代入
    • msg. 「payload.stickerId」 に 文字列「16581242」を代入

再度、フローをデプロイして実行すると、以下のメッセージが送られたことを確認できました。
Sticker送信の利用.jpg

12
3
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
12
3