CanRobot · 캔로봇
Microsoft Certified Trainer Microsoft MVP 2025

M2-5. 엔터티·변수·조건 — 입력을 데이터로 바꾸기

한 줄 요약엔터티는 사용자 입력에서 정보를 뽑고(슬롯 채우기), 변수는 그 값을 대화 중 저장하며, 조건은 Power Fx 수식으로 경로를 분기합니다. 세 요소가 토픽을 “대본”에서 “프로그램”으로 만듭니다.

1. 엔터티 (Entities)

엔터티는 사용자 발화에서 뽑아낼 정보의 단위입니다:

종류
프리빌트 엔터티 날짜·시간, 숫자, 이메일, 전화번호, 불리언(BooleanPrebuiltEntity), 도시 …
커스텀 엔터티 닫힌 목록(예: 휴가 종류 = 연차/반차/병가) · 정규식(예: 사번 형식)
  • 커스텀 닫힌 목록은 동의어(synonym) 를 등록해 인식률을 높이고, 스마트 매칭으로 유사 표현을 흡수합니다
  • 질문 노드의 Identify 항목에서 엔터티를 지정하면 응답 형식이 강제됩니다

프리빌트 vs 커스텀 엔터티

슬롯 채우기(slot filling) — 사용자가 “내일 연차 쓸게요”라고 하면, 질문을 다시 하지 않고 발화에서 날짜(내일)·종류(연차)를 미리 채웁니다. 생성형 오케스트레이션은 부족한 슬롯의 질문도 자동 생성합니다.

슬롯 채우기 동작

2. 변수 (Variables)

범위 접두사 수명
토픽 변수 Topic. 해당 토픽 실행 동안
전역 변수 Global. 대화 전체
시스템 변수 System. 대화 메타데이터 (예: System.Conversation.Id)
사용자 변수 User. 인증 시 사용자 정보 (User.DisplayName 등, M3-3)

변수 범위 4종

  • 질문 노드의 응답은 자동으로 변수에 저장됩니다
  • Set variable value 노드로 직접 설정, 캔버스 상단 변수 패널(watch window) 로 값 추적
  • 토픽 입·출력 매개변수로 토픽 간 값 전달 (M2-3)

변수 패널(watch window) 화면 구성 예시 — 실제 화면·명칭은 버전에 따라 다를 수 있습니다

3. 조건 (Conditions) — Power Fx

Condition 노드는 변수 값에 따라 경로를 나눕니다. 단순 비교는 UI로, 복잡한 논리는 Power Fx 수식으로:

=Topic.LeaveType = "연차" && Topic.Days > 3

Power Fx는 Set variable 노드·메시지 노드 안({x} 삽입)에서도 사용할 수 있어, 날짜 계산·문자열 가공·형식 변환을 코드 없이 처리합니다.

=Text(DateAdd(Today(), 3, TimeUnit.Days), "yyyy-mm-dd")

4. 미니 실습 — 휴가 신청 토픽 완성

  1. 질문 노드 ① “어떤 휴가인가요?” — 커스텀 엔터티(연차/반차/병가 + 동의어)
  2. 질문 노드 ② “언제부터인가요?” — 프리빌트 날짜 엔터티
  3. Condition 노드 — Topic.LeaveType = "병가" 이면 증빙 안내 메시지
  4. 메시지 노드 — {Topic.LeaveType} {Topic.StartDate} 변수 삽입해 접수 확인
  5. 테스트 — “다음 주 월요일부터 연차 쓰고 싶어요” 한 문장으로 슬롯 채우기 확인

핵심 정리

  1. 엔터티 = 무엇을 뽑을지, 변수 = 어디에 담을지, 조건 = 어떻게 나눌지
  2. 커스텀 엔터티에는 동의어를 아끼지 마세요 — 인식률이 달라집니다
  3. 슬롯 채우기 덕분에 묻지 않아도 되는 질문은 건너뜁니다 — 대화가 짧아집니다

M2 빌드로 · 다음: M2-6. 도구

출처: Use entities and slot filling (MS Learn) · Work with variables (MS Learn) · Use conditions (MS Learn)