플로우를 사용하여 에이전트 빌드

이 가이드에서는 Dialogflow CX 콘솔을 사용하고 흐름에 따라 간단한 셔츠 주문 에이전트를 빌드하고 테스트하는 방법을 보여줍니다. 이 에이전트와 상호작용할 때 매장 위치를 묻고, 영업시간을 확인하거나, 셔츠를 주문할 수 있습니다.

이 가이드의 완료된 에이전트는 다음과 같이 콘솔에 그래프로 표시됩니다.

에이전트 그래프 스크린샷

시작하기 전에

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

  1. 흐름 기본사항 읽기
  2. 설정 단계 수행

에이전트 만들기

이 가이드의 새 에이전트를 만들려면 다음 안내를 따르세요.

  1. Dialogflow CX 콘솔을 엽니다.
  2. 프로젝트를 만들거나 선택합니다.
  3. 에이전트 만들기를 클릭합니다.
  4. 직접 만들기를 선택합니다.
  5. 기본 에이전트 설정 양식을 작성합니다.
    1. 어떤 표시 이름이든 선택할 수 있습니다.
    2. 선호하는 위치를 선택합니다. 고급 위치 설정을 변경하려면 수정 버튼을 클릭합니다.
    3. 원하는 시간대를 선택합니다.
    4. 에이전트의 기본 언어를 선택합니다.
    5. 선택사항으로 Stackdriver Logging을 사용 설정합니다.
  6. 저장을 클릭합니다.

선택적 에이전트 가져오기

이 가이드에서는 간단한 셔츠 주문 에이전트를 빌드하는 단계를 안내합니다. 콘솔 단계를 건너뛰려면 에이전트를 다운로드하고 가져올 수 있습니다.

기본 흐름 및 인텐트

다음 흐름과 인텐트는 자동으로 새 에이전트에 생성됩니다. 관리인텐트를 차례로 클릭하여 인텐트를 찾을 수 있습니다. 빌드를 클릭하면 흐름을 찾을 수 있습니다.

용어 정의
기본 시작 인텐트 기본 시작 인텐트에는 초기 최종 사용자 입력과 일치시키기 위한 'Hi' 또는 'Hello'와 같은 간단한 학습 문구가 있습니다. 이 인텐트를 원하는 대로 수정할 수 있습니다.
기본 제외 인텐트 기본 제외 인텐트를 사용하여 이 인텐트에 제외 예시 역할을 하는 학습 문구를 추가할 수 있습니다.
기본 시작 흐름 기본 시작 흐름을 유일한 흐름으로 사용할 수 있습니다. 이 가이드에서 사용되는 유일한 흐름입니다. 보다 복잡한 에이전트의 경우 흐름을 추가할 수 있습니다. 이 흐름에는 인텐트 요구사항인 기본 시작 인텐트가 포함된 기본 인텐트 경로가 있습니다.

기본 환영 응답 메시지 테스트

기본 흐름 및 인텐트는 환영 메시지만 있는 기본 대화를 처리할 수 있습니다. 새 에이전트를 테스트하려면 다음 안내를 따르세요.

  1. 테스트 에이전트 버튼을 클릭하여 시뮬레이터를 엽니다.
  2. 텍스트 입력란에 hello를 입력하고 Enter 키를 누릅니다.
  3. 에이전트는 기본 환영 응답으로 응답합니다.
  4. 시뮬레이터를 닫습니다.

시뮬레이터 스크린샷

이 최종 사용자 입력을 위해 에이전트가 다음 단계를 수행했습니다.

  1. 입력을 제공할 때 기본 시작 흐름은 활성 흐름이며 흐름의 시작 페이지는 활성 페이지였습니다. 활성 흐름에 적용된 각 상태 핸들러는 범위내에 있으므로 에이전트가 이를 평가했습니다.
  2. 평가된 경로 중 하나에는 인텐트 요구사항으로 기본 시작 인텐트가 있습니다. 사용자 입력과 인텐트가 일치되어 경로가 호출되었습니다.
  3. 호출된 경로에는 여러 fulfillment 응답 메시지가 있습니다. 에이전트는 무작위로 하나를 선택하여 응답 큐에 추가했습니다.
  4. 호출된 경로에 전환 타겟이 없으므로 활성 흐름과 페이지가 변경되지 않았습니다.
  5. 에이전트가 응답 큐의 콘텐츠로 응답했습니다.

환영 응답 메시지 수정

이 환영 메시지를 변경할 수 있습니다. 환영 응답 메시지를 수정하려면 다음 안내를 따르세요.

  1. 빌드 탭을 클릭합니다.
  2. 흐름 섹션에서 기본 시작 흐름을 선택합니다.
  3. 그래프에서 시작 노드를 클릭합니다. 기본 시작 흐름의 시작 페이지입니다.
  4. 인텐트 요구사항으로 기본 시작 인텐트가 있는 인텐트 경로를 찾아 클릭합니다. 그러면 인텐트 경로 정보를 수정할 수 있는 패널이 열립니다.
  5. fulfillment 섹션을 찾아 모든 응답 메시지를 삭제한 후 Hello, this is a shirt ordering virtual agent. How can I help you?를 유일한 응답으로 추가합니다.
  6. 저장을 클릭합니다.
  7. 인텐트 경로 수정 패널을 닫습니다.

에이전트 응답 스크린샷

업데이트된 환영 응답 메시지 테스트

업데이트된 응답을 테스트하려면 다음 안내를 따르세요.

  1. 테스트 에이전트 버튼을 클릭하여 시뮬레이터를 엽니다.
  2. 텍스트 입력란에 hello를 입력하고 Enter 키를 누릅니다.
  3. 에이전트가 새 메시지로 응답합니다.
  4. 시뮬레이터를 닫습니다.

매장 위치 페이지

대화형 에이전트(Dialogflow CX) 대화(세션)를 상태 머신으로 설명하고 시각화할 수 있습니다. CX 세션의 상태는 페이지로 표시됩니다. 지금까지는 페이지가 하나뿐이므로 에이전트가 그다지 유용하지 않았습니다. 이 섹션에서는 매장 위치에 대한 질문을 처리하는 다른 페이지를 만듭니다.

위치 인텐트 만들기

인텐트는 대화 차례 1회에서 최종 사용자의 의도를 분류합니다. 최종 사용자 입력이 매장 위치를 요청할 때 일치하는 인텐트를 만들려면 다음 안내를 따르세요.

  1. 관리 탭을 선택합니다.
  2. 인텐트를 클릭합니다.
  3. 만들기를 클릭합니다.
  4. 인텐트 표시 이름으로 store.location을 입력합니다.
  5. 다음 학습 문구를 입력합니다.
    • Where is the store?
    • Directions
    • Tell me the address
    • Where do I pick up my order?
    • How do I get there?
    • Where is the store located?
    • What street are you on?
    • What is your address?
    • How do I get to your store?
    • Where are you located?
  6. 저장을 클릭합니다.

인텐트 스크린샷

위치 페이지 만들기

이제 새 페이지를 만듭니다. 페이지가 활성화될 때마다 호출되는 항목 fulfillment를 이 페이지에 추가할 수 있습니다. 이 항목 fulfillment에는 매장의 위치를 제공하는 응답 메시지가 있어야 합니다. 매장 위치 페이지를 만드는 방법은 다음과 같습니다.

  1. 빌드 탭을 클릭합니다.
  2. 흐름 섹션에서 기본 시작 흐름을 선택합니다.
  3. 페이지 섹션에서 추가 버튼을 클릭합니다. 페이지 표시 이름에 대한 텍스트 항목이 나타납니다.
  4. 페이지 표시 이름으로 Store Location을 입력하고 Enter 키를 누릅니다.
  5. 페이지 표시 이름 옆에 있는 옵션 버튼을 클릭합니다.
  6. 수정을 선택하여 페이지 수정 패널을 엽니다.
  7. fulfillment 입력을 찾아 fulfillment 수정을 클릭합니다.
  8. 에이전트 말하기 입력란에 Our store is located at 1007 Mountain Drive, Gotham City, NJ.를 입력합니다.
  9. 저장을 클릭합니다.
  10. 페이지 수정 패널을 닫습니다.

페이지 스크린샷

흐름에 위치 인텐트 경로 추가

이제 전환 대상인 매장 위치 페이지가 있는 경로를 만들어야 합니다. 이 경로가 호출되면 세션이 매장 위치 페이지로 전환됩니다. 이 경로는 기본 시작 흐름에 적용되므로 흐름이 활성화된 상태 동안 범위 내에 있습니다. 즉, 단일 흐름 에이전트의 경우 경로가 항상 범위 내에 있습니다. 대화 중 어느 시점에서든지 최종 사용자가 매장 위치를 요청할 수 있으며 이 경로가 호출됩니다.

이 경로를 만들려면 다음 안내를 따르세요.

  1. 빌드 탭을 클릭합니다.
  2. 흐름 섹션에서 기본 시작 흐름을 선택합니다.
  3. 그래프에서 시작 노드를 클릭합니다. 기본 시작 흐름의 시작 페이지입니다.
  4. 다음 인텐트 경로를 추가합니다.
    • Intent: store.location
    • 전환 페이지: Store Location
  5. 저장을 클릭합니다.
  6. 인텐트 경로 수정 패널을 닫습니다.

인텐트 경로 스크린샷

수정 패널을 닫으면 새 페이지의 그래프에 노드가 표시됩니다. 시작 노드에서 매장 위치 노드로의 화살표는 세션이 노드에서 노드로 전환되는 방법을 나타냅니다.

매장 위치 페이지 테스트

페이지를 테스트하려면 다음 안내를 따르세요.

  1. 테스트 에이전트 버튼을 클릭하여 시뮬레이터를 엽니다.
  2. What is the store location?을 입력하고 Enter 키를 누릅니다.
  3. 에이전트가 주소를 제공합니다.
  4. 시뮬레이터를 닫습니다.

최종 사용자 입력을 위해 에이전트가 다음 단계를 수행했습니다.

  1. 입력을 제공할 때 기본 시작 흐름은 활성 흐름이며 흐름의 시작 페이지는 활성 페이지였습니다. 활성 흐름에 적용된 각 상태 핸들러는 범위내에 있으므로 에이전트가 이를 평가했습니다.
  2. 평가된 경로 중 하나에는 인텐트 요구사항으로 store.location이 있습니다. 사용자 입력과 인텐트가 일치되어 경로가 호출되었습니다.
  3. 호출된 경로에 fulfillment 응답 메시지가 없으므로 응답 큐에 아무것도 추가되지 않았습니다.
  4. 호출된 경로에 전환 타겟이 있으므로 활성 페이지가 매장 위치 페이지로 변경되었습니다.
  5. 매장 위치 페이지에 항목 fulfillment가 있으므로 fulfillment의 응답 메시지가 응답 큐(주소)에 추가되었습니다.
  6. 에이전트가 응답 큐의 콘텐츠로 응답했습니다.

인라인 생성을 사용한 매장 영업시간 페이지

이 섹션에서는 매장 영업시간에 대한 최종 사용자의 질문을 처리하는 매장 영업시간 페이지를 만듭니다. 이전 섹션에서는 빌드관리 탭에서 페이지와 인텐트를 만들었습니다. 이 섹션에서는 인라인 생성을 사용하여 이러한 유형을 더 빠르게 만드는 방법을 보여줍니다.

인텐트 경로, 인텐트, 페이지를 인라인으로 만들려면 다음 안내를 따르세요.

  1. 그래프에서 시작 노드를 클릭합니다.
  2. 인텐트 경로 추가 버튼을 클릭합니다. 인텐트 경로 수정 패널이 열립니다.
  3. 인텐트 섹션에서 새 인텐트를 선택합니다. 인텐트 수정 패널이 열립니다.
  4. 다음 학습 문구를 사용하여 store.hours 인텐트를 만듭니다.

    • What are your store hours?
    • What time do you close?
  5. 저장을 클릭하여 인텐트를 저장합니다. 인텐트 수정 패널이 닫힙니다.

  6. 인텐트 경로 수정 패널의 전환 섹션까지 아래로 스크롤합니다.

  7. 페이지 전환에 대해 새 페이지를 선택합니다.

  8. 텍스트 입력이 표시되면 Store Hours를 입력합니다.

  9. 저장을 클릭합니다. 이제 새 페이지로 연결되는 전환이 있으므로 그래프에 새 페이지가 나타납니다.

  10. 인텐트 경로 수정 패널을 닫습니다.

  11. 매장 위치의 수행 단계와 비슷하게 매장 영업시간을 제공하는 항목 fulfillment를 추가합니다.

  12. 열려 있는 모든 수정 패널을 닫습니다.

상품 주문 페이지

다음으로 양식 매개변수를 사용하는 페이지를 만듭니다. 최종 사용자가 새 셔츠 주문을 요청하면 세션이 이 페이지로 전환됩니다. 이 페이지가 활성화되면 주문된 셔츠의 크기와 색상을 수집합니다.

셔츠 사이즈에 대한 커스텀 항목 유형 만들기

항목 유형은 최종 사용자 입력에서 데이터 추출 방법을 제어하는 데 사용됩니다. 대화형 에이전트(Dialogflow CX)는 여러 일반적인 데이터 유형과 일치시킬 수 있는 사전 정의된 시스템 항목을 제공합니다. 예를 들어 날짜, 시간, 색상, 이메일 주소 등을 일치시키는 시스템 항목이 있습니다. 커스텀 데이터와 일치시킬 커스텀 항목을 직접 만들 수도 있습니다.

이 에이전트에서는 셔츠 색상에 시스템 항목을 사용할 수 있지만 셔츠 사이즈의 커스텀 항목을 만들어야 합니다. 사이즈 항목 유형에는 다음 항목이 있어야 합니다.

항목 동의어
small small, tiny, little
중간 medium, regular, average
large large, big, giant

이 항목을 만들려면 다음 안내를 따르세요.

  1. 관리 탭을 선택합니다.
  2. 항목 유형을 클릭합니다.
  3. 만들기를 클릭합니다.
  4. 표시 이름을 size로 설정합니다.
  5. 위 표에 나열된 항목을 추가합니다.
  6. 저장을 클릭합니다.

인텐트 매개변수로 주문 인텐트 만들기

최종 사용자가 새 셔츠 주문을 요청할 때 일치시킬 인텐트가 필요합니다. 이 인텐트는 필요한 경우 최종 사용자가 제공한 셔츠 색상 또는 사이즈를 선택적으로 캡처하여 정보를 미리 제공해야 합니다.

매개변수는 세션 중에 최종 사용자가 제공한 값을 캡처하고 참조하는 데 사용됩니다. 각 매개변수에는 표시 이름과 항목 유형이 있습니다. 원시 최종 사용자 입력과 달리 매개변수는 일부 로직을 수행하거나 응답을 생성하는 데 간편하게 사용할 수 있는 구조화된 데이터입니다.

학습 문구의 일부를 주석 처리하고 관련 인텐트 매개변수를 구성하여 인텐트 일치로 최종 사용자 데이터를 추출하는 방식을 제어할 수 있습니다. 예를 들어 'What is the forecast tomorrow for Tokyo?'와 같은 학습 문구를 가정해 보겠습니다. 'tomorrow'를 date 매개변수로, 'Tokyo'를 location 매개변수로 주석 처리해야 합니다. 학습 문구의 일부에 주석을 작성하면 대화형 에이전트(Dialogflow CX)는 이러한 부분이 런타임에 최종 사용자가 제공하는 실제 값의 예시일 뿐임을 인식합니다. 'What is the forecast on Friday for Sydney?(금요일 시드니 날씨는 어때?)'와 같은 최종 사용자 입력의 경우 대화형 에이전트(Dialogflow CX)는 'Friday'에서 date 파라미터를, 'Sydney'에서 location 파라미터를 추출합니다.

콘솔을 사용하여 학습 문구를 주석 처리하려면 다음 안내를 따르세요.

  1. 학습 문구에서 주석 처리할 부분을 선택합니다.
  2. 목록에서 원하는 개체 유형을 선택합니다.
  3. 아래의 매개변수 표에서 매개변수가 생성됩니다.

위에서 진행한 단계와 유사한 인텐트를 만듭니다. 이 인텐트 이름을 order.new로 지정합니다. 색상이 포함된 각 구문에 color 매개변수와 @sys.color 시스템 항목 유형으로 색상을 주석 처리합니다. 셔츠 크기가 포함된 각 구문에 size 매개변수와 이전 단계에서 만든 @size 커스텀 항목 유형으로 크기를 주석 처리합니다. 학습 문구와 매개변수는 다음과 비슷하게 표시됩니다.

인텐트 스크린샷

주문 페이지 만들기

이전 단계와 유사한 단계로 새 주문 페이지를 만듭니다.

  • 표시 이름: New Order
  • 항목 fulfillment: Ok, let's start a new order.

주문 페이지에 양식 추가

페이지마다 최종 사용자로부터 수집해야 하는 매개변수의 목록인 양식을 정의합니다. 에이전트는 페이지 매개변수라고도 하는 모든 필수 양식 매개변수를 수집할 때까지 여러 대화 차례에 걸쳐 최종 사용자와 상호작용합니다. 또한 각 양식 매개변수에 대해 에이전트가 최종 사용자에게 해당 정보를 요청하는 데 사용하는 프롬프트를 제공합니다. 이 프로세스를 양식 작성이라고 합니다.

최종 사용자가 인텐트가 일치할 수 있도록 인텐트 매개변수를 제공하면 인텐트 매개변수는 세션 매개변수가 됩니다. 페이지가 처음 활성화되면 모든 양식 매개변수가 유사한 이름의 세션 매개변수로 미리 채워집니다. 따라서 order.new 인텐트가 일치될 때 최종 사용자가 크기나 색상을 제공하면 이러한 값이 자동으로 양식에 채워집니다.

새 주문 페이지에서는 다음 두 가지 필수 양식 매개변수를 정의해야 합니다.

필수 표시 이름 항목 유형 목록 프롬프트
색상 @sys.color What color would you like?(어떤 색상을 원하시나요?)
크기 @size What size do you want?(어떤 크기를 원하시나요?)

이 양식을 추가하려면 다음 안내를 따르세요.

  1. 그래프에서 새 주문 페이지를 클릭합니다.
  2. 매개변수 추가 버튼을 클릭합니다. 매개변수 수정 패널이 열립니다.
  3. 위 표에 설명된 대로 매개변수를 추가합니다.
  4. 저장을 클릭합니다.
  5. 매개변수 수정 패널을 닫습니다.

흐름에 주문 인텐트 경로 추가

위에서 수행한 단계와 마찬가지로 기본 시작 흐름에 경로를 추가합니다. 최종 사용자가 새 주문을 하려는 경우 이 경로를 호출해야 합니다.

  • 인텐트: order.new
  • 전환 타겟 페이지: 새 주문

확인 페이지

마지막 페이지에서 주문을 확인하고 세션을 종료합니다.

확인 페이지 만들기

주문을 확인하기 위해 세션 매개변수를 사용하는 응답으로 확인 페이지를 만듭니다.

  • 표시 이름: Order Confirmation
  • 항목 fulfillment: You can pick up your order for a $session.params.size $session.params.color shirt in 7 to 10 business days. Goodbye.

주문 페이지에 조건 경로 추가

또는 조건을 사용하여 경로가 호출되었는지 여부를 확인할 수 있습니다. 조건은 일반적으로 양식이 완전한지 확인하는 데 사용되며 평가 시 항상 호출되도록 구성됩니다.

콘솔에서 조건을 설정하려면 조건 설정 문서를 확인하세요.

주문 페이지 양식이 채워질 때 호출되는 주문 페이지에 다음 경로를 추가합니다. 이 조건 경로가 최종 사용자에 대한 응답에서 매개변수 참조를 사용하는 방법과 세션을 주문 확인 페이지로 전환하는 방법을 설명합니다.

  • 조건: $page.params.status = "FINAL"
  • 에이전트 말하기: You have selected a $session.params.size, $session.params.color shirt.
  • 전환 페이지: Order Confirmation

페이지가 활성화되고 조건 경로가 평가되는 각 대화 차례에 호출되는 다음 경로를 주문 페이지에 추가합니다. 위 조건을 평가하고 호출하면 페이지가 비활성화되므로 이 true 조건 경로가 평가되지 않습니다.

  • 조건: true
  • 에이전트 말하기: I'd like to collect a bit more information from you.

세션을 종료하는 조건 경로 만들기

다음 조건 경로를 주문 확인 페이지에 추가하여 페이지가 활성화되고 항목 fulfillment가 처리되면 세션을 종료합니다.

  • 조건: true
  • 전환 대상: 페이지: End Session

완료된 에이전트 테스트

다음 대화상자를 사용하여 에이전트를 테스트합니다.

대화 설명
최종 사용자: Hi(안녕하세요.)
에이전트: Hello, this is a shirt ordering virtual agent(안녕하세요. 셔츠 주문 가상 에이전트입니다.) How can I help you?(무엇을 도와드릴까요?)
  1. 기본 시작 흐름기본 시작 인텐트 경로가 호출됩니다.
  2. 상태 핸들러의 fulfillment('Hello, this...')가 응답 큐에 추가됩니다.
  3. 에이전트가 응답 큐를 최종 사용자에게 보냅니다.
최종 사용자: I want to buy a blue shirt(파란색 셔츠를 사고 싶습니다.)
에이전트: Ok, let's start a new order.(네, 새 주문을 시작하겠습니다.)
에이전트: I'd like to collect a bit more information from you.(조금 더 많은 정보를 수집하고자 합니다.)
에이전트: What size do you want?(원하시는 사이즈는 무엇인가요?)
  1. order.neworder.new 인텐트 경로가 평가됩니다.
  2. order.new 인텐트가 일치되고 color 인텐트 매개변수가 'blue'로 설정됩니다.
  3. 세션이 새 주문 페이지로 전환되고 color 인텐트 매개변수가 세션 매개변수가 됩니다.
  4. 새 주문 페이지에 항목 fulfillment가 있습니다('Ok, let's start...'). 그러면 응답 큐에 추가됩니다.
  5. 색상 세션 매개변수는 비슷한 이름의 양식 매개변수를 채우는 데 사용됩니다.
  6. 새 주문 페이지의 true 조건 경로가 평가되고 호출됩니다. 응답 메시지('I'd like to collect..')가 있습니다. 그러면 응답 큐에 추가됩니다.
  7. 페이지의 양식이 채워지지 않으므로 에이전트는 사이즈 프롬프트('What size...')를 사용합니다. 그런 다음 응답 큐에 추가합니다.
  8. 에이전트가 응답 큐를 최종 사용자에게 보냅니다.
최종 사용자: large(라지요.)
에이전트: You have selected a large, blue shirt.(라지 파란색 셔츠를 선택했습니다.)
에이전트: You can pick up your order for a large blue shirt in 7 to 10 business days.(영업일 기준 7~10 일 이내에 라지 파란색 셔츠를 픽업할 수 있습니다.) 감사합니다.
  1. 최종 사용자 입력은 이전 대화 차례에서 에이전트가 요청한 크기 매개변수를 채웁니다.
  2. 새 주문 페이지의 양식 완성 경로가 평가되고 호출됩니다. 최종 사용자가 제공한 실제 값으로 해석된 매개변수 참조가 있는 응답 큐에 추가된 fulfillment('You have selected...')가 선택됩니다.
  3. 세션이 주문 확인 페이지로 전환됩니다.
  4. 주문 확인 페이지에는 응답 큐에 추가된 항목 fulfillment('You can pick up...')가 있습니다.
  5. 에이전트가 응답 큐를 최종 사용자에게 보냅니다.
  6. 세션이 세션 종료로 전환됩니다.

생산화

프로덕션에서 에이전트를 실행하기 전에 생산화 권장사항을 구현해야 합니다.