이 가이드에서는 fulfillment를 사용하여 에이전트를 서비스와 통합하는 방법을 설명합니다. 서비스를 통합하면 최종 사용자 표현을 기준으로 작업을 수행하고 최종 사용자에게 동적 응답을 보낼 수 있습니다.
시작하기 전에
fulfillment를 사용할 생각이 없다면 이 빠른 시작을 건너 뛰어도 됩니다.
이 문서의 단계에서는 Cloud Functions를 사용하며 기본적인 Node.js 지식이 있다고 가정합니다. 자체 서버 또는 다른 언어를 사용하여 fulfillment를 만들려면 더 자세한 fulfillment 문서를 참조하세요.
이 가이드를 읽기 전에 다음을 수행해야 합니다.
- Dialogflow 기본사항 읽기
- 설정 단계 수행
- 에이전트 빌드 빠른 시작 가이드의 단계 수행하기.
아래 단계는 동일한 에이전트에서 계속 수행됩니다.
해당 에이전트가 더 이상 없다면
build-agent-quickstart.zip
을 다운로드하고 파일을 가져오기할 수 있습니다.
인라인 편집기
Dialogflow 콘솔에는 인라인 편집기라고 하는 기본 제공 코드 편집기가 있으며 이 편집기를 사용하여 fulfillment 코드를 만들고 코드를 Cloud Functions에 배포할 수 있습니다. Cloud Functions에는 관련 요금이 있지만 상당수의 월별 호출까지 무료로 사용할 수 있습니다. 단, 유효한 결제 계정을 등록하고 제공해야 합니다. 언제든지 취소할 수 있습니다.
처음에 인라인 편집기를 사용 설정하면 모든 에이전트용으로 포함된 기본 인텐트의 기본 핸들러가 Node.js fulfillment 코드에 미리 입력됩니다. 또한 코드에는 개발자가 정의한 인텐트의 핸들러를 추가할 수 있도록 주석 처리된 안내가 포함되어 있습니다.
인라인 편집기는 간단한 fulfillment 테스트 및 프로토타입 제작에 사용됩니다. 프로덕션 애플리케이션을 빌드할 준비가 되면 웹훅 서비스를 만들어야 합니다.
인라인 편집기로 fulfillment 사용 설정 및 배포
인라인 편집기를 사용하여 기본 fulfillment 코드를 사용 설정하고 배포하려면 다음 안내를 따르세요.
- 왼쪽 사이드바 메뉴에서 fulfillment를 클릭합니다.
- 인라인 편집기를 사용 설정됨으로 전환합니다.
- 결제 사용 설정 단계에서 결제를 사용 설정하지 않은 경우 지금 결제를 사용 설정하라는 메시지가 표시됩니다. Cloud Functions에는 관련 요금이 있지만 상당수의 월별 호출까지 무료로 사용할 수 있습니다. 단, 결제 계정을 등록하고 제공해야 합니다. 언제든지 취소할 수 있습니다.
- 양식 하단에 있는 배포를 클릭하고 대화상자에 양식이 배포되었다고 표시될 때까지 기다립니다.
Fulfillment가 필요한 인텐트마다 인텐트에 대해 fulfillment를 사용 설정해야 합니다. 기본 시작 인텐트에 fulfillment를 사용 설정하려면 다음 안내를 따르세요.
- 왼쪽 사이드바 메뉴에서 인텐트를 클릭합니다.
- 기본 시작 인텐트를 클릭합니다.
Fulfillment 섹션으로 스크롤해서 이 인텐트의 웹훅 호출 사용 설정으로 전환합니다.
저장 버튼을 클릭하고 에이전트 학습 대화상자가 학습이 완료되었음을 표시할 때까지 기다립니다.
이제 시뮬레이터에서 fulfillment를 테스트할 수 있습니다.
시뮬레이터에 Hi
를 입력하고 Welcome to my agent!
로 응답합니다.
이 응답은 방금 배포한 fulfillment 웹훅에서 전송된 것입니다.
특히 이 응답은 다음 코드에서 온 것입니다.
function welcome(agent) { agent.add(`Welcome to my agent!`); }
커스텀 fulfillment 핸들러 만들기
위 단계에서는 기본 인라인 편집기 코드가 제공하는 핸들러를 사용합니다. 커스텀 핸들러를 만들려면 다음 안내를 따르세요.
- 이전 단계에서 만든
get-agent-name
인텐트에 fulfillment를 사용 설정합니다. - 왼쪽 사이드바 메뉴에서 fulfillment를 클릭하고 인라인 편집기에서 코드를 살펴봅니다.
다음 줄을 찾습니다.
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
onRequest
함수는 Dialogflow의 모든 요청을 처리합니다. 이 함수의 본문 내에서 특정 핸들러 함수가 정의됩니다. 이러한 핸들러 함수는 연결된 인텐트가 일치될 때 호출됩니다. 예를 들어 이전 섹션에 사용된 함수는function welcome(agent)
입니다.기존 핸들러 아래에서
get-agent-name
인텐트에 대해 이 함수를 추가합니다.function getAgentNameHandler(agent) { agent.add('From fulfillment: My name is Dialogflow!'); }
핸들러 함수 정의 아래에
intentMap.set()
호출이 있습니다. 이러한 호출은 특정 핸들러를 이름별로 인텐트와 연결합니다. 예를 들어intentMap.set('Default Welcome Intent', welcome)
는welcome
핸들러를 이름이Default Welcome Intent
인 인텐트와 연결합니다.기존
intentMap.set
호출 아래에서get-agent-name
인텐트에 다음 줄을 추가합니다.intentMap.set('get-agent-name', getAgentNameHandler);
양식 하단의 배포를 클릭합니다.
시뮬레이터에
What's your name?
을 입력합니다.From fulfillment: My name is Dialogflow!
응답이 새 핸들러에서 전송됩니다.
매개변수 값 액세스
이전 단계에서는 인간 및 프로그래밍 언어를 식별하는 set-language
인텐트를 만들었습니다.
이 인텐트에는 language
및 language-programming
매개변수가 사용됩니다.
이 섹션에서는 fulfillment 핸들러에서 이러한 매개변수의 값에 액세스합니다.
핸들러를 추가하려면 다음 안내를 따르세요.
set-language
인텐트에 fulfillment를 사용 설정합니다.- 왼쪽 사이드바 메뉴에서 fulfillment를 클릭합니다.
위 단계와 비슷하게 다음 핸들러와
intentMap
호출을 추가합니다.function languageHandler(agent) { const language = agent.parameters.language; const programmingLanguage = agent.parameters['language-programming']; if (language) { agent.add(`From fulfillment: Wow! I didn't know you knew ${language}`); } else if (programmingLanguage) { agent.add(`From fulfillment: ${programmingLanguage} is cool`); } else { agent.add(`From fulfillment: What language do you know?`); } }
intentMap.set('set-language', languageHandler);
배포를 클릭합니다.
이 핸들러는 language
및 language-programming
매개변수를 가져오고 이를 변수에 저장합니다.
최종 사용자가 요청에 지정하는 모든 매개변수 이름 및 값이 포함된 객체인 agent.parameters
속성에서 이러한 값을 가져옵니다.
시험하려면 시뮬레이터에 I know how to speak German
을 입력합니다.