키워드 기반으로 모임에 대한 정보를 텔레그램 챗봇을 통해 알려주는 application입니다.
아래의 사이트에서 12분 단위의 웹-크롤링을 통해 정보를 추출하여 제공하고 있습니다.
추후 다른 소스를 알게되면 추가 할 수 있겠죠. 나쁜 사람 아닙니다, 크롤링을 막지 말아주세요. ヾ(;゚Д゚;)シ
간단합니다! Telegram 메신저를 설치 후, @OomEventNotifierBot을 추가해주세요.
/start 커맨드로 바로 아이디를 발급받을 수 있으며, 웹페이지에서 즉시 키워드를 추가하시면 모든 준비는 끝납니다!
git clone <REPOSITORY_URL>
npm install기본 포트의 Mongodb를 데이터베이스로 사용합니다.
설치는 공식 도큐먼트를 참조해주세요.
telegram bot 메시지 수신을 통한 상태 업데이트를 위해 WebHook을 사용합니다.
webHook 설정을 위해:
-
self-signed certification을 사용합니다.
공식 가이드: Marvin's Marvellous Guide to All Things Webhook를 참조해주세요.
-
telegram rest api setWebHook을 통해 webHook을 설정한 후, 별도의 https 요청(8443 포트)을 받아 처리하고 있습니다.
역시 공식 가이드: Marvin's Marvellous Guide to All Things Webhook에서 해당 cli 요청 코드를 확인하실 수 있습니다.
curl -F "url=https://<YOURDOMAIN.EXAMPLE>/<WEBHOOKLOCATION>" -F "certificate=@<YOURCERTIFICATE>.pem" https://api.telegram.org/bot<YOURTOKEN>/setWebhook
추후 도메인 전체를 위한 인증서를 적용하고, 서비스 구동시 동적으로 webHook을 설정하도록 변경 할 계획입니다.
서비스 내부에서 다음과 같은 구조의 json 파일을 설정 파일로 사용하고 있습니다.
추후 리팩토링과 함께 변경될 가능성이 높습니다.
module.exports = {
// 서비스 구동 포트
port: number-port,
webHook: {
// self-signed certificate 적용을 위한 물리 key 파일 경로
key: 'string-key-file-path',
cert: 'string-pem-file-path'
},
onoffmixEventNotifier: {
// 배치 프로세스 구분을 위한 Name String
jobName: 'string-job-name',
// 크롤링 대상 url (온오프믹스)
url: 'string-url',
// 배치 작업 간격 (null일 경우 동적 간격을 적용합니다)
fixedInterval: number-fixed-interval,
// 텔레그램 봇 연동을 위한 token
telegramBotToken: 'string-telegram-bot-token'
}
}