Lab 3. 토픽과 HITL 🧭
이번 랩 완성물: 항목과 수량을 받아 확인 카드로 확정받고 흐름을 부르는 토픽, 경조신청 목록을 사유별로 조회하는 에이전트 흐름
예상 시간: 50분
완성 신호: 확정을 누르면 신청내역에 한 줄이 추가되고, 취소를 누르면 추가되지 않는다
50분 타이머. 4단(토픽 부르기 → 입력 받기 → 확인 카드 → 목록 조회 흐름)으로 나눠 진행합니다.
준비
- Lab 2까지 마친 복리후생 안내 도우미에 이어서 작업합니다.
- Lab 2 32번의 흐름
자기계발비 신청 처리 HGD가 게시되어 있어야 합니다.
단계 ① 토픽을 만들고 설명을 쓴다
-
화면 상단 메뉴에서 토픽을 열고 토픽 추가 → 새로 시작을 선택합니다.
메뉴가
+8같은 묶음 안에 들어가 있을 수 있습니다. -
좌측 상단의 토픽 이름을 아래로 바꿉니다. 토픽 이름에는 이니셜을 붙이지 않습니다.
자기계발비 신청 -
트리거 노드의 「토픽이 수행하는 작업 설명」 칸에 아래를 입력합니다.
자기계발비 신청을 접수한다. 항목과 수량을 받아 확인을 거친 뒤 신청내역에 기록한다. 자기계발비를 신청하겠다는 요청에 사용한다.트리거 문구를 나열하는 칸이 없습니다. 이 토픽이 언제 불릴지는 이 설명문으로 정해집니다.
-
트리거 노드 아래 + 에서 메시지 보내기를 넣고, 아래를 입력한 뒤 우측 상단 저장을 누릅니다.
자기계발비 신청 토픽이 시작되었습니다. -
새 테스트 세션에서 두 질문을 차례로 합니다.
자기계발비 신청하고 싶어요자기계발비는 1년에 얼마까지 지원돼?3번 설명은 신청 접수만 적었으므로 한도 질문에는 지식이 답합니다.
-
개요 화면의 지침에서 두 군데를 고치고 저장합니다.
- 맨 아래
[자기계발비 신청 처리]블록(Lab 2 24번)을 통째로 지웁니다. - 「답변 원칙」의 마지막 줄(Lab 2 45번)을 지우고, 대신 아래 한 줄을 넣습니다.
- 자기계발비 신청은 /자기계발비 신청 토픽으로 수행한다./자기계발비 신청부분은/를 입력해 뜨는 목록에서 고릅니다. - 맨 아래
-
새 테스트 세션에서 다시 신청합니다.
도서구입으로 자기계발비 신청할게요
단계 ② 입력을 받는다
-
4번의 메시지 노드를 ⋯ → 삭제로 지웁니다. 트리거 아래 + 에서 질문하기를 넣고 질문 문구에 아래를 입력합니다.
어떤 항목을 신청하시나요? -
식별 항목을 다중 선택 옵션으로 바꾸고, 사용자에 대한 옵션에 선택지 다섯 개를 넣습니다.
도서구입 온라인 강의 어학시험 응시료 자격증 응시료 외부 세미나선택지는
지원기준표의 항목명과 글자가 같아야 합니다. Lab 2 36번의 필터 쿼리가 이 값으로 행을 찾습니다. -
캔버스를 아래로 내려 선택지마다 자동으로 생긴 조건 갈래를 ⋯ → 삭제로 모두 지웁니다.
-
다음 이름으로 사용자 응답 저장 칸의
var1을 아래로 바꿉니다.항목명 -
질문 노드 아래 + 에서 질문하기를 하나 더 넣습니다. 질문 문구는 아래이고, 식별은 숫자, 변수 이름은
수량입니다.몇 건 신청하시나요? -
12번 노드 아래에 메시지 보내기를 넣고, 도구 모음의
{x}로 두 변수를 넣어 아래 문장을 만든 뒤 저장합니다.(항목명) (수량)건을 확인합니다.타이핑한
{항목명}은 글자로 들어갑니다.{x}로 넣어야 변수에 연결됩니다. -
새 테스트 세션에서 신청합니다.
자기계발비 신청할게요 -
두 질문 노드의 변수 칸에서
{x} 항목명,{x} 수량을 각각 눌러 변수 속성을 열고 다른 토픽에서 값 수신을 켭니다. 이어서 3번 설명 끝에 한 줄을 더하고 저장합니다.항목명은 "도서구입", "온라인 강의", "어학시험 응시료", "자격증 응시료", "외부 세미나" 중 하나로 처리한다.질문 노드는 변수가 비어 있을 때만 묻습니다. 값 수신을 켜고 설명에 값의 목록을 적어야 오케스트레이터가 값을 미리 채웁니다.
-
새 테스트 세션에서 값을 미리 담아 두 번 신청합니다.
어학시험 응시료 2건 자기계발비 신청할게요자기계발비로 책 3권 신청할게요뒤 요청은 항목을 다시 물을 수 있습니다.
단계 ③ 확인 카드로 확정받는다
-
13번 메시지 노드 아래 + 에서 적응형 카드로 질문을 넣습니다. 노드 속성에서 적응형 카드 편집을 누르고 카드 페이로드 편집기에 아래를 붙여넣은 뒤 저장합니다.
{ "type": "AdaptiveCard", "version": "1.5", "body": [ { "type": "TextBlock", "text": "자기계발비 신청 확인", "weight": "Bolder", "size": "Medium" }, { "type": "FactSet", "facts": [ { "title": "항목", "value": "${항목명}" }, { "title": "수량", "value": "${수량}" } ]} ], "actions": [ { "type": "Action.Submit", "title": "확정", "data": { "actionSubmitId": "확정" } }, { "type": "Action.Submit", "title": "취소", "data": { "actionSubmitId": "취소" } } ] } -
노드 속성의 형식을
JSON에서수식으로 바꾸고, 값 두 칸을 아래처럼 고쳐 씁니다.{ title: "항목", value: Text(Topic.항목명) }, { title: "수량", value: Text(Topic.수량) }여기에는
{x}버튼이 없습니다.Topic.접두사를 붙여 이름을 직접 씁니다.항목명은choice,수량은 숫자라서 둘 다Text()로 감쌉니다. -
카드 노드 아래의 출력 변수를 봅니다.
출력 변수가 비어 있으면 노드 속성의 「스키마 편집」에서
actionSubmitId를 문자열로 추가합니다. 버튼이 눌린 값을 받을 변수가 없으면 23번 조건을 만들 수 없습니다.1 -
새 테스트 세션에서 16번 앞 요청을 다시 보냅니다.
-
카드의 취소를 누릅니다.
-
도구 탭에서
자기계발비 신청 처리 HGD의 ⋯ 를 눌러 에이전트에서 삭제합니다. 흐름 자체는 남습니다.도구로 남겨 두면 오케스트레이터가 흐름을 직접 부를 수 있고, 그러면 카드를 거치지 않고 기록됩니다.
-
토픽으로 돌아가 카드 노드 아래 + 에서 조건 추가를 넣습니다. 왼쪽 칸에
actionSubmitId, 비교는 다음과 같음, 값은 아래로 둡니다.확정 -
조건 갈래 안에서 + → 도구 추가를 누르고, 흐름 탭에서
자기계발비 신청 처리 HGD를 고릅니다. 입력 세 칸을 아래처럼 채웁니다.입력 값 항목명 수식 Text(Topic.항목명)수량 변수 Topic.수량이메일 시스템 변수 User.Email -
흐름 노드 아래에 메시지 보내기를 넣고
{x}로결과를 넣습니다. 기타 모든 조건 갈래에는 메시지 보내기로 아래를 넣고 저장합니다.신청을 취소했습니다. 기록하지 않았습니다. -
새 테스트 세션에서 두 번 신청합니다.
온라인 강의 1건 자기계발비 신청할게요첫 번째 카드는 확정, 같은 요청을 한 번 더 보내 두 번째 카드는 취소를 누릅니다.
-
새 테스트 세션에서 여러 건을 한 번에 요청합니다.
다섯 항목을 각 1건씩 전부 신청해줘관찰: 카드가 몇 번 뜨는지, 되묻는지 확인한다.
기록은 확정을 누른 건수만큼 추가됩니다.
단계 ④ 흐름으로 목록을 조회한다
-
도구 추가의 위쪽 새로 만들기에서 에이전트 흐름을 고릅니다. 초안 저장을 먼저 누르고 이름을 아래로 바꿉니다.
경조 신청 사유별 조회 HGD -
트리거의 매개 변수 탭에서 입력 추가로 텍스트 입력을 하나 만듭니다.
이름 형식 설명 사유텍스트 조회할 경조 사유를 입력하세요 -
트리거 아래 + 에서 SharePoint의 항목 가져오기를 넣습니다. 사이트 주소는 Lab 1의 사이트, 목록 이름은
경조신청_HGD입니다. -
고급 매개 변수에서 필터 쿼리와 최대 개수를 켭니다. 필터 쿼리의 작은따옴표 안쪽에 29번의
사유입력을 넣고, 최대 개수는20으로 둡니다.사유 eq '(입력: 사유)'필터 쿼리의 왼쪽은 열의 내부 이름입니다. 화면에 보이는 열 이름과 다를 수 있습니다. 목록 설정에서 열을 눌렀을 때 주소의
Field=뒤가 내부 이름입니다.2 -
아래 + 에서 데이터 작업의 선택을 넣습니다. 보낸 사람에 30번 액션의
body/value를 넣고, 매핑에 다섯 줄을 만듭니다.키 값 신청자 신청자열원문 원문열사유 사유열경조금 경조금열경조휴가 경조휴가열흐름이 에이전트에게 넘기는 칸은 이 다섯 개입니다.
-
응답 노드를 맨 아래로 옮기고, 출력
결과(텍스트)의 값에 아래를 붙여넣습니다. 초안 저장 후 게시합니다.string(body('선택')) -
에이전트의 도구 탭에서 도구 추가 → 흐름 탭으로 28번의 흐름을 추가하고 설명을 아래로 씁니다.
경조사 신청 기록을 사유별로 조회한다. 사유는 "본인 결혼", "자녀 결혼", "배우자 출산", "본인·배우자 부모상", "조부모·형제자매상", "규정 없음" 중 하나로 넣는다. -
도구 목록에서 Lab 2 22번의
경조 신청 조회의 사용 설정을 끕니다. -
새 테스트 세션에서 물어봅니다.
규정 없음으로 들어온 경조 신청 보여줘 -
표현을 바꿔 물어봅니다.
외할머니 돌아가신 건 신청 들어온 거 있어?외할머니 상은 사유
조부모·형제자매상에 해당합니다.
확인
필수: 여기까지 되면 이 랩은 통과입니다
- ① 신청 요청에는 토픽이, 한도 질문에는 지식이 답한다 (5번)
- ② 지침 한 줄로 신청을 토픽에 연결했다 (6·7번)
- ③ 항목과 수량을 변수로 받고, 값을 미리 말하면 질문을 건너뛴다 (14·16번)
- ④ 확인 카드에 항목과 수량이 채워진다 (20번)
- ⑤ 확정은 흐름을 불러 한 줄을 기록하고, 취소는 기록하지 않는다 (26번)
- ⑥ 흐름이 필터 쿼리로 사유가 맞는 기록만 돌려준다 (36번)
- ⑦ 사용자의 표현이 사유 값 여섯 가지 중 하나로 바뀌어 흐름에 들어간다 (37번)
관찰: 나오면 좋고, 안 나와도 실패가 아닙니다
- ⑧ 「책 3권」이
도서구입으로 채워지는가 (16번) - ⑨ 여러 건을 한 번에 요청하면 카드가 몇 번 뜨는가 (27번)
여기까지의 지침
Lab 2 상태에서 두 군데가 바뀌었습니다. [자기계발비 신청 처리] 블록과 이메일 줄을 지우고, 「답변 원칙」 마지막에 토픽 한 줄을 넣었습니다(6번).
## 역할
한별소프트 임직원의 복리후생·근태 문의를 안내하는 사내 도우미. 한국어로 간결·정중하게, 업로드된 지식 문서에 근거해 답하고 없는 내용은 단정하지 않는다.
## 답변 원칙
- 반드시 업로드된 지식 문서만 근거로 답한다.
- 답변 끝에 근거 문서 이름을 한 줄로 표기한다. 예: (근거: 복리후생 제도 개요)
- 금액·일수·기한은 문서에 적힌 수치를 그대로 쓴다. 반올림·일반화하지 않는다.
- 두 문서에 걸친 질문이면 둘을 결합해 답하고 근거 문서를 둘 다 표기한다.
- 자기계발비 신청은 /자기계발비 신청 토픽으로 수행한다.
## 경계
- 개인의 실제 데이터(내 잔여 연차, 내 별포인트 잔액, 내 급여)는 알 수 없다. 숫자를 추정하지 말고 "한별포털에서 확인하거나 피플팀(내선 1000)으로 문의해 주세요"라고 안내한다.
- 문서에 없는 내용은 지어내지 않는다. "제공된 문서에서 찾을 수 없습니다"라고 답한다.
- 규정의 해석·예외 적용 여부는 단정하지 않는다. 판단이 필요한 사안은 피플팀 확인으로 넘긴다.
/자기계발비 신청은 화면에서 칩입니다. 통째로 붙여넣으면 글자가 되므로, 그 줄만 / 를 다시 입력해 목록에서 고릅니다.
출처
-
Ask with Adaptive Cards https://learn.microsoft.com/microsoft-copilot-studio/authoring-ask-with-adaptive-card. Microsoft Learn. ↩
-
In-depth analysis into Get items and Get files SharePoint actions for flows in Power Automate https://learn.microsoft.com/sharepoint/dev/business-apps/power-automate/guidance/working-with-get-items-and-get-files. Microsoft Learn. ↩