빠른 시작: Fulfillment

이 가이드에서는 fulfillment를 사용하여 에이전트를 서비스와 통합하는 방법을 설명합니다. 서비스를 통합하면 최종 사용자 표현을 기준으로 작업을 수행하고 최종 사용자에게 동적 응답을 보낼 수 있습니다.

시작하기 전에

fulfillment를 사용할 생각이 없다면 이 빠른 시작을 건너 뛰어도 됩니다.

이 문서의 단계에서는 Cloud Functions를 사용하며 기본적인 Node.js 지식이 있다고 가정합니다. 자체 서버 또는 다른 언어를 사용하여 fulfillment를 만들려면 더 자세한 fulfillment 문서를 참조하세요.

이 가이드를 읽기 전에 다음을 수행해야 합니다.

  1. Dialogflow 기본사항 읽기
  2. 설정 단계 수행
  3. 에이전트 빌드 빠른 시작 가이드의 단계 수행하기. 아래 단계는 동일한 에이전트에서 계속 수행됩니다. 해당 에이전트가 더 이상 없다면 build-agent-quickstart.zip을 다운로드하고 파일을 가져오기할 수 있습니다.

인라인 편집기

Dialogflow 콘솔에는 인라인 편집기라는 코드 편집기가 기본으로 제공되어 fulfillment 코드를 작성하고 Cloud Functions에 배포할 수 있습니다. Cloud Functions에는 관련 요금이 있지만 상당수의 월별 호출까지 무료로 사용할 수 있습니다. 단, 유효한 결제 계정을 등록하고 제공해야 합니다. 언제든지 취소 가능합니다.

처음에 인라인 편집기를 사용 설정하면 모든 에이전트용으로 포함된 기본 인텐트의 기본 핸들러가 Node.js fulfillment 코드에 미리 입력됩니다. 또한 코드에는 개발자가 정의한 인텐트의 핸들러를 추가할 수 있도록 주석 처리된 안내가 포함되어 있습니다.

인라인 편집기는 간단한 fulfillment 테스트 및 프로토타입 제작에 사용됩니다. 프로덕션 애플리케이션을 빌드할 준비가 되면 웹훅 서비스를 만들어야 합니다.

인라인 편집기로 fulfillment 사용 설정 및 배포

인라인 편집기를 사용하여 기본 fulfillment 코드를 사용 설정하고 배포하려면 다음 안내를 따르세요.

  1. 왼쪽 사이드바 메뉴에서 fulfillment를 클릭합니다.
  2. 인라인 편집기사용 설정됨으로 전환합니다.
  3. 결제 사용 설정 단계에서 결제를 사용 설정하지 않은 경우 지금 결제를 사용 설정하라는 메시지가 표시됩니다. Cloud Functions에는 관련 요금이 있지만 상당수의 월별 호출까지 무료로 사용할 수 있습니다. 단, 결제 계정을 등록하고 제공해야 합니다. 언제든지 취소 가능합니다.
  4. 양식 하단에 있는 배포를 클릭하고 대화상자에 양식이 배포되었다고 표시될 때까지 기다립니다.

Fulfillment가 필요한 인텐트마다 인텐트에 대해 fulfillment를 사용 설정해야 합니다. 기본 시작 인텐트에 fulfillment를 사용 설정하려면 다음 안내를 따르세요.

  1. 왼쪽 사이드바 메뉴에서 인텐트를 클릭합니다.
  2. 기본 시작 인텐트를 클릭합니다.
  3. Fulfillment 섹션으로 스크롤해서 이 인텐트의 웹훅 호출 사용 설정으로 전환합니다.

  4. 저장 버튼을 클릭하고 에이전트 학습 대화상자가 학습이 완료되었음을 표시할 때까지 기다립니다.

이제 시뮬레이터에서 fulfillment를 테스트할 수 있습니다. 시뮬레이터에 Hi를 입력하고 Welcome to my agent!로 응답합니다. 이 응답은 방금 배포한 fulfillment 웹훅에서 전송된 것입니다. 특히 이 응답은 다음 코드에서 온 것입니다.

function welcome(agent) {
  agent.add(`Welcome to my agent!`);
}

커스텀 fulfillment 핸들러 만들기

위 단계에서는 기본 인라인 편집기 코드가 제공하는 핸들러를 사용합니다. 커스텀 핸들러를 만들려면 다음 안내를 따르세요.

  1. 이전 단계에서 만든 get-agent-name 인텐트에 fulfillment를 사용 설정합니다.
  2. 왼쪽 사이드바 메뉴에서 fulfillment를 클릭하고 인라인 편집기에서 코드를 살펴봅니다.
  3. 다음 줄을 찾습니다.

    exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
    

    onRequest 함수는 Dialogflow의 모든 요청을 처리합니다. 이 함수의 본문 내에서 특정 핸들러 함수가 정의됩니다. 이러한 핸들러 함수는 연결된 인텐트가 일치될 때 호출됩니다. 예를 들어 이전 섹션에 사용된 함수는 function welcome(agent)입니다.

  4. 기존 핸들러 아래에서 get-agent-name 인텐트에 대해 이 함수를 추가합니다.

    function getAgentNameHandler(agent) {
      agent.add('From fulfillment: My name is Dialogflow!');
    }
    
  5. 핸들러 함수 정의 아래에 intentMap.set() 호출이 있습니다. 이러한 호출은 특정 핸들러를 이름별로 인텐트와 연결합니다. 예를 들어 intentMap.set('Default Welcome Intent', welcome)welcome 핸들러를 이름이 Default Welcome Intent인 인텐트와 연결합니다.

  6. 기존 intentMap.set 호출 아래에서 get-agent-name 인텐트에 다음 줄을 추가합니다.

    intentMap.set('get-agent-name', getAgentNameHandler);
    
  7. 양식 하단의 배포를 클릭합니다.

  8. 시뮬레이터에 What's your name?을 입력합니다. From fulfillment: My name is Dialogflow! 응답이 새 핸들러에서 전송됩니다.

매개변수 값 액세스

이전 단계에서는 인간 및 프로그래밍 언어를 식별하는 set-language 인텐트를 만들었습니다. 이 인텐트에는 languagelanguage-programming 매개변수가 사용됩니다. 이 섹션에서는 fulfillment 핸들러에서 이러한 매개변수의 값에 액세스합니다.

핸들러를 추가하려면 다음 안내를 따르세요.

  1. set-language 인텐트에 fulfillment를 사용 설정합니다.
  2. 왼쪽 사이드바 메뉴에서 fulfillment를 클릭합니다.
  3. 위 단계와 비슷하게 다음 핸들러와 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);
    
  4. 배포를 클릭합니다.

이 핸들러는 languagelanguage-programming 매개변수를 가져오고 이를 변수에 저장합니다. 최종 사용자가 요청에 지정하는 모든 매개변수 이름 및 값이 포함된 객체인 agent.parameters 속성에서 이러한 값을 가져옵니다.

시험하려면 시뮬레이터에 I know how to speak German을 입력합니다.