LINE で送ったQRコード画像をIDに変換する
背景
昔作った、LINE で薬箱の管理をするためのデバイスの制御で、
LINE で送ったQRコード画像をIDに変換することがあったのでメモしておく。
デバイスそのものの詳細はこちら。
https://protopedia.net/prototype/c164bbc9d6c72a52c599bbb43d8db8e1
デバイスの紹介動画はこちら(2:00 あたりから)
https://www.youtube.com/watch?v=Ld_jOXHXZXg
この制御では、薬箱のIDをQRコード化しておき、
薬箱に張り付けられたQRコードを撮影してLINE でbot に送信すると、
bot を制御するサーバでLINEユーザと薬箱のIDとを関連付ける。
薬箱を開けると、関連付けられたLINEユーザに通知が飛び、
薬箱がいつ開けられた≒薬が飲まれたのかを記録し、
薬の管理ができるというもの。
前提条件
- LINE Messaging API を登録していること
- webhook のURL も設定していること
- アクセストークンを発行して取得しておくこと
- NodeRed 環境を構築済みであること
- 公開されているNodeRed のノードの一つであるnode-red-contrib-qrdecode(以下qrdecodeノード) を使うので、Nodered でインストールしておくこと
やること
http in ノードを設置し、LINE API からのリクエストを受信する
- webhook のURL も設定していること
- アクセストークンを発行して取得しておくこと
http in ノードを設置し、LINE API からのリクエストを受信する
webhook のURL をここで設定しておく。
LINE API からのリクエストがmsg.payload に入ってくる。
画像をリクエストする
- Javascript を実行する
- LINE API からのリクエストからユーザIDとメッセージIDを取得する
- メッセージIDから画像を取得するためのリクエスト用のURLを生成する
- アクセストークンからURLリクエスト時のヘッダを生成する
- ユーザIDから画像を保存するパスを生成する
- http request を発行する(http request ノードを配置)
- メソッドはGET
- 出力形式は「バイナリバッファ」
- ファイルに画像を保存する(file ノードを配置)
- ノードのプロパティではファイル名を指定しない
Javascript のコードはこちら。
// 1. LINE API からのリクエストからユーザIDとメッセージIDを取得する
var event = msg.payload;
// まず、イベント種別がmessage のもので、メッセージ種別がimage かどうかを判定する。
if(event.type == "message" && event.message.type == "image") {
// 2. メッセージIDから画像を取得するためのリクエスト用のURLを生成する
msg.url = "https://api.line.me/v2/bot/message/"+ event.message.id + "/content";
// 3. アクセストークンからURLリクエスト時のヘッダを生成する
msg.headers = {
"Authorization" : "Bearer " + "####", // ここにアクセストークンを入れる
"Content-Type": "application/jpeg",
};
// 4. ユーザIDから画像を保存するパスを生成する
// LINE で送信された画像を一時的に保存しておくファイル名。特定のディレクトリでファイル名をユーザIDとしておく。
// 一連の処理が終わったら消しておく
msg.filename = "/home/hogehoge/storage/" + event.source.userId + ".jpg";
return msg;
}
QR コードをデコードする
- Javascript を事項する
- msg.payload にデコードする画像へのパスを代入する
- qrdecode ノードを実行する
- デコード結果を取得する
- msg.payload にデコード結果が入っている
- msg.payload にデコードする画像へのパスを代入する
- msg.payload にデコード結果が入っている
Javascript のコードはこちら。
msg.payload = msg.filename;
return msg;
Author And Source
この問題について(LINE で送ったQRコード画像をIDに変換する), 我々は、より多くの情報をここで見つけました https://qiita.com/azarashin/items/f795afbbc24b041dab9a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .