CanRobot · 캔로봇
Prosci® Certified Change Practitioner Microsoft Frontier Transformation Engineer TITAN Microsoft MVP 2026-2027 · Microsoft 365 Copilot Microsoft Certified Trainer
예시 실습

이 핸즈온랩은 교육 내용을 보여 드리기 위한 예시입니다. 실제 교육과정에서는 고객사의 산업과 직무를 반영한 실습 시나리오로 구성한 비공개 학습 사이트를 따로 제공합니다.

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

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

1. 엔터티 (Entities)

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

종류 예
프리빌트 엔터티 날짜·시간, 숫자, 이메일, 전화번호, 불리언(BooleanPrebuiltEntity), 도시 …
커스텀 엔터티 닫힌 목록(예: 휴가 종류 = 연차/반차/병가) · 정규식(예: 사번 형식)
열린 목록(open list) 동적 인라인 엔터티 — 값 목록을 런타임에 외부 데이터로 채움 (예: Dataverse에서 가져온 현재 결재선)
  • 커스텀 닫힌 목록은 동의어(synonym) 를 등록해 인식률을 높이고, 스마트 매칭으로 비슷한 표현까지 인식합니다
  • 질문 노드의 Identify 항목에서 엔터티를 지정하면 그 형식으로만 응답을 받습니다

프리빌트 vs 커스텀 엔터티

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

슬롯 채우기 동작

열린 목록 — 런타임에 선택지 채우기

값이 자주 바뀌는 목록(부서, 진행 중인 프로젝트 등)은 미리 고정할 수 없습니다. 질문 노드의 Identify → Options from a list variable을 선택하면, 표(table) 변수의 값으로 선택지가 런타임에 채워집니다. 표는 최대 100행까지 쓸 수 있습니다.

열린 목록 엔터티의 런타임 동작

질문 노드 고급 옵션

옵션 동작
한 턴에 여러 값 수집 “연차랑 반차 둘 다요” 같은 응답에서 값을 여러 개 받아 table 타입 변수에 저장 — Loop through a list 노드로 순회 처리
One of multiple entities 한 질문으로 여러 엔터티 중 하나를 인식 — 최대 5개, 같은 유형 중복 불가, 발화가 여러 엔터티에 맞으면 목록상 첫 번째만 인식
Include metadata 인식 결과의 부가 정보 노출 — .Literal(사용자가 실제로 쓴 표현) · .Value(정규화된 값) · .ConfidenceScore(신뢰도)

.ConfidenceScore가 낮을 때 다시 확인하는 질문을 넣으면 잘못 인식해서 엉뚱하게 접수되는 일을 줄일 수 있습니다.

질문 노드 고급 옵션 3종

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. 값이 자주 바뀌면 열린 목록(Options from a list variable, 최대 100행) 으로 런타임에 채우세요
  4. 질문 노드는 한 턴에 여러 값 수집(table 결과) · One of multiple entities(최대 5개) · Include metadata(.Literal / .Value / .ConfidenceScore)를 지원합니다
  5. 슬롯 채우기 덕분에 묻지 않아도 되는 질문은 건너뜁니다 — 대화가 짧아집니다

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

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