다음을 통해 공유


변수 사용

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

또한 변수를 사용하여 고객을 다른 대화 경로로 동적으로 라우팅하는 논리 식을 작성할 수 있습니다. 예를 들어, "customerName"이라는 변수에 고객 이름을 저장하면 에이전트는 대화가 계속되면서 고객의 이름을 호명할 수 있습니다.

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

변수 만들기

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

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

식별하기 쉽도록 노드 이름을 바꾸세요. 노드의 이름 필드를 선택하여 이름을 직접 업데이트하거나, 노드의 더보기 아이콘()을 선택하고 메뉴에서 이름 바꾸기를 선택합니다. 코드 편집기에서 노드 이름을 바꿀 수도 있습니다.

트리거 노드와 단계로 이동 노드의 이름을 바꾸는 것은 불가능합니다.

노드 이름은 최대 500자까지 가능합니다.

사용할 엔터티 선택

기본적으로 질문 노드는 객관식 옵션으로 생성됩니다. 미리 빌드된 다른 엔터티 또는 사용자 지정 엔터티를 사용하려면 식별 상자를 선택하고 에이전트에서 수신 대기해야 하는 정보 유형을 선택합니다.

'식별할 정보 선택' 패널이 열려 있는 질문 노드의 스크린샷.

변수 이름 변경

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

  1. 변수 속성 창에서 열려는 변수를 선택합니다.

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

변수 설정

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

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

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

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

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

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

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

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

참고

문자열 유형 변수를 설정하는 동안 변수 설정값 지정 사이에 불일치가 발생하면 오류 메시지와 유형 불일치 수정 버튼이 나타납니다. Copilot Studio에서 불일치를 해결하는 Power Fx 수식을 자동으로 생성하려면 버튼을 선택하세요.

작업 노드에서 변수 사용

작업 노드에서 변수를 사용할 때 기본 유형이 흐름 또는 Bot Framework 기술에 대해 지정된 매개 변수 형식과 일치하는 경우 해당 매개 변수에 입력할 수 있습니다. 작업 노드의 출력은 새 변수를 생성합니다.

기술 작업에 대한 입력 및 출력 매개 변수가 있는 작업 노드의 스크린샷.

변수 입력에 리터럴 값 사용

입력 매개 변수에 대한 값을 설정할 수 있는 노드에서는 다른 변수를 값으로 선택하는 대신 항상 리터럴 값을 입력할 수 있습니다.

productName이라는 변수 입력 매개 변수에 리터럴 값을 사용하는 방법을 보여 주는 스크린샷.

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

일부 시나리오(예: 복합 유형을 사용하는 시나리오)에서는 특정 유형을 설정하기 위해 Power Fx 수식을 사용해야 할 수도 있습니다.

Azure Key Vault 암호에 환경 변수 사용

환경 변수는 Key Vault의 비밀을 참조할 수 있습니다. 비밀 환경 변수는 고유한 고려 사항이 있는 환경 변수의 특별한 경우입니다.

Power Apps 포털에서 비밀 환경 변수를 만들려면 해당 Key Vault를 구성해야 합니다.

Copilot Studio에 이 Key Vault를 읽을 수 있는 권한을 부여하려면 다음 작업을 수행해야 합니다.

  1. Key Vault Secrets User 역할을 Microsoft Virtual Agents Service 애플리케이션에 할당합니다.

  2. 환경의 모든 에이전트가 보안 암호에 액세스할 수 있는 권한을 부여하려면 보안 암호에 태그를 AllowedEnvironments 생성하고 허용되는 환경 ID를 쉼표로 구분하여 추가합니다.

  3. 환경의 특정 에이전트에만 이 Key Vault를 사용할 수 있는 권한을 부여하려면 태그를 AllowedAgents 만들고 에이전트 식별자를 형식 {envId}/{schemaName}에 넣습니다. 값이 여러 개인 경우 쉼표로 값을 구분합니다.

최대 문자 수에 도달했지만 여전히 에이전트를 더 추가해야 하는 경우 설명적이지만 고유한 이름(예: AllowedAgents2)을 사용하여 다른 태그를 추가합니다.

비밀 값은 대화 런타임에 5분 동안 캐시됩니다. 실패한 읽기는 30초 동안 캐시됩니다.

경고

에이전트에 시크릿을 추가하면 환경에서 에이전트을 편집할 수 있는 모든 사용자에게 이 시크릿의 값을 노출할 수 있는데, 이러한 사용자는 에이전트를 편집하여 노드의 SendMessage 값을 리턴할 수 있기 때문입니다.

변수 창

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

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

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

변수 속성 창

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

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

토픽 간 변수 전달

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

다른 토픽에서 값 수신

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

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

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

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

테스트 패널에서 볼 수 있듯이 이 토픽이 먼저 트리거되면 사용자에게 "뭐라고 불러야 하나요?"라고 묻습니다. customerName이라는 문자열 변수에 값을 저장합니다. customerName 변수는 다른 토픽에서 해당 값을 가져오도록 설정되기도 합니다. 토픽은 "customerName님, 즐거운 하루 보내시길 바랍니다!"라는 메시지로 마무리됩니다.

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

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

테스트 패널에서 볼 수 있듯이 이 토픽이 먼저 트리거되면 사용자에게 "이름이 무엇입니까?"라고 묻습니다. customerName이라는 문자열 변수에 값을 저장합니다. 토픽은 "customerName님, 만나서 반갑습니다!"라는 메시지를 보냅니다. 그런 다음 고객과 대화 토픽으로 리디렉션되고, 이 토픽에서는 "customerName님, 즐거운 하루 보내시길 바랍니다!"라는 메시지를 보냅니다. 그러나 고객과 대화 토픽에서는 사용자의 이름을 다시 묻지 않습니다. 대신 인사말 토픽에서 전달된 customerName 변수의 값을 사용했습니다.

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

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

다른 토픽에서 값을 수신하도록 토픽을 설정하는 단계를 살펴보겠습니다. 예시 시나리오에서는 미리 정의된 토픽 인사말을 소스 토픽으로 사용하고, 새 토픽 고객과 대화를 대상 토픽으로 사용하지만, 가능한 경우 이전 토픽의 값을 사용해야 하는 모든 토픽에 동일한 단계를 적용합니다.

대상 토픽 설정

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

  1. 새 토픽을 만들고 이름을 "고객과 대화"로 지정합니다.

  2. "talk to me", "talk with me", "chat with me"와 같은 트리거 문구를 추가합니다.

  3. 질문 노드를 추가하고 메시지에 "당신을 어떻게 부를까요?"를 입력합니다.

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

  5. 변수의 이름을 선택합니다. 변수 속성 패널이 열립니다.

  6. 기본 이름을 "customerName"으로 바꾼 다음, 다른 토픽에서 값 수신을 선택합니다.

    customerName 변수와 해당 속성을 보여주는 '변수 속성' 패널의 스크린샷.

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

  8. 메시지 상자에 "멋진 하루를 보내시기 바랍니다"를 입력합니다.

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

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

  11. 토픽을 저장합니다.

소스 토픽 설정

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

  1. 인사말 토픽으로 이동하여 트리거 노드를 제외한 기본 노드를 삭제합니다.

  2. 질문 노드를 추가하고 메시지에 "이름이 뭐예요?"를 입력합니다.

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

  4. 기본 이름을 "customerNameFromGreeting"으로 바꿉니다.

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

  6. 메시지 상자에 "만나서 반갑습니다"를 입력합니다.

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

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

  9. 리디렉션 노드를 추가하고 대상 토픽 고객과 대화를 선택합니다.

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

    리디렉션 노드에 customerName 변수가 입력으로 추가된 인사말 토픽의 스크린샷.

  11. > 아이콘을 선택한 다음 값을 전달하려는 변수인 이 예에서 customerNameFromGreeting을 선택합니다.

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

    인사말 토픽에서 완료된 리디렉션 노드의 스크린샷.

  12. 토픽을 저장합니다.

원본 토픽으로 값 반환

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

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

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

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

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

  2. 질문 노드를 추가하고 메시지에 "어느 도시에 사시나요?"를 입력합니다.

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

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

    customerCity 변수 및 해당 속성이 강조 표시된 고객과 대화 항목의 스크린샷.

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

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

  7. 메시지 상자의 변수 뒤에 " must be beautiful this time of year!"를 입력합니다.

  8. 토픽을 저장합니다.

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

변수를 토픽에 반환할 때 대상 토픽은 현재 토픽에서 값을 받는 토픽입니다. 이 예에서 대상 토픽은 인사말입니다.

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

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

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

  3. 토픽을 저장합니다.

값 구문 분석 노드

값 구문 분석 노드를 사용하면 한 유형의 값을 다른 유형의 값으로 변환할 수 있습니다. 토픽에 노드를 추가할 때 노드 추가 아이콘 을 선택하고 변수 관리를 가리킨 다음 값 구문 분석을 선택합니다.

노드를 추가하는 메뉴의 스크린샷, 변수 관리, 값 구문 분석을 차례로 선택합니다.

값 구문 분석 노드를 사용하는 주요 시나리오는 원시 JSON 또는 유형이 지정되지 않은 변수(런타임까지 값 또는 구조를 알 수 없음, 예: ChannelData)을 구체적인 유형으로 변환하는 데 중점을 둡니다.

흐름이 호출되면 프로세스가 시작되고 흐름은 API를 호출합니다. 그러면 API가 결과를 반환합니다. 일반적으로 이 응답을 구문 분석하고 하나 이상의 기본 변수를 반환해야 합니다. 값 구문 분석 노드를 사용하면 전체 API 결과를 문자열로 보낼 수 있습니다. 예:

{
    "Name": "Parker",
    "Position": "Product manager",
    "Company": "Contoso",
    "FormerPositions": [{
            "Position": "Customer service representative"
        }
    ]
}

현재 가지고 있는 문자열 변수는 이 새 노드를 사용하여 Power Fx에서 완전한 IntelliSense 지원을 통해 레코드 변수로 변환할 수 있습니다. 샘플 데이터를 사용하는 예는 이 프로세스를 설명하는 데 도움이 됩니다.

값 구문 분석 노드 사용 예시

  1. 값 구문 분석 노드를 추가하고 구문 분석하려는 변수를 선택합니다.

    구문 분석할 변수 선택을 보여주는 스크린샷.

  2. 데이터 형식을 선택합니다. 이 경우 샘플 데이터에서를 선택합니다.

    구문 분석 값 노드에 대한 데이터 형식 선택을 보여주는 스크린샷.

  3. 샘플 JSON에서 스키마 가져오기를 선택하고 열리는 편집기에 원하는 JSON 예시를 입력합니다.

    샘플 JSON에서 스키마 가져오기를 보여주는 스크린샷.

  4. 마지막으로 구문 분석된 값을 배치할 변수를 지정합니다. 일반적으로 이를 위해 새 변수를 생성합니다.

    구문 분석된 값에 대한 대상 변수 선택을 보여주는 스크린샷.

    출력 변수는 이제 올바른 유형인 레코드입니다.

    구문 분석된 데이터의 대상 변수가 원하는 유형인 레코드임을 보여주는 스크린샷.

값 구문 분석 노드는 JSON 문자열을 구문 분석하는 것뿐만 아니라 런타임에서 UntypedObjects를 구문 분석하는 주요 용도로 사용됩니다. 가장 일반적인 사용 사례는 이벤트를 수신하고 이벤트 값을 구문 분석해야 하는 경우입니다. 또는 런타임에 채널별로 달라지는 System.Activity.ChannelData 속성을 구문 분석할 수 있습니다.

Teams에서 들어오는 이벤트의 정보를 구문 분석하는 경우 Teams 개발자 설명서를 사용하여 예상되는 이벤트의 예를 찾은 다음 이 섹션의 앞부분에서 설명한 대로 이 예제를 샘플 데이터로 사용해야 합니다.