E N D
슬랙봇 30분만에 만들기 voidopennet@gmail.com
• 몸을 만들자. • 정신을 만들자. • I say “안녕”, Bot says “안녕, 난 봇이야.” • 지능을 만들자. • I say “10 더하기 20”, Bot says “30 일거야.”
• 특정 slack community owner 또는 admin 이어야 합니다. • 웹브라우저 주소창에 http://{커뮤니티 이름}.slack.com/apps 를 입력합니다. • 오른쪽 상단 박스에 해당 커뮤니티 이름 으로 sign in 이 되어 있는지 확인합니다.
• 웹브라우저 주소창에 https:// my.slack.com/services/new/bot 을 입력합니다. • (해당 커뮤니티의 bot 생성 페이지로 redirect 됩니다.) • bot username 을 입력합니다.(여기서 는 bot.1) • Add bot integration 버튼을 클릭합니 다.
• 내용들을 확인하고 optional input box 에 적당한 내용을 입력하거나 빈칸으로 둡니다. • Save Integration 버튼을 클릭합니다.
• API Token 을 복사합니다.(정신을 만들 때 사용합니다.)
• slack 앱을 실행시키거나, 웹브라우저 주 소창에 https://{커뮤니티 이 름}.slack.com 을 입력합니다. • 왼쪽 column DIRECT MESSAGES 에 방 금 만든 bot.1 이 있고, 이 bot.1 을 클릭했 을때 away 상태에 있는지 확인합니다.
• node.js 기반이라 node.js 가 설치되어 있어야 합니다. (npm 은 node.js 를 설 치하면 함께 설치됩니다.) • node.js v7.8.0 & npm v4.2.0 입니다. • 터미널을 엽니다. • 다음을 차례로 입력합니다. $ mkdir slackbot30Minutes $ cd slackbot30Minutes $ npm init --yes $ npm install botkit --save $ touch keys.js bot.js
• 선호하는 IDE 를 열고, keys.js 파일에 다 음을 입력합니다. module.exports = { botAPIToken: 'xoxb-167776176980- K1Q2ehCnTpHWoDkqGQj198X2' } • botAPIToken 은 앞에서 복사한 값입니 다. • (botAPIToken 은 keys.js 파일 없이, 환 경변수로 등록하여 사용하기를 권장합니 다.)
• bot.js 파일에 다음을 입력합니다. const botkit = require('botkit'); const keys = require('./keys'); const controller = botkit.slackbot({ debug: false, log: true }); controller.spawn({ token: keys.botAPIToken }).startRTM();
• 터미널 창에서 다음을 입력합니다. $ node bot.js • 터미널 창에서의 로그를 확인합니다. • bot.1 의 상태가 초록색 active 로 된 것을 확인합니다. • 희미하게 정신을 차리기 시작합니다. :)
• bot.js 파일에 다음을 추가합니다. const botScope = [ 'direct_message', 'direct_mention', 'mention' ]; controller.hears('안녕', botScope, (bot, message) => { bot.reply(message, '안녕, 난 봇이 야.'); });
• 터미널 창에서 ctrl-c 로 기존 node process를 중단시키고 다음을 입력하여 재기동 시킵니다. $ node bot.js • 슬랙앱(또는 웹브라우저창)에서 bot.1 봇 에게 안녕 이라고 입력합니다. • bot.1 이 안녕, 난 봇이야. 라고 대답하는 지 확인합니다. • 터미널 창에서 slack API(chat.postMessage) 가 로그로 찍히 는지 확인합니다.
• http://api.ai 계정이 있다는 가정하에 시 작합니다. api.ai 계정은 누구나 쉽게 만들 수 있습니다. :) • 웹브라우저창에 http://console.api.ai 를 입력합니다. • 드롭다운 아이콘을 클릭한 후, Create new agent 를 클릭합니다.
• agent 이름, 타입, 언어, 표준시를 설정하 고 SAVE 버튼을 클릭합니다. • 아직은 한국어 설정으로 하면 문제가 있 습니다.
• INTENT 이름(plus) 을 입력합니다. • User says 아래 input box 앞에 있는 ” 를 클릭 후 @ 로 바꿉니다. • @sys. 자동완성 기능을 이용하여 @sys.number 가 나오게 하고 : 뒤에는 x 를 입력합니다. 더하기 라고 입력한 후 같은 방식으로 y 도 입력합니다. • Action 아래 input box 에 plus 라고 입 력합니다. • parameter table 이 오른쪽과 같은지 확 인합니다. • SAVE 버튼을 클릭합니다.
• 오른쪽 Try it now…에 1 더하기 2 라고 입력합니다. • INTENT는 plus, ACTION은 plus, PARAMETER, VALUE에 값이 올바르게 들어오는지 확인합니다.
• agent 이름 옆 톱니바퀴 아이콘을 클릭 합니다. • API keys 중 Client access token 을 복사합니다.
• 터미널을 엽니다. • 다음을 입력합니다. $ npm install api-ai-botkit --save
• keys.js 파일에 다음을 추가합니다. module.exports = { botAPIToken: 'xoxb-167776176980- K1Q2ehCnTpHWoDkqGQj198X2', apiaiToken: 'fa819ced5ad6464294aec36fe48ba b56' } • apiaiToken 값은 앞에서 복사한 값입니 다.
• bot.js 파일에 다음을 추가합니다. const apiaiBotkit = require('api-ai-botkit'); const apiai = apiaiBotkit(keys.apiaiToken); … controller.hears('.*', botScope, (bot, message) => { apiai.process(message, bot); }); apiai.all((message, resp, bot) => { console.log(resp.result.action); }); const actionsDefault = [ 'input.unknown', 'input.welcome' ]; actionsDefault.forEach((action) => { apiai.action(action, (message, resp, bot) => { const responseText = resp.result.fulfillment.speech; bot.reply(message, responseText); }); }); apiai.action('plus', (message, resp, bot) => { const x = Number(resp.result.parameters.x); const y = Number(resp.result.parameters.y); const sum = x + y; }); … bot.reply(message, `${sum} 일거야.`);
• 터미널 창에서 ctrl-c 로 기존 node process를 중단시키고 다음을 입력하여 재기동 시킵니다. $ node bot.js • 슬랙앱(또는 웹브라우저창)에서 bot.1 봇 에게 10 더하기 20 이라고 입력합니다. • 대답을 확인합니다. • 터미널 창에서 action name(plus)와 slack API(chat.postMessage) 가 로그로 찍히는지 확인합니다.