LINE에서 보낸 QR 코드 이미지를 ID로 변환

배경



예전에 만든 LINE에서 약물 상자 관리를위한 장치 제어로,
LINE에서 보낸 QR 코드 이미지를 ID로 변환하는 경우가 있으므로 메모해 둡니다.

디바이스 그 자체의 자세한 것은 이쪽.
h tps : // p 여과 ぢ 아. 네 t / p 여과 type / c164 bc9d6c72 a 52c599 b43d8db8 1

기기 소개 동영상은 여기 (2:00 당부터)
htps //w w. 요츠베. 이 m/와 tch? v=Ld_조 XHXZXg

이 제어에서는 약 상자의 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을 여기에 설정하십시오.
    LINE API의 요청이 msg.payload에 들어옵니다.

    이미지 요청


  • Javascript 실행
  • LINE API의 요청에서 사용자 ID와 메시지 ID 얻기
  • 메시지 ID에서 이미지를 검색하기위한 요청에 대한 URL 생성
  • 액세스 토큰에서 URL 요청시 헤더 생성
  • 사용자 ID에서 이미지를 저장하는 경로 생성

  • http request 발행 (http request 노드 배치)
  • 메서드는 GET
  • 출력 형식은 "바이너리 버퍼"

  • 파일에 이미지 저장 (파일 노드 배치)
  • 노드 속성에 파일 이름을 지정하지 않음




  • 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 코드 디코딩


  • 자바 스크립트 문제
  • msg.payload로 디코딩 할 이미지의 경로 할당

  • qrdecode 노드 실행
  • 디코드 결과 얻기
  • msg.payload에 디코딩 결과 포함




  • Javascript 코드는 여기.
    msg.payload = msg.filename; 
    
    return msg;
    

    좋은 웹페이지 즐겨찾기