이 글은 Notion에서 작성 후 재편집한 포스트입니다.
목차
오늘의 목표
던파 쌀먹봇 개발을 시작했다. 일단 개발환경 세팅에 중점을 두도록 한다.
게임 자체가 워낙 -던- 이미지라 블로그에 올릴까 말까 고민했지만...
이와는 별개로 오픈빌더 스킬에 대한 정보가 너무 없어서 다른 누군가가 도움을 얻길 바란다.
일단 이 오픈빌더 자체가 정보가 드럽게 없다 진짜로.. 아무리 찾아봐도 예제나 이런게 턱없이 부족하다
오픈빌더의 스킬을 처음 접하는 사람은 이 포스팅 따라한다면 될것이다. 내가 개척자가 되어드리겠음..
참고
개발환경 메모
우분투 18.04
node.js v14.15.4
npm 6.14.10
코드 GIT 주소
github.com/kkkapuq/ssalbot.git
kkkapuq/ssalbot
던파 쌀먹봇. Contribute to kkkapuq/ssalbot development by creating an account on GitHub.
github.com
진행 과정
개발환경 세팅
//리눅스 빌드 환경 설치
sudo apt-get install build-essential libssl-dev
//NVM 설치
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
//NVM Path 적용
source ~/.bashrc
//Node.js 설치
nvm install 10.16.3
//버전 사용
nvm use 10.16.3
//버전 확인
node -v
npm -version
vscode에서 ssh를 통한 원격 서버 접속 세팅 후, 개발환경을 vscode로 하려고하는데... 잘 안된다.
해당 포스트를 따라하면서 했는데 에러가 발생한다.
vscode를 활용하여 원격 서버에 연결하기
회사에서 서버를 사용할 때, putty를 활용하는데 IDE를 사용하고 싶다는 생각이 문득 들어서 찾아보니 vscode는 community 버전을 활용해도 서버랑 원격 접속을 할 수 있더군요! 그래서 오늘은 윈도우
seokhyun2.tistory.com
이런 에러가 발생한다.
이유가 뭐지 -ㅅ-...
아오.. 드디어 해결했따.. 티스토리에 공유했으니... 나중에 찾아봐라.. 나자신..
그런데 ssh에서 직접 파일을 편집할순없더라.
생각해보니 git을 이용하면되는거였음..
로컬에서 작업하고 git으로 푸시해주고 서버에서 pull받으면 되는거자너?!!!? 왜 그생각을못했지..? 암튼 그렇게 진행하자.
서버에 스킬서버 세팅하기
여기 있는거 그대로 따라해봤다.
$ mkdir skill-server-example
$ cd skill-server-example
//본인이 원하는 위치에 스킬서버를 만들어준다.
//npm init을 입력하여 프로젝트를 초기화해준다. 뭐가 계속 뜨는데 라이센스만 MIT로 입력해주고 나머지는 알아서 패스하거나 입력해도된다.
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install pkg` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (skill-server-example)
version: (1.0.0) 0.0.1
description: skill server example
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC) MIT
About to write to ~/packages/skill-server-example/package.json:
{
"name": "skill-server-example",
"version": "0.0.1",
"description": "skill server example",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "MIT"
}
Is this OK? (yes)
라이브러리를 추가해준다. morgan은 로깅을 담당, body-parser 는 http요청의 body를 추출한다.
$ npm i --save morgan body-parser
코드를 추가해주자. index.js 로 was를 만들어주는 작업이다.
$ touch index.js
$ vi index.js
const express = require('express');
const app = express();
const logger = require('morgan');
const bodyParser = require('body-parser');
const apiRouter = express.Router();
app.use(logger('dev', {}));
app.use(bodyParser.json());
app.use('/api', apiRouter);
express를 사용하여, app을 생성한다. app은 스킬 응답을 받을 api서버 인스턴스다.
app의 use메서드를 통해 morgan과 body-parser를 등록한다.
api를 담당하는 apiRouter를 생성하고, 이를 app의 '/api' 경로에 붙여준다.
이 코드의 결과로, '/api/***' 로 시작하는 모든 요청은 apiRouter에 전달된다.
api 서버에 두 개의 엔드포인트를 추가한다. ‘/api/sayHello’, ‘/api/showHello’ 라우팅을 담당할 미들웨어 함수를 생성한다.
apiRouter.post('/sayHello', function(req, res) {
const responseBody = {
version: "2.0",
template: {
outputs: [
{
simpleText: {
text: "hello I'm Ryan"
}
}
]
}
};
res.status(200).send(responseBody);
});
apiRouter.post('/showHello', function(req, res) {
console.log(req.body);
const responseBody = {
version: "2.0",
template: {
outputs: [
{
simpleImage: {
imageUrl: "https://t1.daumcdn.net/friends/prod/category/M001_friends_ryan2.jpg",
altText: "hello I'm Ryan"
}
}
]
}
};
res.status(200).send(responseBody);
});
오늘의 결과
문제가 생겼다. AWS가 프리티어가 아니었음.. 서버를 어떻게 할지 생각좀해보자..
구독 및 하트는 정보 포스팅 제작에 큰 힘이됩니다♡
'개발일지 > 던파 쌀먹봇' 카테고리의 다른 글
[던파 쌀먹봇] 2021-02-16 개발일지 - 오픈빌더 -> 메신저봇 변경 및 카드검색 기능 추가 (0) | 2021.08.19 |
---|---|
[던파 쌀먹봇] 2021-02-04 개발일지 - 카카오 오픈빌더 외부 API 호출하기 (0) | 2021.02.25 |
[던파 쌀먹봇] 2021-02-03 개발일지 - 카카오 오픈빌더 익히기 (feat. 구름 IDE 포트 포워딩) (0) | 2021.02.16 |