Showing
2 changed files
with
40 additions
and
5 deletions
README.md
0 → 100644
1 | +# 끝말잇기 챗봇 | ||
2 | +term project for Open-source software development <br /> | ||
3 | +- email address: jeongyj8443@khu.ac.kr <br /> | ||
4 | +- Demo lineID: @063tjyar <br /> | ||
5 | + | ||
6 | +## Introduction | ||
7 | +This is a chatbot that plays word chain, one of the word games. | ||
8 | + | ||
9 | +두 명 이상의 사람이 일정한 순서를 정하고, 그에 따라 돌아가면서 자신의 바로 전 차례의 사람이 제시한 낱말의 마지막 글자로 시작하는 낱말을 말하는 형식의 말놀이이다. 간단한 규칙으로 누구나 쉽게 할 수 있는 게임이다. | ||
10 | + | ||
11 | +-----게임 도움말 | ||
12 | + '/시작' 입력으로 게임을 시작할 수 있다. | ||
13 | + 게임이 시작되면 사용자 먼저 단어를 제시한다. | ||
14 | + 챗봇과 번갈아가며 끝말잇기를 진행한다. | ||
15 | + *우승조건: 사용자의 마지막 글자로 시작하는 낱말이 존재하지 않는 경우 | ||
16 | + *패배조건: 사용자가 단어를 조건에 맞게 입력하지 않은 경우 | ||
17 | + - 한 글자 단어인 경우 | ||
18 | + - 챗봇의 마지말 글자로 시작하지 않는 경우 | ||
19 | + - 표준어 내의 명사가 아닌 경우 | ||
20 | + (표준국어대사전에 있는 단어만 인정, | ||
21 | + 고유어, 한자어, 외래어, 혼종어 모두 인정)) | ||
22 | +'/종료' 입력으로 도중에 게임을 종료할 수 있다. | ||
23 | + | ||
24 | + | ||
25 | +## Development Environment | ||
26 | +- Visual Studio Code @1.63.0 | ||
27 | +- Node.js @14.16.0 | ||
28 | +- OS: Windows_NT x64 10.0.22000 | ||
29 | +- AWS EC2 | ||
30 | + | ||
31 | +## APIs | ||
32 | +- open API of line messaging API (https://developers.line.biz/en/services/messaging-api/) <br /> | ||
33 | +If you want to use, sign up to this homepage and get own key. <br /> | ||
34 | +- open API of Standard Korean dictionary (https://stdict.korean.go.kr/main/main.do) <br /> | ||
35 | +If you want to get word, sign up to this homepage and get own key. <br /> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | var express = require('express'); | 1 | var express = require('express'); |
2 | const request = require('request'); | 2 | const request = require('request'); |
3 | const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' | 3 | const TARGET_URL = 'https://api.line.me/v2/bot/message/reply' |
4 | -const TOKEN = 'P5+e9JkPRckzKu1Fv7ghZl1MfP0wrYwYcgBVzHWe1OHO4Gtv1PIa9BARYqxoAThaXPSf8MyVKcpDE88V5jOnoS4o2xCNcgH9Ne4wcrPuNX6AT4gsfYEz0Y7n/A4+rT4vXHYARK34YPbkzzQbiXiyiQdB04t89/1O/w1cDnyilFU=' | 4 | +const TOKEN = '' |
5 | const fs = require('fs'); | 5 | const fs = require('fs'); |
6 | const path = require('path'); | 6 | const path = require('path'); |
7 | const HTTPS = require('https'); | 7 | const HTTPS = require('https'); |
... | @@ -10,7 +10,7 @@ const sslport = 23023; | ... | @@ -10,7 +10,7 @@ const sslport = 23023; |
10 | 10 | ||
11 | //Open API | 11 | //Open API |
12 | const STDICT_URL = 'https://stdict.korean.go.kr/api/search.do' | 12 | const STDICT_URL = 'https://stdict.korean.go.kr/api/search.do' |
13 | -const STDICT_KEY = '14AA284251F616FF2151DBE4CD7B3D4C' | 13 | +const STDICT_KEY = '' |
14 | 14 | ||
15 | //Webhook | 15 | //Webhook |
16 | const bodyParser = require('body-parser'); | 16 | const bodyParser = require('body-parser'); |
... | @@ -113,7 +113,7 @@ function all_check(replyToken, word, userId) { | ... | @@ -113,7 +113,7 @@ function all_check(replyToken, word, userId) { |
113 | 'Referer': 'https://stdict.korean.go.kr/api/search.do', | 113 | 'Referer': 'https://stdict.korean.go.kr/api/search.do', |
114 | 'Content-Type': 'application/x-www-form-urlencoded' | 114 | 'Content-Type': 'application/x-www-form-urlencoded' |
115 | }, | 115 | }, |
116 | - body: `key=14AA284251F616FF2151DBE4CD7B3D4C&` + `q=${word}&` + 'req_type=json&' + 'advanced=y&' + 'method=exact&' + 'type1=word&' + 'pos=1' | 116 | + body: `${STDICT_KEY}&` + `q=${word}&` + 'req_type=json&' + 'advanced=y&' + 'method=exact&' + 'type1=word&' + 'pos=1' |
117 | 117 | ||
118 | },(error, response, body) => { | 118 | },(error, response, body) => { |
119 | if(!error && response.statusCode == 200) { | 119 | if(!error && response.statusCode == 200) { |
... | @@ -192,7 +192,7 @@ function all_check(replyToken, word, userId) { | ... | @@ -192,7 +192,7 @@ function all_check(replyToken, word, userId) { |
192 | 'Referer': 'https://stdict.korean.go.kr/api/search.do', | 192 | 'Referer': 'https://stdict.korean.go.kr/api/search.do', |
193 | 'Content-Type': 'application/x-www-form-urlencoded' | 193 | 'Content-Type': 'application/x-www-form-urlencoded' |
194 | }, | 194 | }, |
195 | - body: `key=14AA284251F616FF2151DBE4CD7B3D4C&` + `q=${word}&` + 'req_type=json&' + 'advanced=y&' + 'method=exact&' + 'type1=word&' + 'pos=1' | 195 | + body: `${STDICT_KEY}&` + `q=${word}&` + 'req_type=json&' + 'advanced=y&' + 'method=exact&' + 'type1=word&' + 'pos=1' |
196 | 196 | ||
197 | },(error, response, body) => { | 197 | },(error, response, body) => { |
198 | if(!error && response.statusCode == 200) { | 198 | if(!error && response.statusCode == 200) { |
... | @@ -333,7 +333,7 @@ function wordchain(replyToken, message, userId) { | ... | @@ -333,7 +333,7 @@ function wordchain(replyToken, message, userId) { |
333 | 'Referer': 'https://stdict.korean.go.kr/api/search.do', | 333 | 'Referer': 'https://stdict.korean.go.kr/api/search.do', |
334 | 'Content-Type': 'application/x-www-form-urlencoded' | 334 | 'Content-Type': 'application/x-www-form-urlencoded' |
335 | }, | 335 | }, |
336 | - body: `key=14AA284251F616FF2151DBE4CD7B3D4C&` + `q=${letter}&` + 'req_type=json&' + 'start=15&' + 'advanced=y&' + 'method=start&' + 'type1=word&' + 'pos=1&' + 'letter_s=2&' + 'letter_e=3' | 336 | + body: `${STDICT_KEY}&` + `q=${letter}&` + 'req_type=json&' + 'start=15&' + 'advanced=y&' + 'method=start&' + 'type1=word&' + 'pos=1&' + 'letter_s=2&' + 'letter_e=3' |
337 | 337 | ||
338 | },(error, response, body) => { | 338 | },(error, response, body) => { |
339 | if(!error && response.statusCode == 200) { | 339 | if(!error && response.statusCode == 200) { | ... | ... |
-
Please register or login to post a comment