🖼️
Node-REDでLINEへ画像を送信する
Node-REDの「line-notify」ノードを利用すると、メッセージや画像を送信することができますが、画像は、インターネットに公開されている画像のみが送信できます。
LINEへローカルの画像を送信するには、「function」ノードと「http request」ノードを利用してできるので、その方法について説明します。
LINEの準備
LINEの準備は、以下の記事を参考にしてください。
Node-REDによるフローの作成
Node-REDで、LINEへメッセージを送信するためのフローを作成します。
Node-REDのインストール方法は、以下のページを参考にしてください。
ノードの設定
- Node-REDのワークスペースに以下のノードを追加し、図のように配置します。
- injectノード
- read fileノード
- functionノード
- http requestノード
- debugノード
- read fileノードをダブルクリックします。ファイル名に送信したいローカルの画像の絶対パスを入力して、出力形式に「バイナリバッファ」を選択します。「完了」ボタンをクリックします。
- functionノードをダブルクリックして、以下のコードを入力します。
functionノード
const img = msg.payload; // read fileノードで読み込んだバイナリデータ
msg.payload = {
"message": "メッセージと画像です。",
"imageFile": {
"value": img,
"options": {
"filename": "LINE_logo.png",
"contentType": "image/png"
}
}
};
msg.headers = {
"authorization": "Bearer [アクセストークンを貼り付ける]",
"content-type": "multipart/form-data"
};
return msg;
- 「完了」ボタンをクリックします。
- http requestノードをダブルクリックします。メソッドに「POST」を選択して、URLに「
https://notify-api.line.me/api/notify
」を入力します。「完了」ボタンをクリックします。
- 「デプロイ」ボタンをクリックします。
- 完成したフローです。
作成したフローのJSONを以下に貼っておきます。
Node-REDのメニューから「読み出し」->「クリップボード」で配置することができます。
line-notifyノードのアクセストークンは再設定してください。
[{"id":"6445471eb98eb025","type":"inject","z":"4d5dad1573c7a3cc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":240,"wires":[["c50af3ee90f641b7"]]},{"id":"c50af3ee90f641b7","type":"file in","z":"4d5dad1573c7a3cc","name":"","filename":"D:\\logo\\LINE_logo.png","format":"","chunk":false,"sendError":false,"encoding":"none","allProps":false,"x":360,"y":240,"wires":[["a97f47347ccfbddc"]]},{"id":"a97f47347ccfbddc","type":"function","z":"4d5dad1573c7a3cc","name":"","func":"const img = msg.payload;\n\nmsg.payload = {\n \"message\": \"メッセージと画像です。\",\n \"imageFile\": {\n \"value\": img,\n \"options\": {\n \"filename\": \"LINE_logo.png\",\n \"contentType\": \"image/png\"\n }\n }\n};\n\nmsg.headers = {\n \"authorization\": \"Bearer \",\n \"content-type\": \"multipart/form-data\"\n};\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":560,"y":240,"wires":[["cc7e3293cd4b2888"]]},{"id":"66ec029d2f0fb686","type":"debug","z":"4d5dad1573c7a3cc","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":910,"y":240,"wires":[]},{"id":"cc7e3293cd4b2888","type":"http request","z":"4d5dad1573c7a3cc","name":"","method":"POST","ret":"txt","paytoqs":"ignore","url":"https://notify-api.line.me/api/notify","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"credentials":{},"x":730,"y":240,"wires":[["66ec029d2f0fb686"]]}]
動作確認
injectノードの左側のボタンをクリックすると、LINEへメッセージとローカルに保存したLINEのロゴが送信されます。
Discussion