[μ±λ΄] μλμ°μμ μΉ΄μΉ΄μ€ν‘ μ±λ΄μ μν μμ μ€ν¬ μλ² κ΅¬μΆνκΈ°
λ³Έλ¬Έμ λ΄μ©μ λμλ§κ³Ό κ²½νμ ν΅ν΄ μ 리ν κ²μ λλ€. μ€ν λΉλμ λν λμ± μμΈν μ€λͺ μ μλ λμλ§μ μ°Έκ³ νμΈμ.
μ€ν¬ μλ² λμλ§: λ§ν¬
μΉ΄μΉ΄μ€ν‘ μ±λ΄ μ€ν¬ μλ²λ?
μΉ΄μΉ΄μ€ν‘ μ±λ΄μ μ€ν¬ κΈ°λ₯μ μ¬μ©νκΈ° μν΄μλ μ€ν¬ μλ²(μλ΅ μλ²)κ° νμν©λλ€. κ·ΈλΌ μ΄ μ€ν¬ μλ²κ° 무μμΈμ§ λ³ΌκΉμ?
'μ€ν¬ μλ²(Skill Server)'λ, λ΄ μμ€ν μΌλ‘λΆν° μ€ν¬ μμ²μ λ°κ³ μ΄μ λ΄κΈ΄ μ 보λ₯Ό λΆμνμ¬ μ μ ν μλ΅νλ κ²μ΄ μ€ν¬ μλ²μ μν μ λλ€.
κ·Έλ¦¬κ³ μλλ μμ²κ³Ό μλ΅μ λ€μ΄μ΄κ·Έλ¨μ λλ€.
μ¦, μ¬μ©μκ° λ΄μ μ΄μ©ν΄ μμ²μ νλ©΄ HTTP νλ‘ν μ½μ POST Methodκ° μ λ¬μ΄ λκ³ , μλ²μμλ μ΄μ λν μλ΅μ JSON ꡬμ±μΌλ‘ 보λΈλ€λ κ²μ λλ€.
μμ μ€ν¬ μλ²
μμ μ€ν¬ μλ² λμλ§: λ§ν¬
μ€ν λΉλ λμλ§μμλ ubuntu 16.04 νκ²½μμ μμ μ€ν¬ μλ²λ₯Ό ꡬμ±νλ λ°©λ²μ μ 곡νλλ°μ. μ¬μ€ μ λ ubuntu νκ²½μμ κ°λ°μ ν κ²½νμ΄ μκΈ° λλ¬Έμ μ΄λ»κ² ν΄μΌ νλμ§ λ§λ§νμ΅λλ€. κ·Έλ°λ° μλμ°μμλ λμΌν λ°©λ²μΌλ‘ μμ£Ό κ°λ¨νκ² μμ μ€ν¬ μλ²λ₯Ό ꡬνν μ μλ€λ κ²μ μκ² λμ΅λλ€.
μ°Έκ³ λ‘ μμ μ€ν¬ μλ²λ ν μ€νΈ λ¬Έμμ΄μ λλ μ΄λ―Έμ§λ₯Ό λ°ννλ λ κ°μ§ λμμ μνν©λλ€. κ·ΈλΌ μλμ° κΈ°λ°μμ μμ μ€ν¬ μλ²λ₯Ό ꡬμΆνλ λ°©λ²μ μμν΄ λ³΄κ² μ΅λλ€.
λ°λΌ νκΈ°
1. μλ² μμ± λ° μ€ννκΈ°
μλ λ§ν¬μ μ μνμ¬ μ€μΉν Windowsμ© nvmμ λ€μ΄λ‘λνκ³ μ€μΉν©λλ€.
λ§ν¬: github.com/coreybutler/nvm-windows/releases
μ€μΉ κ³Όμ μ λ무 λ¨μνμ¬ μλ΅νμ΅λλ€. Next λ²νΌλ§ λͺ λ² λλ₯΄λ©΄ μ€μΉκ° μλ£λ©λλ€. λ€μμ nodejs
λ₯Ό μ€μΉν μ°¨λ‘μ
λλ€.
λ§ν¬: nodejs.org/ko/
λ§μ°¬κ°μ§λ‘ μ€μΉ κ³Όμ μ λ¨μν©λλ€. Next λ²νΌλ§ λλ₯΄λ©΄ μ€μΉκ° μλ£λ©λλ€.
nvm
λ° nodejs
μ€μΉ ν λͺ
λ Ή ν둬ννΈλ₯Ό μ€νν©λλ€.
μλμ λͺ
λ Ήμ΄λ₯Ό μ
λ ₯νλ©΄ μ€μΉλ nodejs
μ λ²μ μ΄ νμλ©λλ€.
node -v
μλμ²λΌ λ²μ μ΄ νμλλ©΄ nodejs
λ μ μμ μΌλ‘ μ€μΉλμ΄ μλ κ²μ
λλ€.
μ€ν¬ μλ²λ₯Ό λ§λ€ ν΄λλ₯Ό μμ±ν©λλ€. μ λ μμλ‘ skill-server-example
μ΄λΌλ ν΄λλ₯Ό C:\\μ μμ±νμ΅λλ€.
μλμ λͺ λ Ήμ΄λ₯Ό μ λ ₯νμ¬ μμ±λ ν΄λλ‘ μ΄λν©λλ€.
cd C:\skill-server-example
κ·Έλ¦¬κ³ μλμ λͺ λ Ήμ΄λ₯Ό μ λ ₯νμ¬ νλ‘μ νΈλ₯Ό μ΄κΈ°νν©λλ€.
npm init
νλ‘μ νΈ μ΄κΈ°ν κ³Όμ μ€μ μ
λ ₯νλ λ¨κ³κ° μμ΅λλ€. package name
μ΄λ version
, description
λ±μ νλͺ©μΈλ°μ. μ μ΄λ―Έμ§μ²λΌ λκ°μ΄ μμ±ν΄λ λκ³ , μμλ‘ μμ±ν΄λ μκ΄μμ΅λλ€. νλ‘μ νΈ μμ±μ΄ μλ£λλ©΄ μλμ κ°μ΄ package.json
νμΌμ΄ μμ±λ©λλ€.
λ€μμ expressjs
λ₯Ό μ€μΉν μ°¨λ‘μ
λλ€. μλμ λͺ
λ Ήμ΄λ₯Ό μ
λ ₯ν©λλ€.
npm i --save express
λ€μμΌλ‘ morgan
, body-parser
λΌμ΄λΈλ¬λ¦¬λ₯Ό μΆκ°ν©λλ€.
npm i --save morgan body-parser
μ μ€μΉ κ³Όμ μ΄ λͺ¨λ λλλ©΄ μλμ κ°μ νμΌλ€μ΄ μΆκ°λ©λλ€.
ν΄λΉ ν΄λμ 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(bodyParser.urlencoded({
extended: true
}));
app.use('/api', apiRouter);
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);
});
app.listen(3000, function() {
console.log('Example skill server listening on port 3000!');
});
νμΌμ μ μ₯ν ν λ€μ λͺ λ Ή ν둬ννΈλ‘ λμμ΅λλ€. μλμ λͺ λ Ήμ΄λ₯Ό μ λ ₯νμ¬ μλ²λ₯Ό μ€νν μ μμ΅λλ€.
node index.js
2. 곡μ κΈ° μ€μ νκΈ°
μλ²λ μ€ννκ³ μμ§λ§ μ΄λκΉμ§λ λ‘컬μμλ§ λκ³ μλ μλ²μ λλ€. μΈλΆμμ μ μνλ €λ©΄ 곡μ κΈ°μμ ν¬νΈ ν¬μλ©μ ν΄μ€μΌ ν©λλ€. iptime 곡μ κΈ° κΈ°μ€μΌλ‘ ν¬νΈ ν¬μλ©νλ λ°©λ²μ μλ λ§ν¬λ₯Ό μ°Έκ³ νμκΈ° λ°λλλ€(νμ¬ κ³΅μ κΈ°λ₯Ό μ¬μ©ν΄λ λ°©λ²μ λμΌν©λλ€).
[ipTIME] ν¬νΈ ν¬μλ© μ€μ μΌλ‘ μΈλΆμμ μ§μμλ μλ² μ μνκΈ°
μ λ μλ μ΄λ―Έμ§μ²λΌ μΈλΆ ν¬νΈ 3000μΌλ‘ μ€μ νμ΅λλ€.
κ·Έλ°λ° ν¬νΈ ν¬μλ© μΈμλ ν κ°μ§ μ€μ μ λ ν΄μΌ ν©λλ€. λ°λ‘ DDNSμΈλ°μ. DDNSλ₯Ό μ€μ ν΄μΌ xxx.iptime.org:3000 ννμ μ£Όμλ‘ μΈλΆ λ€νΈμν¬μμ λ΄λΆ λ€νΈμν¬μ μ μμ΄ κ°λ₯ν©λλ€. μ΄ λν μλμ λ§ν¬λ₯Ό μ°Έκ³ νμ¬ μ€μ νμκΈ° λ°λλλ€.
[ipTIME] DDNS μ€μ μΌλ‘ μΈλΆμμ μ½κ² 곡μ κΈ°μ μ μνκΈ°
3. μ€ν λΉλ μ¬μ΄νΈμμ μ€ν¬ μλ² μ€μ νκΈ°
μ§κΈκΉμ§ μ λ°λΌμ€μ ¨λμ? μ΄μ μ€ν λΉλ μ¬μ΄νΈμμ μ€ν¬ μμ± λ° μλ²λ₯Ό μ€μ νλ κ³Όμ μ΄ λ¨μμ΅λλ€. μ€ν λΉλ μ¬μ΄νΈμ μ μν ν μ€ν¬μ μμ±ν©λλ€.
μ€ν¬ μμ± ν URL μ λ ₯ λΆλΆμ λ€μκ³Ό κ°μ΄ μ λ ₯ν©λλ€. μ λ ₯νλ URLμ DDNS μ£Όμμ μΈλΆ ν¬νΈ κ·Έλ¦¬κ³ api/sayHello ꡬμ±μ λλ€.
URL μ λ ₯ ν μ€ν¬ μλ²λ‘ μ μ‘ λ²νΌμ ν΄λ¦νλ©΄ μλ΅ λ©μμ§μ κ²°κ³Όκ° νμλ©λλ€.
μ λ²νΌμ ν΄λ¦νλ©΄μ λͺ λ Ή ν둬ννΈλ₯Ό 보면 POST μμ²μ μ²λ¦¬νλ€λ λ©μμ§λ₯Ό νμΈν μ μμ΅λλ€.
μ 리
λ³Έλ¬Έμ λ΄μ©λλ‘ κ²°κ³Όλ₯Ό μ»μΌμ ¨λμ? μκ³ λλ©΄ λ³κ² μλ κ² κ°μ§λ§, μ λ μ΄λ₯Ό μκΈ°κΉμ§ μ λ§ μ€λ μκ°μ΄ κ±Έλ Έμ΅λλ€. κ²°λ‘ μ μλ²λ₯Ό μ€ννκ³ , POST λ©μλμ νΉμ νλμ μλ΅νλ μ½λλ§ κ΅¬ννλ©΄ λλ κ²μ΄μ£ .
μΆνμλ Microsoftμ Azure μλ²μ Synology μλ²λ₯Ό μ΄μ©ν ASP.NET μ€ν¬ μλ²λ₯Ό λ§λλ λ°©λ²μ μκ°νλλ‘ νκ² μ΅λλ€.
'Programming > ChatBot' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λκΈ
μ΄ κΈ κ³΅μ νκΈ°
-
ꡬλ
νκΈ°
ꡬλ νκΈ°
-
μΉ΄μΉ΄μ€ν‘
μΉ΄μΉ΄μ€ν‘
-
λΌμΈ
λΌμΈ
-
νΈμν°
νΈμν°
-
Facebook
Facebook
-
μΉ΄μΉ΄μ€μ€ν 리
μΉ΄μΉ΄μ€μ€ν 리
-
λ°΄λ
λ°΄λ
-
λ€μ΄λ² λΈλ‘κ·Έ
λ€μ΄λ² λΈλ‘κ·Έ
-
Pocket
Pocket
-
Evernote
Evernote
λ€λ₯Έ κΈ
-
[μ±λ΄] μ½λ©μμ΄ μΉ΄μΉ΄μ€ν‘ μ±λ΄ λ§λ€κΈ° - μ λ€λ¦ λ©λ΄ μ€μ
[μ±λ΄] μ½λ©μμ΄ μΉ΄μΉ΄μ€ν‘ μ±λ΄ λ§λ€κΈ° - μ λ€λ¦ λ©λ΄ μ€μ
2021.05.04 -
[μ±λ΄/ASP.NET] C#μΌλ‘ Microsoft Azure μλ²μ μΉ΄μΉ΄μ€ν‘ μμ μ€ν¬ μλ² κ΅¬μΆνκΈ°
[μ±λ΄/ASP.NET] C#μΌλ‘ Microsoft Azure μλ²μ μΉ΄μΉ΄μ€ν‘ μμ μ€ν¬ μλ² κ΅¬μΆνκΈ°
2021.02.20 -
[μ±λ΄] μΉ΄μΉ΄μ€ν‘ μ±λ΄μ μν μΉ΄μΉ΄μ€ i μ€ν λΉλ μ΄ν΄νκΈ°
[μ±λ΄] μΉ΄μΉ΄μ€ν‘ μ±λ΄μ μν μΉ΄μΉ΄μ€ i μ€ν λΉλ μ΄ν΄νκΈ°
2021.02.13 -
[μ±λ΄] κ°λ¨νκ³ μμ£Ό μ½κ² μΉ΄μΉ΄μ€ν‘ μ±λ΄ λ§λ€κΈ°
[μ±λ΄] κ°λ¨νκ³ μμ£Ό μ½κ² μΉ΄μΉ΄μ€ν‘ μ±λ΄ λ§λ€κΈ°
2021.02.07