LINE BOT로 보낸 이미지를 Node.js에서 수신하여 저장하는 샘플
17071 단어 LINEmessagingAPI자바스크립트linebotNode.js
Node.js에서 QR 코드 로드 에 이어, 해커슨 센다이 에서의 재료입니다.
코드
1시간에 LINE BOT을 만드는 핸즈온 의 코드를 기반으로
handleEvent
의 함수를 바꾸어 downloadContent
의 함수를 새로 추가합니다.server.js
//・
//・
//・
//省略
async function handleEvent(event) {
if (event.type !== 'message' || event.message.type !== 'image') {
return Promise.resolve(null);
}
const downloadPath = './qr.png';
let getContent = await downloadContent(event.message.id, downloadPath);
console.log(getContent);
return client.replyMessage(event.replyToken, [
{
type: 'text',
text: `${getContent}として保存しました。`
}
]);
}
//ダウンロード関数
function downloadContent(messageId, downloadPath) {
return client.getMessageContent(messageId)
.then((stream) => new Promise((resolve, reject) => {
const writable = fs.createWriteStream(downloadPath);
stream.pipe(writable);
stream.on('end', () => resolve(downloadPath));
stream.on('error', reject);
}));
}
//省略
//・
//・
//・
시도해보기
$ node server.js
LINE BOT에 이미지를 보내면
image.png
로 저장됩니다.코피페용
server.js
'use strict';
const express = require('express');
const line = require('@line/bot-sdk');
const PORT = process.env.PORT || 3000;
const fs = require('fs');
const config = {
channelSecret: 'チャンネルシークレット',
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分はdeveloper consoleの"接続確認"用なので削除して問題ないです。
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 !== 'image') {
return Promise.resolve(null);
}
const downloadPath = './image.png';
let getContent = await downloadContent(event.message.id, downloadPath);
console.log(getContent);
return client.replyMessage(event.replyToken, [
{
type: 'text',
text: `${getContent}として保存しました。`
}
]);
}
//ダウンロード関数
function downloadContent(messageId, downloadPath) {
return client.getMessageContent(messageId)
.then((stream) => new Promise((resolve, reject) => {
const writable = fs.createWriteStream(downloadPath);
stream.pipe(writable);
stream.on('end', () => resolve(downloadPath));
stream.on('error', reject);
}));
}
app.listen(PORT);
console.log(`Server running at ${PORT}`);
Reference
이 문제에 관하여(LINE BOT로 보낸 이미지를 Node.js에서 수신하여 저장하는 샘플), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/n0bisuke/items/282ed2bd70447984c4d9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)