4
0

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.

大事な画像を瞬時に呼び出せるLINE BOT

Last updated at Posted at 2020-08-26

「免許証のアップロードって面倒」

銀行口座や証券口座の開設などで
時々求められる免許証のアップロード。

いちいち免許証の面と裏をスマホで写真撮って、
PCに転送して、アップロードするって意外と面倒なんですよね。

まあ実質かかる時間はそんなないんですが、
個人的にこういう作業は面倒だなと後回ししてしまう癖があります。

なので、こういういま欲しい写真を瞬時に呼び出せたらいいなと、
瞬時に呼び出せるLINE BOTを作ってみました。

つくりたかったもの

LINE BOTへのメッセージの内容に応じて、
いくつかの欲しい画像の中から選んでを取り出そうと思いました。

ただ、最初の発想はこちらのスケッチで。
アイデアスケッチと呼ばれる手法です。

EgAWKuvUMAAOl_q.jpg

つくったもの

GASを使うとうまくいくのかなと思い、調べてはいたものの、
複数の画像取得はうまくいかず、とりあえず1枚の画像を取得するところだけできました。

試行錯誤したところ

この部分のURLをどう置くかが重要なのですが、
なかなかそれがうまくいきませんでした。


    return client.replyMessage(event.replyToken, {
        type: 'image',
        originalContentUrl: 'https://practical-volhard-aebb3b.netlify.app/image01.jpeg',
        previewImageUrl: 'https://practical-volhard-aebb3b.netlify.app/image01.jpeg',
    });

まずgoogleドライブに画像を置いて、
共有にすると発行されるリンクのURLを入力してみました。

https://drive.google.com/file/d/{ID}/view?usp=sharing

しかし、これでは全く表示されない。

色々調べると、どうやら以下のようにURLを変更する必要があるとのことで、
やってみました。

http://drive.google.com/uc?export=view&id={ID}

しかし、これも動かず。
どうやらhttpsではじめるものでないとダメらしい。
ちなみに、このURLをhttpsで入力してみると、動かず。

じゃあ、今度はdropboxでやってみようとしましたが、
画像を読み込もうとするところまでいきましたが、表示されず。

じゃあどうしようか、と調べて、たどり着いた記事が
こちら

Netlifyだとうまくいくよ、と書いてあったので、やってみると、うまくいきました。


    return client.replyMessage(event.replyToken, {
        type: 'image',
        originalContentUrl: 'https://nostalgic-villani-a2f764.netlify.app/image02.png',
        previewImageUrl: 'https://nostalgic-villani-a2f764.netlify.app/image02.png',
    });

        

コード


'use strict';

const express = require('express');
const line = require('@line/bot-sdk');
const PORT = process.env.PORT || 3000;

const config = {
    channelSecret: 'channelSecret',//自分のchannelSecretを入力
    channelAccessToken: 'channelAccessToken'//自分のchannelAccessTokenを入力
};

const app = express();

app.get('/', (req, res) => res.send('Hello LINE BOT!(GET)')); 
app.post('/webhook', line.middleware(config), (req, res) => {
    console.log(req.body.events);


    if (req.body.events[0].replyToken === '00000000000000000000000000000000' && req.body.events[1].replyToken === 'ffffffffffffffffffffffffffffffff') {
        res.send('Hello LINE BOT!(POST)');
        console.log('疎通確認用');
        return;
    }

    Promise
        .all(req.body.events.map(handleEvent))
        .then((result) => res.json(result));
});

const client = new line.Client(config);

async function handleEvent(event) {
    if (event.type !== 'message' || event.message.type !== 'text') {
        return Promise.resolve(null);
    }

    return client.replyMessage(event.replyToken, {
        type: 'image',
        originalContentUrl: 'https://nostalgic-villani-a2f764.netlify.app/image02.png',//ここのNetlifyに取り込んだ画像のURLを入力
        previewImageUrl: 'https://nostalgic-villani-a2f764.netlify.app/image02.png',//ここのNetlifyに取り込んだ画像のURLを入力
    });
}

app.listen(PORT);
console.log(`Server running at ${PORT}`);


まとめ

よくよく考えると、NetlifyだとURLで画像が見れちゃうので、
重要な画像だと、セキュリティ管理が必要ですね。

そこの対策を今度調べてみようと思います。

よかったらLGTMお願いします!

4
0
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?