Showing
13 changed files
with
62 additions
and
93 deletions
.gcloudignore
deleted
100644 → 0
1 | -# This file specifies files that are *not* uploaded to Google Cloud Platform | ||
2 | -# using gcloud. It follows the same syntax as .gitignore, with the addition of | ||
3 | -# "#!include" directives (which insert the entries of the given .gitignore-style | ||
4 | -# file at that point). | ||
5 | -# | ||
6 | -# For more information, run: | ||
7 | -# $ gcloud topic gcloudignore | ||
8 | -# | ||
9 | -.gcloudignore | ||
10 | -# If you would like to upload your .git directory, .gitignore file or files | ||
11 | -# from your .gitignore file, remove the corresponding line | ||
12 | -# below: | ||
13 | -.git | ||
14 | -.gitignore | ||
15 | - | ||
16 | -# Node.js dependencies: | ||
17 | -node_modules/ | ||
18 | - | ||
19 | -/node_modules | ||
20 | -/build | ||
21 | -/client/node_modules | ||
22 | - | ||
23 | -.DS_Store | ||
24 | - | ||
25 | -npm-debug.log* | ||
26 | -yarn-debug.log* | ||
27 | -yarn-error.log* | ||
28 | - | ||
29 | -.vscode | ||
30 | - | ||
31 | -dev.js | ||
32 | -./server/config/dev.js |
... | @@ -4,6 +4,4 @@ | ... | @@ -4,6 +4,4 @@ |
4 | - 뉴스 크롤링 후 이미지 사이즈 80*80 인 것을 원본으로 변환할 수 있는 방법은..? | 4 | - 뉴스 크롤링 후 이미지 사이즈 80*80 인 것을 원본으로 변환할 수 있는 방법은..? |
5 | - 구글 [Cloud Authentication](https://cloud.google.com/docs/authentication/getting-started?hl=ko) 으로 사용해서 로컬에서 실행시키는데, | 5 | - 구글 [Cloud Authentication](https://cloud.google.com/docs/authentication/getting-started?hl=ko) 으로 사용해서 로컬에서 실행시키는데, |
6 | 만약 배포를 해야한다면 이 부분은 어떻게 해야할지 ..? | 6 | 만약 배포를 해야한다면 이 부분은 어떻게 해야할지 ..? |
7 | -- 사용자 인증 기능 추가 -> 회원 등록 시 관심가수를 입력받아서 로그인 할 때마다 최신 & 정확 & 소식 을 전달해줌 / 비회원으로도 이용가능_지금과 같이 | ||
8 | ---> React Router 사용해서 /<> 에 따라서 login/register/chatpage 가 되도록 구현해야함. | ||
9 | - -> 로그인,회원가입 페이지는 Boiler-plate 사용하기.............................도전 | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
7 | +- 회원으로 로그인 했을 때, 주어진 키워드로 챗봇이 "먼저 검색"해줄 수 있도록 설정하는 방법은?! | ... | ... |
app.yaml
deleted
100644 → 0
1 | -# Copyright 2017, Google, Inc. | ||
2 | -# Licensed under the Apache License, Version 2.0 (the "License"); | ||
3 | -# you may not use this file except in compliance with the License. | ||
4 | -# You may obtain a copy of the License at | ||
5 | -# | ||
6 | -# http://www.apache.org/licenses/LICENSE-2.0 | ||
7 | -# | ||
8 | -# Unless required by applicable law or agreed to in writing, software | ||
9 | -# distributed under the License is distributed on an "AS IS" BASIS, | ||
10 | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
11 | -# See the License for the specific language governing permissions and | ||
12 | -# limitations under the License. | ||
13 | - | ||
14 | -# [START gae_flex_quickstart_yaml] | ||
15 | -runtime: nodejs10 | ||
16 | - | ||
17 | -# This sample incurs costs to run on the App Engine flexible environment. | ||
18 | -# The settings below are to reduce costs during testing and are not appropriate | ||
19 | -# for production use. For more information, see: | ||
20 | -# https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml | ||
21 | - | ||
22 | - | ||
23 | -# [END gae_flex_quickstart_yaml] |
client/app.yaml
deleted
100644 → 0
1 | -# Copyright 2017, Google, Inc. | ||
2 | -# Licensed under the Apache License, Version 2.0 (the "License"); | ||
3 | -# you may not use this file except in compliance with the License. | ||
4 | -# You may obtain a copy of the License at | ||
5 | -# | ||
6 | -# http://www.apache.org/licenses/LICENSE-2.0 | ||
7 | -# | ||
8 | -# Unless required by applicable law or agreed to in writing, software | ||
9 | -# distributed under the License is distributed on an "AS IS" BASIS, | ||
10 | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
11 | -# See the License for the specific language governing permissions and | ||
12 | -# limitations under the License. | ||
13 | - | ||
14 | -# [START gae_flex_quickstart_yaml] | ||
15 | -runtime: nodejs10 | ||
16 | - | ||
17 | - | ||
18 | -# [END gae_flex_quickstart_yaml] |
... | @@ -4,7 +4,8 @@ | ... | @@ -4,7 +4,8 @@ |
4 | "private": true, | 4 | "private": true, |
5 | "engines": { | 5 | "engines": { |
6 | "node": "10.x.x", | 6 | "node": "10.x.x", |
7 | - "npm": "6.13.4" | 7 | + "npm": "6.x", |
8 | + "yarn" : ">=1.0.0 <2.0.0" | ||
8 | }, | 9 | }, |
9 | "dependencies": { | 10 | "dependencies": { |
10 | "antd": "^3.26.5", | 11 | "antd": "^3.26.5", | ... | ... |
... | @@ -6,24 +6,54 @@ import Message from './Sections/Message'; | ... | @@ -6,24 +6,54 @@ import Message from './Sections/Message'; |
6 | import { List, Icon, Avatar } from 'antd'; | 6 | import { List, Icon, Avatar } from 'antd'; |
7 | import Card from "./Sections/Card"; | 7 | import Card from "./Sections/Card"; |
8 | import CheckString from './Check'; | 8 | import CheckString from './Check'; |
9 | -const username = "유저"; | ||
10 | 9 | ||
11 | -function getKeyword(){ | 10 | +function getUserInfo(){ |
12 | let url = window.location.href; | 11 | let url = window.location.href; |
13 | let keyword = ""; | 12 | let keyword = ""; |
13 | + let name = ""; | ||
14 | + let from = 0; | ||
15 | + let to = 0; | ||
16 | + let flag = false; | ||
14 | if(!url) return keyword; | 17 | if(!url) return keyword; |
15 | for(var i = 0; i <= url.length; i++){ | 18 | for(var i = 0; i <= url.length; i++){ |
19 | + if(flag && url[i] === '&'){ | ||
20 | + to = i; | ||
21 | + break; | ||
22 | + } | ||
16 | if(url[i] === '='){ | 23 | if(url[i] === '='){ |
17 | - keyword = url.substr(i+1); | 24 | + from = i+1; |
18 | - keyword = decodeURI(keyword); | 25 | + flag = true; |
19 | - return keyword; | ||
20 | } | 26 | } |
21 | } | 27 | } |
28 | + | ||
29 | + keyword = url.substr(from,to-from); | ||
30 | + keyword = decodeURI(keyword); | ||
31 | + name = url.substr(to+6); | ||
32 | + name = decodeURI(name); | ||
33 | + | ||
34 | + var user = { | ||
35 | + keyword, | ||
36 | + name | ||
37 | + }; | ||
38 | + | ||
39 | + return user; | ||
40 | +} | ||
41 | + | ||
42 | +const user = getUserInfo(); | ||
43 | +let username = "유저"; | ||
44 | +let userKeyword = ""; | ||
45 | + | ||
46 | +if(user.keyword){ | ||
47 | + userKeyword = user.keyword; | ||
48 | + username = user.name; | ||
22 | } | 49 | } |
23 | 50 | ||
24 | -let userKeyword = getKeyword(); | ||
25 | 51 | ||
26 | function Chatbot() { | 52 | function Chatbot() { |
53 | + console.log("이름",username); | ||
54 | + console.log("키워드",userKeyword); | ||
55 | + var isUser = false; | ||
56 | + if(userKeyword) isUser = true; | ||
27 | const dispatch = useDispatch(); | 57 | const dispatch = useDispatch(); |
28 | const messagesFromRedux = useSelector(state => state.message.messages) | 58 | const messagesFromRedux = useSelector(state => state.message.messages) |
29 | 59 | ||
... | @@ -32,11 +62,10 @@ function Chatbot() { | ... | @@ -32,11 +62,10 @@ function Chatbot() { |
32 | eventQuery('001_Welcome') | 62 | eventQuery('001_Welcome') |
33 | .then(eventQuery('002_Intro')) | 63 | .then(eventQuery('002_Intro')) |
34 | 64 | ||
35 | - }, []) | ||
36 | 65 | ||
66 | + }, []) | ||
37 | 67 | ||
38 | const textQuery = async (text) => { | 68 | const textQuery = async (text) => { |
39 | - | ||
40 | // First Need to take care of the message I sent | 69 | // First Need to take care of the message I sent |
41 | let conversation = { | 70 | let conversation = { |
42 | who: username, | 71 | who: username, | ... | ... |
... | @@ -4,3 +4,4 @@ module.exports = function(app) { | ... | @@ -4,3 +4,4 @@ module.exports = function(app) { |
4 | app.use(proxy("/api", { target: "http://localhost:5000/" })); | 4 | app.use(proxy("/api", { target: "http://localhost:5000/" })); |
5 | 5 | ||
6 | }; | 6 | }; |
7 | +//http://localhost:5000/ | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -17,10 +17,12 @@ const userInfo = async (info) => { | ... | @@ -17,10 +17,12 @@ const userInfo = async (info) => { |
17 | } | 17 | } |
18 | 18 | ||
19 | const response = await Axios.post('/api/login/userInfo', userVariables); | 19 | const response = await Axios.post('/api/login/userInfo', userVariables); |
20 | - if(response.data){ | 20 | + if(response.data != 'FAIL'){ |
21 | // loginForm.action = `/chat?${response.data}`; | 21 | // loginForm.action = `/chat?${response.data}`; |
22 | // loginForm.submit(); | 22 | // loginForm.submit(); |
23 | - window.location.href=`/chat?keyword=${response.data}`; | 23 | + var keyword = response.data.keyword; |
24 | + var name = response.data.name; | ||
25 | + window.location.href=`/chat?keyword=${keyword}&name=${name}`; | ||
24 | } else{ | 26 | } else{ |
25 | alert("입력하신 정보와 일치하는 회원이 존재하지 않습니다 😥"); | 27 | alert("입력하신 정보와 일치하는 회원이 존재하지 않습니다 😥"); |
26 | } | 28 | } | ... | ... |
... | @@ -2,9 +2,9 @@ const express = require("express"); | ... | @@ -2,9 +2,9 @@ const express = require("express"); |
2 | const path = require("path"); | 2 | const path = require("path"); |
3 | const bodyParser = require("body-parser"); | 3 | const bodyParser = require("body-parser"); |
4 | const app = express(); | 4 | const app = express(); |
5 | - | ||
6 | const config = require("./server/config/keys"); | 5 | const config = require("./server/config/keys"); |
7 | 6 | ||
7 | +app.set('trust proxy',true); | ||
8 | app.use(bodyParser.urlencoded({ extended: true })); | 8 | app.use(bodyParser.urlencoded({ extended: true })); |
9 | app.use(bodyParser.json()); | 9 | app.use(bodyParser.json()); |
10 | 10 | ||
... | @@ -32,3 +32,6 @@ const port = process.env.PORT || 5000; | ... | @@ -32,3 +32,6 @@ const port = process.env.PORT || 5000; |
32 | app.listen(port, () => { | 32 | app.listen(port, () => { |
33 | console.log(`Server Running at ${port}`) | 33 | console.log(`Server Running at ${port}`) |
34 | }); | 34 | }); |
35 | + | ||
36 | + | ||
37 | +// res.sendFile(path.resolve(__dirname, "client", "build", "index.html")); | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -4,8 +4,8 @@ | ... | @@ -4,8 +4,8 @@ |
4 | "description": "chatbot-app", | 4 | "description": "chatbot-app", |
5 | "main": "index.js", | 5 | "main": "index.js", |
6 | "engines": { | 6 | "engines": { |
7 | - "node": "10.x.x", | 7 | + "node": "10.x", |
8 | - "npm": "6.13.4" | 8 | + "npm": "6.x" |
9 | }, | 9 | }, |
10 | "scripts": { | 10 | "scripts": { |
11 | "start": "node index.js", | 11 | "start": "node index.js", |
... | @@ -19,7 +19,6 @@ | ... | @@ -19,7 +19,6 @@ |
19 | ], | 19 | ], |
20 | "license": "ISC", | 20 | "license": "ISC", |
21 | "dependencies": { | 21 | "dependencies": { |
22 | - "@google-cloud/bigquery": "^4.7.0", | ||
23 | "actions-on-google": "^2.12.0", | 22 | "actions-on-google": "^2.12.0", |
24 | "axios": "^0.19.2", | 23 | "axios": "^0.19.2", |
25 | "body-parser": "^1.18.3", | 24 | "body-parser": "^1.18.3", | ... | ... |
... | @@ -20,6 +20,10 @@ router.post('/userInfo', async(req,res)=>{ | ... | @@ -20,6 +20,10 @@ router.post('/userInfo', async(req,res)=>{ |
20 | }; | 20 | }; |
21 | 21 | ||
22 | result = getUser(simpleUserInfo); | 22 | result = getUser(simpleUserInfo); |
23 | + if(typeof(result) === 'undefined'){ | ||
24 | + result = 'FAIL' | ||
25 | + } | ||
26 | + console.log("RESULT",result) | ||
23 | res.send(result); | 27 | res.send(result); |
24 | }) | 28 | }) |
25 | 29 | ... | ... |
... | @@ -24,10 +24,13 @@ function addUser(userInfo){ | ... | @@ -24,10 +24,13 @@ function addUser(userInfo){ |
24 | function getUser(simpleUserInfo){ | 24 | function getUser(simpleUserInfo){ |
25 | let userEmail = simpleUserInfo.email; | 25 | let userEmail = simpleUserInfo.email; |
26 | let userPw = simpleUserInfo.pw; | 26 | let userPw = simpleUserInfo.pw; |
27 | - let result = ""; | 27 | + let result; |
28 | for(var i = 0; i < users.length; i++){ | 28 | for(var i = 0; i < users.length; i++){ |
29 | if(userEmail === users[i].email && userPw === users[i].pw){ | 29 | if(userEmail === users[i].email && userPw === users[i].pw){ |
30 | - result = users[i].keyword; | 30 | + result = { |
31 | + "name":users[i].name, | ||
32 | + "keyword":users[i].keyword | ||
33 | + } | ||
31 | } | 34 | } |
32 | } | 35 | } |
33 | 36 | ... | ... |
-
Please register or login to post a comment