본문 바로가기

Javascript/Node.js

Node.js로 카카오 플러스친구 스마트 채팅 개발하기 (2)

카카오 플러스친구 서비스를 위한 웹 프로그램을 개발해보도록 하겠습니다. 최근에는 Language마다 웹 프로그래밍을 지원하는 프레임워크들이 존재하고 특히 Javascript를 서버 프로그램 개발영역으로 끌어들인 Node.js는 기존의 프론트엔드 개발자들이나 Javascript 개발자들을 백엔드 영역까지 진출시키는데 크게 기여했습니다. 개인적으로 플러스친구는 복잡한 기능을 수행하기보다 간단한 질의에 대한 응답형태로 구현되기 때문에 최대한 가볍고 간단하게 개발하는게 맞다고 생각했고, Node.js를 이용하여 개발하였습니다.


Node.js를 처음 사용해보시는 분들을 위하여 Node.js 설치부터 개발까지 한번 같이 해보도록 하겠습니다.

우선 Node.js를 설치합니다. Node.js를 설치하는 방법은 설치파일을 다운받아서 실행하는 방법이 있고, Linux 사용자의 경우 package manager를 이용하여 설치하는 방법이 있습니다. 두 방법 다 가능하도록 링크를 남겨두겠습니다.


Node.js 다운로드

https://nodejs.org/ko/download/


Node.js package manager 설치

https://nodejs.org/ko/download/package-manager/


 개인적으로 LTS 버전을 설치하시기를 추천드립니다. 최신 버전의 경우 안정화가 충분히 진행되지 않았기 때문에 생각하지 못한 버그가 발견될 수 있고, 해결하기 위한 참고자료도 적은 편입니다.


설치가 완료되었다면 cmd  창에 node -v를 입력하여 정상적으로 설치되었는지 확인해줍니다. 설치된 Node.js 버전이 나온다면 정상설치가 된 것입니다.


설치가 완료되었다면 이제 프로젝트를 생성해보도록 합니다. 원하는 경로에다 프로젝트에 사용할 폴더를 하나 만듭니다. 저는 kakao-plus라는 이름으로 폴더를 생성하였습니다. 그리고 그 폴더로 이동합니다.


mkdir kakao-plus

cd kakao-plus


그다음 npm init 이라고 입력해줍니다. npm init 은 Node.js의 pacakge manager인 npm을 이용하여 Node.js 개발에 필요한 기본적인 세팅을 담당하는 package.json 파일을 생하는 과정입니다. title, author, version 등 다양한 값을 물어보는데 굳이 입력해주실 필요는 없기 때문에 엔터키만 치시다가 마지막에 yes만 입력해주셔도 됩니다. 그러면 뭔가 입력한 적도 없는데 기본적인 값들이 세팅된 pacakge.json 파일이 생성됩니다. 이제 Node.js 프로그램을 개발하기 위해 개발을 도와줄 두 개의 모듈을 추가해주도록 하겠습니다. 하나는 Express라는 프레임워크로 Node.js 개발을 더 쉽고 간편하게 해줍니다. 다른 하나는 body-parser로 질의가 입력되고 나갈 때의 정보들을 사용하기 편하게 해줍니다. 이 두 모듈 모두 Node.js의 package manager인 npm을 이용하여 쉽게 설치하실 수 있습니다.


npm install express body-parser --save


express와 body-parser 설치까지 완료되었다면 이제 개발을 위한 기본적인 준비는 끝났습니다. 프로그램 관리의 편의를 위해 kakao-plus 폴더에 src라는 폴더를 생성합니다. 


mkdir src


이제 사용하시는 ide를 이용하시거나 notepad를 이용하셔서 src 폴더 아래에 App.js라는 파일을 하나 생성해주도록 합니다. 그리고 빈 파일에 아래의 코드를 입력해주고 저장해줍니다.


const express = require('express');
const app = express();
const bodyParser = require('body-parser');

app.use(bodyParser.json());

app.get('/', (req, res) => {
res.send('Hello World!');
});

app.get('/keyboard', (req, res) => {
const text = {
"type": "text"
};
res.send(text);
});

app.post('/message', (req, res) => {
const user_key = decodeURIComponent(req.body.user_key); // user's key
const type = decodeURIComponent(req.body.type); // message type
const content = decodeURIComponent(req.body.content); // user's message

console.log(user_key + " " + type + " " + content);

let text = '무슨 말인지 모르겠는걸...';
if (content.indexOf('안녕') !== -1) {
text = '그래 나도 안녕!';
} else if (content.indexOf('이름') !== -1) {
text = '내 이름은 kakao plus test bot이야';
}
const answer = {
'message' : {
'text' : text
}
};
res.send(answer);
});

app.listen(3000, () => {
console.log('Example app listening on port 3000!');
});


그리고 다시 cmd 창이나 terminal 창에서 kakao-plus/src 경로로 접근하여 App.js 프로그램을 실행해보겠습니다.


cd kakao-plus/src

node App.js


그러면 Example app listening on port 3000!이라는 메시지가 나오면서 프로그램이 실행된 것을 확인하실 수 있습니다. 가장 간단한 형태의 카카오플러스친구 스마트 채팅이 구현된 것입니다. 이제 이 프로그램을 플러스친구 관리자센터의 등록해보겠습니다. 프로그램이 떠있는 상태에서 플러스친구 관리자센터에 접속하셔서 스마트채팅의 API형 아래의 설정하기를 선택해줍니다. 그러면 앱 이름, 앱 URL, 앱 설명, 알림받을 전화번호를 입력하는 창이 나옵니다. 여기에 본인이 개발한 프로그램의 이름을 입력해줍니다. 앱 URL은 http://server ip:3000 의 형식으로 입력해주시면 됩니다.  그다음  API 테스트를 하는데 이때 아래와 같은 메시지가 나왔다면 정상적으로 작동하고 있다는 뜻입니다.


Required*

keyboard OK
{"type":"text"}

마지막으로 알림받을 전화번호의 인증까지 완료되면 API형 저장하기 버튼을 눌러 저장해줍니다. 그다음 만든 채팅봇이 잘작동하는지 친구를 등록하여 확인해줍니다. 만일 위와 동일한 코드로 만드셨다면 안녕을 입력하신 경우 그래 나도 안녕!이 나와야 하고 이름을 물어보면 내 이름은 kakao plus test bot이야라고 나와야합니다. 이제 추가하고 싶은 질의나 대답이 있으시다면 app.post(/message, callback); 함수 아래에 제가 if로 분기시켜서 입력한 것처럼 추가해주시면 됩니다. 추가로 궁금하신 내용은 댓글로 문의주시기 바랍니다.