-
ChatBot 만들기 - 2) textQuery route와 eventQuery route만들기NODE.JS 2021. 5. 15. 09:25
클라이언트가 뭔가를 입력해서 server에 알리면 서버는 그것을 dialogflowAPI에게 보내고 이를 처리해서 다시 서버에 보낸다.
그리고 서버는 다시 클라이언트에게 반응을 보내준다.
여기서 client랑 소통하는 route는 2개인데,
클라이언트의 입력이 있는 경우에는 text query route가 실행되고,
입력이 없는 경우에는 event query router가 실행되어 "무엇을 도와드릴까요?"와 같은 문장을 실행한다. (대화 초기)
순서 먼저 dependency를 다운받기 위해서 npm install 을 하자.
client 폴더에 가서도 npm install을 해준다.
우선 server의 index.js에 가서 다음의 문장을 넣어준다.
app.use('/api/dialogflow', require('./server/routes/dialogflow'));
routes폴더 안에 dialogflow.js파일을 만들어주고 그 다음 두개의 route를 만들어 준다.
우선 dialogflow를 어떻게 사용하는지는 다음의 사이트에서 확인할 수 있다 .
https://www.npmjs.com/package/dialogflow
dialogflow
Dialogflow API client for Node.js
www.npmjs.com
text route부터 만들어준다.
const express = require('express'); const router = express.Router(); const structjson = require('./structjson.js'); const dialogflow = require('dialogflow'); const uuid = require('uuid'); const config = require('../config/keys'); const projectId = config.googleProjectID const sessionId = config.dialogFlowSessionID const languageCode = config.dialogFlowSessionLanguageCode // Create a new session const sessionClient = new dialogflow.SessionsClient(); const sessionPath = sessionClient.sessionPath(projectId, sessionId); // We will make two routes // Text Query Route //await 은 async router.post('/textQuery', async (req, res) => { //We need to send some information that comes from the client to Dialogflow API // The text query request. const request = { session: sessionPath, queryInput: { text: { // The query to send to the dialogflow agent 입력되는 것에 따라서 나와야 한다. (bodyparser이용해서 body이용한다.) text: req.body.text, // The language used by the client (en-US) 모드에 따라서 정의되어 있는 것으로 가져온다. languageCode: languageCode, }, }, }; // Send request and log result 여기서 responses들이 우리가 클라이언트한테 보여줘야 하는 것을 뜻한다. const responses = await sessionClient.detectIntent(request); console.log('Detected intent'); const result = responses[0].queryResult; console.log(` Query: ${result.queryText}`); console.log(` Response: ${result.fulfillmentText}`); res.send(result)//프론트엔드에게 결과를 보내준다. })
우리는 아직 클라이언트가 없기 때문에 postman을 이용해서 등록해볼 것이다.
포스트맨에서 입력하면 결과를 보내준다. event query도 만들어보자.
//Event Query Route router.post('/eventQuery', async (req, res) => { //We need to send some information that comes from the client to Dialogflow API // The text query request. const request = { session: sessionPath, queryInput: { event: {//여기서 text가 아닌 event를 보낸다.(text를 입력하지 않아서 없다) // The query to send to the dialogflow agent name: req.body.event, // The language used by the client (en-US) languageCode: languageCode, }, }, }; // Send request and log result const responses = await sessionClient.detectIntent(request); console.log('Detected intent'); const result = responses[0].queryResult; console.log(` Query: ${result.queryText}`); console.log(` Response: ${result.fulfillmentText}`); res.send(result) })
똑같이 포스트맨을 이용해서 해보자.
우리가 메세지를 보내기 전에 먼저 실행이 되어야 할 것이다 .
여기서 우리가 dialogflow에 가서 이벤트 설정을 해주어야한다.
intent 만들기 add event -> welcome response 설정 intent 네임 설정 후 저장 포스트맨에서 event 네임을 그대로 입력해주면,
콘솔창에 반응이 뜬 것을 확인할 수 있다. 'NODE.JS' 카테고리의 다른 글
ChatBot 만들기 - 4) card 메세지 나타내기 (0) 2021.05.15 ChatBot 만들기 - 3)frontend template 만들기 (textQuery, eventQuery Function + 리덕스로 메세지 저장하고 보여주기) (0) 2021.05.15 ChatBot 만들기 - 1)dialogflow setting (0) 2021.05.15 Youtube 만들기 - 11) 좋아요, 싫어요 기능 만들기 (0) 2021.05.15 Youtube 만들기 - 10) 댓글 기능 만들기 (0) 2021.05.14