Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- katalon 사용법
- oracle group by
- 한국투자증권 해외주식 양도세
- js 자동완성
- 국세청 해외주식 양도세 신고방식
- katalon xpath
- katalon 비교
- katalon
- 홈택스 해외주식 양도세
- 재귀 예제
- CSTS 폭포수 모델
- git 연동
- katalon 자동화
- 재귀함수 예제
- 해외주식 양도세 신고
- javascript 자동완성
- 피보나치 예제
- tomcat log
- 테스트 자동화
- 주식 양도세 신고방법
- 피보나치함수
- 해외증권 양도세 한국투자증권
- 최대공약수 예제
- recursion example
- 피보나치함수 예제
- java.sql.SQLSyntaxErrorException
- 한국투자증권 양도세 신고
- 톰캣 실시간 로그
- bfs 미로탐색 java
- Katalon Recorder 사용법
Archives
- Today
- Total
엄지월드
챗봇 구축 본문
1. 카카오 i에서 폴백 블록에서 "스킬데이터 사용" 설정 진행
2. 서버에서 받을 API 주소 입력
3. 서버에서 POST로 http://domain/api/message API 구현
var express = require("express"); // 필수
var router = express.Router(); // 필수
var moment = require('moment'); // 시간 가져오기
var app = express();
const Bot = require('../bot.js'); // bot.js
router.post('/api/message', function(req, res) {
const message = req.body.userRequest.utterance; // 유저의 문의 내용
const id = req.body.userRequest.user.id; // 암호화된 유저의 고유 id
var bot_name = req.body.bot.name; // 카카오아이 botName
var responseBody = "";
try{
bot.sendToDialogflow(message, id).then(result => {
var isFallback = result[0].queryResult.intent.isFallback; // Fallback 인지에 대해서 return 받음
var answer = result[0].queryResult.fulfillmentMessages[0].text.text[0]; // 나간 답변
var displayName = result[0].queryResult.intent.displayName; // intent의 displayName
...
...
if(isFallback){
responseBody = {
version: '2.0',
template: {
outputs: [
{
simpleText: {
text: result[0].queryResult.fulfillmentMessages[0].text.text[0]
}
}
],
quickReplies: [
{
label: '예시보기',
action: 'message',
messageText: '예시보기'
}
]
}
};
}
}).catch(
error => { console.log(error);}
);
res.status(200).send(responseBody);
}catch(e){
console.log(e);
}
});
Dialogflow와 통신을 위한 bot.js 구성
const dialogflow = require('dialogflow');
const fs = require('fs');
class Dialogflow {
constructor (projectId, keyFile) {
this.projectId = projectId;
const keyfile = JSON.parse(fs.readFileSync(keyFile));
let privateKey = keyfile['private_key'];
let clientEmail = keyfile['client_email'];
let config = {
credentials : {
private_key: privateKey,
client_email: clientEmail
}
};
this.sessionClient = new dialogflow.SessionsClient(config);
try{
}catch(e){
console.log('bot.js Err2:'+e);
}
}
async sendToDialogflow (text, sessionId) {
try{
const sessionPath = this.sessionClient.sessionPath(this.projectId, sessionId);
const request = {
session: sessionPath,
queryInput: {
text: {
text: text,
languageCode: 'ko-KR'
}
}
};
return await this.sessionClient.detectIntent(request);
}catch(e){
console.log('bot.js Err2:'+e);
}
}
}
module.exports = Dialogflow;
'Node.js' 카테고리의 다른 글
undefined:1 Error (Unexpected end of JSON input ) (0) | 2021.02.27 |
---|---|
node ERR_UNESCAPED_CHARACTERS('Request path'); (0) | 2021.02.27 |
node 다른 파일 코드 참조 (0) | 2020.01.19 |
node를 이용한 excel 파일 생성 예제 (0) | 2019.09.12 |
node를 이용한 API 호출 시 body 값 설정 방법 (0) | 2019.09.07 |
Comments