변수 사용

중요

Power Virtual Agents 기능 및 특징은 생성 AI에 대한 막대한 투자와 Microsoft Copilot 전반의 향상된 통합에 따라 이제 Microsoft Copilot Studio의 일부가 되었습니다.

문서 및 교육 콘텐츠를 업데이트하는 동안 일부 문서와 스크린샷에서는 Power Virtual Agents을 참조할 수 있습니다.

변수를 사용하여 고객의 응답을 저장하고 나중에 대화에서 콘텐츠를 재사용할 수 있습니다.

또한 변수를 사용하여 고객을 다른 대화 경로로 동적으로 라우팅하는 논리 식을 작성할 수 있습니다. 예를 들어, 고객의 이름을 UserName이라는 변수에 저장합니다. Copilot은 대화가 계속되는 동안 이름으로 고객의 이름을 지정할 수 있습니다.

변수는 다른 토픽Power Automate 흐름으로 전달 및 반환될 수도 있습니다.

변수는 세 가지 수준 또는 범위에 존재할 수 있습니다.

  • 토픽 변수는 생성된 토픽에서만 사용할 수 있습니다. 이 범위는 생성하는 변수의 기본값입니다.
  • 전역 변수는 모든 토픽에서 사용할 수 있습니다. 토픽 변수의 범위를 변경하여 전역 변수로 만들 수 있습니다.
  • 시스템 변수는 Copilot과 함께 자동으로 생성됩니다. 대화 또는 사용자에 대한 더 많은 상황 정보를 제공합니다. 모든 토픽에서 사용할 수 있습니다.

변수 유형

변수는 기본 유형과 연결됩니다. 유형에 따라 변수에 포함될 수 있는 값과 논리식을 구성할 때 사용할 수 있는 연산자가 결정됩니다.

Type Description
String 텍스트를 나타내는 데 사용되는 일련의 문자
부울 true 또는 false만 가능한 논리 값
숫자 임의의 실수
테이블 값 목록이지만 모든 값은 동일한 유형이어야 합니다.
녹음 값이 모든 유형일 수 있는 이름-값 쌍의 모음입니다.
날짜/시간 특정 시점을 기준으로 한 날짜, 시간, 요일 또는 월입니다.
선택 항목 연결된 동의어가 있는 문자열 값 목록입니다.
빈 템플릿 "값 없음" 또는 "알 수 없는 값"에 대한 자리 표시자 자세한 내용은 Power Fx의 공백을 참조하세요.

변수의 유형은 값이 처음 할당될 때 설정됩니다. 그 후에는 해당 변수의 유형이 고정되고 다른 유형의 값을 할당할 수 없습니다. 예를 들어 시작 값이 1인 변수에는 숫자 유형이 할당됩니다. "apples"문자열 값에 할당하려고 하면 오류가 발생합니다.

Copilot을 테스트할 때 변수가 일시적으로 알 수 없는 유형으로 나타날 수 있습니다. 알려지지 않은 변수에 아직 값이 할당되지 않았습니다.

변수의 순서는 제작 캔버스의 위에서 아래로 결정됩니다. 즉, 제작 캔버스의 맨 위에 있는 노드가 맨 아래에 있는 노드보다 먼저 고려됩니다. 조건 노드로 분기를 생성하면 분기는 왼쪽에서 오른쪽으로 정렬됩니다. 즉, 가장 왼쪽 분기의 노드는 가장 오른쪽 분기의 노드보다 먼저 고려됩니다.

엔터티

Microsoft Copilot Studio는 엔터티를 사용하여 사용자의 응답에서 특정 유형의 정보를 식별합니다. 식별된 정보는 해당 정보에 적합한 유형의 변수에 저장됩니다. 다음 표에는 미리 빌드된 엔터티와 연결된 변수 기본 유형이 나열되어 있습니다.

Entity 변수 기본 유형
다중 선택 옵션 선택 항목
사용자의 전체 응답 String
나이 숫자
부울 부울
시/군/구 String
색상 String
대륙 String
국가 또는 지역 String
날짜 및 시간 날짜/시간
Email String
이벤트 String
Integer Integer
언어 String
Money 숫자
숫자 숫자
서수 숫자
조직 String
백분율 숫자
인물 이름 String
전화번호 String
관심 지점 String
속도 숫자
String
상세 주소 String
Temperature 숫자
URL String
두께 숫자
우편 번호 String
사용자 지정 엔터티 선택 항목

변수 만들기

질문 노드와 같이 변수를 출력으로 선택하라는 프롬프트를 표시하는 모든 노드는 적절한 유형의 출력 변수를 자동으로 생성합니다.

기본 변수의 이름과 유형이 강조 표시된 질문 노드의 스크린샷.

사용할 엔터티 선택

기본적으로 질문 노드는 객관식 옵션으로 생성됩니다. 다른 미리 빌드된 개체나 사용자 지정 개체를 사용하려면 식별 상자를 선택하고 Copilot이 수신해야 하는 정보 유형을 선택하세요.

식별할 정보 선택 메뉴가 열려 있고 사람 이름 엔터티가 강조 표시된 질문 노드의 스크린샷.

변수 이름 변경

변수를 생성하면 변수에 자동으로 이름이 할당됩니다. 가장 좋은 방법은 변수에 의미 있는 이름을 지정하여 Copilot을 유지 관리해야 하는 다른 사람에게 목적을 명확히 하는 것입니다.

  1. 변수를 선택하여 변수 속성 창에서 엽니다.

  2. 변수 이름에 변수의 새 이름을 입력합니다.

변수 설정

일반적으로 질문 노드를 사용하여 사용자 입력을 변수에 저장합니다. 그러나 값을 직접 설정하려는 상황이 있을 수 있습니다. 이러한 경우 변수 값 설정 노드를 사용합니다.

  1. 노드 추가(+)를 선택하여 노드를 추가한 다음 변수 값 설정을 선택합니다.

  2. 변수 설정 아래의 상자를 선택한 다음 새 변수 만들기를 선택합니다.

    새 변수 만들기 버튼 스크린샷.

    새 변수가 생성됩니다. 값을 할당할 때까지는 유형은 알 수 없음입니다.

    알 수 없는 유형의 새 변수가 있는 변수 값 설정 노드의 스크린샷.

  3. 값 대상에 다음 옵션 중 하나를 사용하여 값을 할당합니다.

    • 리터럴 값을 입력합니다.
    • 동일한 유형의 기존 변수를 선택합니다. 이 조치는 변수를 선택한 변수와 동일한 값으로 설정합니다.
    • Power Fx 수식을 사용합니다. Power Fx 수식은 테이블 및 레코드 유형과 같이 리터럴 값을 사용할 수 없는 보다 복잡한 유형에 유용합니다.

리터럴 값 사용

변수 값을 선택하는 대신 임의의 변수에 리터럴 값을 입력할 수 있습니다.

productName이라는 변수에 대한 리터럴 값의 사용을 보여주는 스크린샷.

리디렉션 노드의 변수에 대한 입력으로 리터럴 값을 보여주는 스크린샷.

노드는 리터럴 값을 문자열, 숫자 또는 부울 유형으로 해석하려고 시도합니다. 예를 들어 123은 숫자로 해석됩니다. 대신 문자열 값으로 해석하려면 다음과 같이 값을 큰따옴표로 묶을 수 있습니다. "123".

일부 시나리오 또는 더 복잡한 유형을 사용하는 경우 Power Fx 수식을 사용하여 특정 유형을 설정하세요.

변수 창

변수 창은 변수가 정의되거나 사용되는 노드에 관계없이 토픽에서 사용 가능한 모든 변수를 볼 수 있는 곳입니다. 각 변수에 대해 다른 토픽에서 해당 값을 받을 수 있는지, 다른 토픽에 해당 값을 반환할 수 있는지 또는 두 가지 모두를 선택할 수 있습니다. 변수 속성 창에서 속성을 편집할 변수를 선택할 수도 있습니다.

변수 창을 열려면 항목의 메뉴 표시줄에서 변수를 선택합니다.

변수 단추가 강조 표시된 Microsoft Copilot Studio 제작 캔버스의 변수 창 스크린샷.

변수 속성 창

변수 속성 창에서 변수 이름을 바꾸거나 변수가 사용되는 위치를 확인하거나 전역 변수로 변환할 수 있습니다. 그러나 전역 변수에서 다시 토픽 변수로 변환할 수는 없습니다. 또한 다른 토픽에서 값을 받거나 값을 전달할 수 있는지 여부를 선택할 수 있습니다.

변수 속성 창을 열려면 변수 창에서 변수를 선택합니다. 노드에서 변수를 선택하여 변수 속성 창을 열 수도 있습니다.

변수 속성 창의 스크린샷.

시스템 변수

모든 Copilot에는 대화에 대한 추가 정보를 제공하는 시스템 변수가 내장되어 있습니다.

Copilot 토픽의 시스템 변수 스크린샷.

일부 시스템 변수는 목록에 표시되지 않습니다. Power Fx 수식을 사용하여 이러한 숨겨진 시스템 변수에 액세스해야 합니다.

Power Fx 수식에서 시스템 변수를 사용하려면 변수 이름 앞에 System.을 추가해야 합니다. 예를 들어 수식에 시스템 변수 User.DisplayName을 포함하려면 System.User.DisplayName으로 참조해야 합니다.

입력 Type 숨겨져 있음 정의
Activity.Channel 선택 항목 표시 현재 대화의 채널 ID
Activity.ChannelData 모두 숨김 채널별 콘텐츠가 포함된 개체
Activity.ChannelId string 숨김 현재 대화의 채널 ID(문자열)
Activity.From.Id string 숨김 보낸 사람의 채널별 고유 ID
Activity.From.Name string 숨김 보낸 사람의 채널별 사용자 식별 이름
Activity.Name string 표시 이벤트의 이름
Activity.Text string 표시 사용자가 보낸 가장 최근 메시지
Activity.Type 선택 항목 표시 활동의 유형
Activity.TypeId string 숨김 활동의 유형(문자열)
Activity.Value 모두 숨김 열린-종료된 값
Bot.Name string 표시 Copilot의 이름
Channel.DisplayName string 숨김 채널 이름을 표시
Conversation.Id string 표시 현재 대화의 고유 ID
LastActivity.Id string 표시 이전에 전송된 활동의 ID
LastMessage.Id string 표시 사용자가 이전에 보낸 메시지의 ID
LastMessage.Text string 표시 사용자가 이전에 보낸 메시지
Recognizer.TriggerMessage.Id string 표시 현재 토픽을 트리거한 사용자 메시지의 ID
Recognizer.TriggerMessage.Text string 표시 현재 토픽을 트리거한 사용자 메시지
User.DisplayName string 표시 로그인한 사용자의 표시 이름

토픽 간 변수 전달

하나의 토픽를 다른 것으로 리디렉션할 때 원래 토픽와 대상 토픽 간에 변수 값을 전달할 수 있습니다. 토픽 간에 변수를 전달하는 것은 이전 토픽이 이후 토픽에 필요한 정보를 이미 수집한 경우에 특히 유용합니다. 귀하의 사용자는 동일한 질문에 다시 대답하지 않아도 되는 것에 감사할 것입니다.

다른 토픽에서 값 수신

토픽이 변수를 정의하면(예: 질문 노드에 의해) Copilot이 사용자에게 변수 값을 채우라는 질문을 합니다. Copilot이 이전 항목에서 이미 값을 획득한 경우 질문을 다시 할 이유가 없습니다. 이러한 경우 변수를 다른 토픽에서 값 받기와 같이 설정할 수 있습니다. 다른 토픽이 이 항목으로 리디렉션되면 변수 값(또는 리터럴 값)을 이 변수에 전달하고 질문을 건너뛸 수 있습니다. Copilot과 대화하는 사용자의 경험이 원활합니다.

이 예에서는 인사말과 고객과의 대화라는 두 가지 토픽을 사용합니다. 두 토픽 모두 고객의 이름을 묻습니다. 그러나 인사말 토픽이 먼저 실행되면 고객과 대화 토픽은 해당 질문을 건너뜁니다. 대신 인사말 토픽에서 전달된 변수 값을 사용합니다.

고객과 대화 토픽의 흐름은 다음과 같습니다.

고객과 대화 토픽 대화 흐름의 스크린샷.

Copilot 테스트 창에 표시된 것처럼 이 토픽이 먼저 트리거되면 사용자에게 "귀하를 어떻게 불러야 하나요?"라고 묻습니다. userName이라는 문자열 변수에 값을 저장합니다. userName 변수는 다른 토픽에서 값을 가져오도록 설정됩니다. 토픽은 "좋은 하루 보내세요, {userName}!"라는 메시지로 끝납니다.

인사 토픽의 흐름은 다음과 같습니다.

인사 토픽 대화 흐름의 스크린샷.

Copilot 테스트 창에 표시된 것처럼 이 토픽이 먼저 트리거되면 사용자에게 "이름이 무엇인가요?"라고 묻습니다. UserName이라는 문자열 변수에 값을 저장합니다. 토픽은 "만나서 반갑습니다, {UserName}!"라는 메시지를 보냅니다. 그런 다음 고객과 대화 토픽으로 리디렉션되어 "멋진 하루를 보내시기 바랍니다, {userName}!"라는 메시지를 보냅니다. 그러나 고객과 대화 토픽에서는 사용자 이름을 다시 묻는 메시지를 건너뛰었습니다. 대신 인사말 토픽에서 전달된 UserName 변수의 값을 사용했습니다.

마지막으로 고객과의 대화 토픽의 관점에서 다시 두 번째 대화를 나눕니다.

인사 토픽이 먼저 트리거될 때 고객과 대화 토픽 대화 흐름의 스크린샷.

다른 토픽에서 값을 수신하도록 토픽을 설정하는 단계를 살펴보겠습니다. 현재 예제를 사용하지만 주제가 이전 주제에서 값을 가져와야 할 때마다 동일한 단계가 작동합니다.

대상 토픽 설정

대상 토픽은 리디렉션되는 토픽으로, 다른 토픽에서 값을 받을 토픽입니다. 이 예에서는 고객과 대화입니다.

  1. 대상 토픽을 만들거나 해당 토픽으로 이동합니다.

  2. 질문 노드를 추가하고 메시지에 What should I call you?를 입력합니다.

  3. 식별에서 미리 빌드된 엔터티 사람 이름을 선택합니다.

  4. 변수를 선택하여 변수 속성 창을 엽니다. 이름을 userName으로 지정한 다음 다른 항목에서 값 받기를 선택합니다.

    userName 변수와 해당 속성이 강조 표시된 고객과 토픽의 스크린샷.

  5. 메시지 노드를 추가합니다.

  6. 메시지 상자에 I hope you're having a wonderful day, 를 입력합니다.

  7. 변수 삽입 아이콘({x})을 선택한 다음 userName을 선택합니다.

  8. 변수 뒤의 공백을 선택하고 !를 입력합니다.

  9. 토픽을 저장합니다.

소스 토픽 설정

소스 토픽은 대상 토픽으로 전달될 값을 제공하는 리디렉션을 수행하는 토픽입니다. 이 예에서는 인사입니다.

  1. 소스 토픽으로 이동합니다.

  2. 리디렉션 노드를 추가하고 대상 토픽을 선택합니다.

  3. + 입력 추가를 선택한 다음 값을 전달하려는 대상 토픽에서 변수를 선택합니다.

    리디렉션 노드의 입력으로 추가된 userName 변수가 있는 Greeting 토픽의 스크린샷.

  4. > 아이콘을 선택한 다음 값을 전달할 변수를 선택합니다.

    UserName 변수 값이 선택된 인사 주제의 스크린샷.

    리디렉션 노드는 다음과 같이 표시됩니다.

    완료된 리디렉션 노드가 있는 인사 토픽의 스크린샷.

  5. 토픽을 저장합니다.

원본 토픽으로 값 반환

토픽이 리디렉션되고 질문을 하거나 다른 방식으로 변수를 가져오면 변수가 원래 토픽으로 반환될 수 있습니다. 변수는 원래 토픽의 일부가 되며 다른 변수처럼 사용할 수 있습니다. 따라서 Copilot이 얻는 정보는 여러 토픽에 걸쳐 사용할 수 있으므로 전역 변수의 필요성이 줄어듭니다.

이전 섹션의 예를 계속 살펴보겠습니다. 고객과 대화 토픽에서 새 질문을 한 다음 인사 토픽에 대한 답변을 반환합니다.

반환된 변수에 대한 소스 토픽 설정

변수를 토픽으로 반환할 때 소스 토픽은 리디렉션되는 토픽이며 원래 토픽으로 다시 전달될 값을 제공하는 토픽입니다. 이 예에서는 고객과 대화입니다.

  1. 소스 토픽으로 이동합니다.

  2. 질문 노드를 추가하고 메시지에 What city do you live in?를 입력합니다.

  3. 식별에서 미리 빌드된 엔터티 도시를 선택합니다.

  4. 변수를 선택하여 변수 속성 창을 엽니다. 이름을 userCity으로 지정한 다음 원래 토픽으로 값 반환을 선택합니다.

    userCity 변수와 해당 속성이 강조 표시된 고객과 토픽의 스크린샷.

  5. 토픽을 저장합니다.

반환된 변수에 대한 대상 토픽 설정

토픽에 변수를 반환할 때 대상 토픽은 리디렉션을 수행하는 토픽이며 다른 토픽에서 값을 수신하는 토픽입니다. 이 예에서는 인사입니다.

  1. 대상 토픽으로 이동합니다.

  2. 소스 토픽에서 선택한 변수는 리디렉션 노드에 출력 변수로 나타나야 합니다.

    리디렉션 노드에서 반환된 변수가 있는 인사 토픽 대화 흐름의 스크린샷.

  3. 토픽을 저장합니다.