February 10, 2020
목적 : 항시 사용가능하고, 챗봇처럼 사용하고싶어서 만들게되었다.
환경 : NodeJS + heroku
@slack/client
모듈 아용해 개발슬랙은 위와 같이 총 5가지의 API를 제공한다.
그 중 나는 Web API
, RTM API
를 사용했다.
로컬에 의존하지 않고 항상 사용할 수 있는 슬랙봇을 만들길 원했다.
그래서 heroku를 이용해 항시 띄워져있는 노드서버 환경을 구축했다.
slack-lion-bot
이라는 app을 heroku에 만들고 형상관리를 했다.
처음 heroku를 사용하면 https://devcenter.heroku.com/articles/getting-started-with-nodejs에서 사용 가이드를 제공한다.
아래와 같이 heroku 스타트 레퍼런스를 복사해서 프로젝트 기본베이스로 사용했다.
git clone https://github.com/heroku/node-js-getting-started.git
cd node-js-getting-started
heroku create (앱생성)
git push heroku master (heroku 앱에 소스 업로드)
heroku ps:scale web=1 (서비스의 타입과 스케일)
heroku open (로컬 띄우기)
아래와 같이 RTM API
를 이용해서 리얼타임으로
챗봇과 메세지를 주고받을 수 있게 구현 가능하다.
rtm.on
이라는 메소드로 슬랙에서 전달받은 객체 안에 텍스트를
이용해 그에 알맞는 응답을 줄 수 있다.
const config = require("dotenv").config().parsed;
const { RTMClient } = require("@slack/client");
const token = config.SLACK_BOT_TOKEN;
const rtm = new RTMClient(token);
rtm.on("message", async event => {
let text = event.text ? event.text : event.message.text;
const channel = event.channel;
if(text.icludes('주소'))
await rtm.sendMessage('서울시 강남구', channel);
})
(async () => {
await rtm.start();
})();
밑에 참고자료를 참조만해도 슬랙봇을 쉽게 구현할 수있어서
슬랙봇이 필요한 분이라면 꼭 한번씩 읽어보기를 추천드립니다.