LINE Bot에서 취소 프레임 알림
소개
이벤트의 취소 테두리를 확인하는데 일일이 이벤트 사이트를 확인하고 있었습니다만(캔슬 기다릴 수 없는 이벤트…), 공부가 테라 Line의 Bot군에게 취소 테두리를 통지받는 구조를 만들어 보았습니다 , 주로 Messaging API - 빠른 시작과 Heroku를 사용하여 무료로 앱 개발를 참고로 했다. 짜증나게 구현했지만 어려운 일은 없고 간단했습니다.
처리 이미지
파일 구성
참고로 소스 코드는 GitHub에서 공개하고 있습니다. express-generator 템플릿에서 불필요한 부분 (UI 등)을 삭제하고 나중에 소개하는 cron.js 나 line.js 등을 조금 추가한 것입니다 (Procfile는 Heroku 용 파일).
$ tree -I node_modules
.
├── Procfile
├── README.md
├── app.js
├── bin
│ └── www
├── lib
│ ├── cron.js
│ └── line.js
├── package-lock.json
└── package.json
주요 코드
app.js
서버 본체의 코드입니다. 엔드 포인트
/health
는 무료 상태 확인 서비스 Uptime Robot에서 정기적으로 액세스됩니다. 무료 테두리의 Heroku ( Free Dyno Hours )가 절전을 피하기 위해서입니다.app.js
const express = require('express');
const app = express();
require('./lib/cron');
app.get('/health', (_, res) => {
res.sendStatus(200);
});
module.exports = app;
lib/line.js
LINE Message API에 액세스하는 클라이언트입니다.
channelAccessToken
와 channelSecret
는 Messaging API - 빠른 시작을 참고로 얻을 수 있습니다.lib/line.js
const line = require("@line/bot-sdk");
const credential = {
channelAccessToken: process.env.LINE_ACCESS_TOKEN,
channelSecret: process.env.LINE_CHANNEL_SECRET
};
const client = new line.Client(credential);
module.exports = {
client
}
lib/cron.js
node-cron을 사용하여 Heroku 서버에서 정기적으로 이벤트 페이지에 액세스합니다 (매일 8, 12, 18, 22시에 액세스하고 확인하도록 설정). 이벤트의 취소 프레임은 (잡음이지만) 제목에 "빈"이라는 문자가 포함되어 있는지 여부를 확인하여 확인합니다. 취소가 있으면 사용자 (
USER_ID
)에게 이벤트 제목과 신청 페이지의 URL을 푸시합니다. 공부 목적으로 개발했기 때문에 목적지를 고정하고 있습니다만, 좀 더 손을 더해 유저마다 감시하는 이벤트나 타이밍등을 데이타베이스로 관리한다고 할 수도 있을까라고 생각하고 있습니다. 자신의 USER_ID
는 LINE Developers의 채널 기본 설정 끝에 있습니다.lib/cron.js
const request = require('request');
const cron = require('node-cron');
const cheerio = require('cheerio');
const { client } = require('./line');
cron.schedule('0 8,12,18,22 * * *', () => {
// イベントページにアクセスします.
request({
method: 'GET',
uri: process.env.URL
}, (err, res, body) => {
if (err || res.statusCode !== 200) {
console.error(err || res.statusCode);
}
// イベントタイトルを取得します.
const $ = cheerio.load(body);
const title = $('.event_name').text().replace(/\s+/g, '');
if (title.match(/空/) !== null) {
// キャンセルがある場合,ユーザへメッセージを送信します.
client.pushMessage(process.env.USER_ID, {
type: 'text',
text: `${title} - ${process.env.URL}`
});
} else {
// 確認用のログです.意味はありません.
console.log('キャンセルはありませんでした');
}
});
});
사이고에게
일상적으로 사용하는 LINE에 취소 통지가 오는 것으로 확인하기 위한 스트레스가 줄어들었습니다. 꽤 좋습니다. 그 밖에도 통지시키면 편해질 것 같은 것은 수제해 볼까라고 하는 기분이 되고 있습니다. 이번에 이용한 Heroku나 Uptime Robot은 무료이며, 개발하는 시간과 의욕만 있으면 되는 느낌입니다
Reference
이 문제에 관하여(LINE Bot에서 취소 프레임 알림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/xshirade/items/b0225bf9523be6ea15d9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)