NodeJS 응용 프로그램에서 Dialogflow API 사용
개요
구글에서 온 Dialogflow는'자연 언어 이해 플랫폼'으로 응용 프로그램에서'대화 인터페이스'를 쉽게 통합할 수 있다.이것은 자연 언어 이해 능력을 가진 로봇과 응용 프로그램 사용자의 상호작용을 훈련하는 것과 기본적으로 같다.만약 우리가 많은 가능한 사용자의 의도 중의 하나를 이해하고 현지에 맞게 요구를 만족시킬 수 있는 방법을 필요로 한다면, 이것은 도움이 될 것이다.만약 우리가 식당을 위해 프로그램을 만들었다면, 그것은 주문을 받고 그것을 대기열에 넣을 것이다.우리는 Dialogflow 형식의 대화 인터페이스를 사용하여 사용자의 입력을 제시하고 응답을 기록할 수 있으며, 에이전트가 그들의 요청을 해석할 수 없으면, 다시 제시할 수 있으며, 마지막으로 모든 필요한 정보를 기록한 후에 주문서를 제출할 수 있습니다.주문을 하려는 사람이 있을지도 몰라요.아마도 누군가가 주문서를 검사해서 물건을 인출할 수 있는지 등등을 보고 있을 것이다.
Dialogflow 에이전트 분해
우리는 최종 사용자와의 대화를 처리하기 위해 프록시를 사용합니다.대리가 사용자의 대화'의도'를 식별하고 어떻게 적당한 대답을 하는지 훈련할 수 있다.Dialogflow ES 문서에 따르면 "의도는 최종 사용자가 대화 라운드에 대한 의도를 분류합니다."사용자의 의도를 찾으면 그들이 도대체 무엇을 원하는지 알 수 있다.Dialogflow 에이전트가 의도를 식별하는 방식은 트레이닝 단어와 특정한 파라미터를 식별하는 조합입니다.우리는 우리가 이해해야 할 내용을 대리적으로 이해하도록 훈련하는 단어와 파라미터를 제공했다.다음은 기본 환영 의도 또는 인사 의도에 속하는 훈련 구문 예입니다.
이 구문 중 하나가 직접 일치하면 예약된 응답을 선택하고 사용자에게 되돌려줍니다.의도가 식별되었고 응답을 받았습니다.
프록시가 의도를 확인하는 데 도움을 주는 또 다른 방법은 단어나 단어의 종류인 일부 파라미터를 제공하는 것입니다. 프록시가 의도를 식별하는 데 도움이 됩니다.하나의 종류를 만든 후, 우리는 이 종류에 속하는 다른 가능한 값을 일일이 열거할 수 있다.그 중 하나를 식별하면 에이전트는 어떤 의도를 전달하고 있다고 가정하고 적당한 응답을 선택할 것입니다.
듣기에 괜찮다!이제 Dialogflow 에이전트를 간단한 노드에 통합하는 방법을 살펴보겠습니다.js 응용 프로그램.
우선, 우리는 응용 프로그램이 필요하다.이 작업을 수행하기 위해 Express For NodeJS 백엔드와 ReactJS 백엔드를 포함하는 매우 간단한 프로그램을 만들었습니다. 이 백엔드는 텍스트 상자와 메시지 목록을 보여 줍니다.이것은 Dialogflow 프록시와 통신하는 데 사용할 형식입니다.우리는 이 메시지가 서버에 전달되고 서버는 에이전트에 연락하며 에이전트는 요청을 분석하고 응답을 되돌려줍니다.
응용 프로그램이 이미 준비가 다 되었으니, 우리 에이전트를 만들기 시작합시다.
우선 Dialogflow 콘솔에 들어가겠습니다.
우리는 왼쪽 상단의 메뉴를 선택하고 "새 프록시 만들기"를 선택합니다
여기에서 기본 설정으로 만든 다음 DemoBot으로 이름을 지정합니다.
걸출했어우리의 로봇은 기본적인 환영 의도를 가지고 있다!우리는 다음 글에서 사용 의도에 관한 더 많은 내용을 볼 것이다.API를 통해 프록시에 초기 요청을 보낼 때 "hello"를 보내고 저희의 의도를 "default welcome"로 등록합니다.
이제 구글 개발자 컨트롤러로 들어가겠습니다.만약 구글 개발자의 컨트롤러가 없다면, 컨트롤러를 만드는 것은 매우 쉽다.이것은 당신이 모든 프로젝트를 관리하는 컨트롤러입니다.Dialogflow 에이전트를 만들면 콘솔에 프로젝트가 생성됩니다.
콘솔에서 demo를 검색하고 DemoBot을 팝업합니다.나는 이 항목을 선택했다.
이제api를 사용할 때가 되었습니다.프로젝트의 대시보드에서 "API 및 서비스 활성화"를 클릭했습니다.
그런 다음 Dialogflow를 검색하여 사용할 수 있습니다.
좋다간단해.
자격 증명 화면으로 이동하여 이 프로젝트의 서비스 계정이 있음을 확인하십시오.이것은 자동으로 생성됩니다.지금 서비스 계정의 전자 메일을 누르십시오.애플리케이션에서 DemoBot API를 호출하는 데 사용할 자격 증명이 필요합니다.
나열된 키의 위치로 아래로 스크롤합니다.[키 추가] 를 클릭하고 [새 키 만들기] 를 선택한 다음 JSON 옵션을 선택합니다.이것은 자동으로 json 파일을 로컬 컴퓨터로 다운로드합니다.이 점을 잊지 마라!이것은 우리의 것이다.서비스json 파일.
지금 우리는 NodeJS 응용 프로그램에 들어갔습니다. 우리는 이곳에서 우리의 로봇과 연락하는 데 필요한 모든 것을 가지고 있습니다!우선, 우리는 반드시 보충해야 한다.서비스루트 디렉터리의 json.Dialogflow에서 다운로드한 JSON 파일을 복사하여 붙여넣습니다.
그런 다음 Google\u Application\u 자격 증명을 에 추가합니다.env 파일을 가리킵니다.서비스우리가 위에서 만든 json 파일입니다.
요청이 들어오면 구글은 이 파일을 보고 증거를 얻으려고 한다는 것을 자동으로 알게 된다.이 모든 것은 너를 위해 준비한 것이다.
그리고 저희가 https://github.com/googleapis/nodejs-dialogflow 에 있는 이 파일을 사용합니다.
나는 그것을 채팅 로봇 조수라는 파일에 넣었다.그리고 나서 나는 그것을 내보내서 나의 요청 처리 프로그램에 가져왔다.이 파일은 "runSample"이라는 함수를 포함하고 있으며, 프록시와 통신을 시작하는 모든 정확한 설정을 포함합니다.우리는 이곳에서 몇 가지 내용을 편집해야 한다.
여기서 유일하게 변경해야 할 것은 함수 매개 변수의 실제 항목 id입니다.나는 나의 프로젝트 id를 저장한다.env를 여기에 가져옵니다.잠시 후,message라는 매개 변수를 추가하고text에 전달할 것입니다.queryInput 객체의 텍스트입니다.
const dialogflow = require('@google-cloud/dialogflow');
const uuid = require('uuid');
require("dotenv").config();
const { PROJECT_ID } = process.env;
/**
* Send a query to the dialogflow agent, and return the query result.
* @param {string} projectId The project to be used
*/
async function runSample(projectId = PROJECT_ID) {
// A unique identifier for the given session
const sessionId = uuid.v4();
// Create a new session
const sessionClient = new dialogflow.SessionsClient();
const sessionPath = sessionClient.projectAgentSessionPath(projectId, sessionId);
// The text query request.
const request = {
session: sessionPath,
queryInput: {
text: {
// The query to send to the dialogflow agent
text: 'hello',
// The language used by the client (en-US)
languageCode: 'en-US',
},
},
};
// Send request and log result
const responses = await sessionClient.detectIntent(request);
const result = responses[0].queryResult;
if (result.intent) {
console.log(` Intent: ${result.intent.displayName}`);
} else {
console.log(` No intent matched.`);
}
return result;
}
module.exports = {
runSample
}
달리기를 확실하게 하세요.npm install @google-cloud/dialogflow
제가 여기서 변경한 유일한 변경 사항은 프로젝트 ID를dotenv에 두는 것입니다. (프로젝트 ID는.service.json 파일에 포함되어 있습니다.) 결과를 되돌려주고 프록시에서 결과를 되돌려주며 이 함수를 내 루트 프로세서에서 사용할 수 있도록 내보냅니다.나는 몇 개의 컨트롤러를 남겼다.로그인은 우리가 찾는 요소를 설명하는 데 도움이 되기 때문이다.모든 유용한 정보를 포함하는 대상은 변수 "result"로 설정됩니다.우리가 새 대리에게 요청을 보냈을 때 무엇을 얻었는지 봅시다!queryText는 저희가 보냈습니다.fulfillmentText는 저희 에이전트가 답장했습니다.우리는 이미 채팅 로봇과 통신을 시작할 준비가 되어 있다.
다음 일은runSample에 메시지 파라미터를 추가하면 사용자 입력을 에이전트에 보낼 수 있습니다.
async function runSample(projectId = PROJECT_ID, message) {
const sessionId = uuid.v4();
const sessionClient = new dialogflow.SessionsClient();
const sessionPath = sessionClient.projectAgentSessionPath(projectId, sessionId);
const request = {
session: sessionPath,
queryInput: {
text: {
text: message,
languageCode: 'en-US',
},
},
};
const responses = await sessionClient.detectIntent(request);
const result = responses[0].queryResult;
return responses[0].queryResult;
}
현재, 우리가 텍스트 상자를 통해 메시지를 보낼 때, 이것은 우리의 요청 처리 프로그램에서 수신되고, 함수runSample을 호출합니다. 이 함수는dialogflow 에이전트의 기본 환영 의도를 누르고, 그 중 하나의 기본 응답을 우리에게 중계합니다.chatbot.get('/', (req, res) => {
runSample(PROJECT_ID, req.query.message)
.then((data) => {
res.send(data);
})
.catch((err) => console.log(err));
})
결과는 다음과 같다!결론
한 마디로 하면 Dialogflow 에이전트를 설정하는 것은 매우 쉬우며 NodeJ를 통해 에이전트를 사용하여 대화를 시작하는 것도 마찬가지로 간단하다.
Reference
이 문제에 관하여(NodeJS 응용 프로그램에서 Dialogflow API 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/maxwellboecker/using-the-dialogflow-api-in-your-nodejs-app-4hd8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)