개발일지/던파 쌀먹봇

[던파 쌀먹봇] 2021-02-01 개발일지 - 개발환경 세팅 (feat. 카카오 오픈빌더 스킬)

Emil :) 2021. 2. 8. 16:47
728x90
반응형
이 글은 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를 활용하여 원격 서버에 연결하기

 

vscode를 활용하여 원격 서버에 연결하기

회사에서 서버를 사용할 때, putty를 활용하는데 IDE를 사용하고 싶다는 생각이 문득 들어서 찾아보니 vscode는 community 버전을 활용해도 서버랑 원격 접속을 할 수 있더군요! 그래서 오늘은 윈도우

seokhyun2.tistory.com

이런 에러가 발생한다.
이유가 뭐지 -ㅅ-...

아오.. 드디어 해결했따.. 티스토리에 공유했으니... 나중에 찾아봐라.. 나자신..
그런데 ssh에서 직접 파일을 편집할순없더라.
생각해보니 git을 이용하면되는거였음..

로컬에서 작업하고 git으로 푸시해주고 서버에서 pull받으면 되는거자너?!!!? 왜 그생각을못했지..? 암튼 그렇게 진행하자.

서버에 스킬서버 세팅하기


 

스킬 만들기 · 카카오 i 오픈빌더 도움말

여기 있는거 그대로 따라해봤다.

$ 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가 프리티어가 아니었음.. 서버를 어떻게 할지 생각좀해보자..

 

구독 및 하트는 정보 포스팅 제작에 큰 힘이됩니다♡

728x90
반응형