변수는 에이전트의 질문에 대한 고객의 응답을 저장합니다. 예를 들어, 고객 이름을 UserName이라는 변수에 저장할 수 있습니다. 그러면 에이전트는 대화가 계속됨에 따라 이름으로 고객을 지칭할 수 있습니다.
기본적으로 변수 값은 변수가 생성되는 토픽에서만 사용할 수 있습니다. 그러나 토픽 간에 동일한 값을 재사용할 수 있습니다. 예를 들어 시작 토픽 봇은 고객의 이름과 이메일 주소를 요청합니다. 약속 예약 항목에서 에이전트가 고객이 입력한 내용을 기억하고 다시 묻지 않도록 할 수 있습니다.
변수를 재사용하는 한 가지 방법은 한 토픽에서 다른 토픽으로 변수를 전달하는 것입니다. 다른 방법은 변수를 전역 범위로 만드는 것이며 이 문서에서 다루는 내용입니다. 전역 변수는 전체 에이전트의 모든 주제에서 사용할 수 있기 때문에 그렇게 불립니다. 외부 소스에서 설정할 수도 있습니다.
전역 변수는 단일 사용자 세션 중에 적용됩니다. 토픽 수준 변수와 구별하기 위해 전역 변수인 변수를 지정합니다.
전역 변수 만들기
토픽 변수의 범위를 변경하여 전역 변수를 생성합니다.
참고
전역 변수의 이름은 모든 토픽에서 고유해야 합니다.
글로벌 변수 사용
메시지 노드 또는 질문 노드에서 메시지를 작성할 때 {x} 아이콘을 선택하면 해당 토픽에서 사용할 수 있는 변수를 볼 수 있습니다. 전역 변수는 토픽 변수와 함께 사용자 정의 탭에 나타납니다. 변수는 알파벳순으로 나열됩니다.
전역 변수를 사용하여 모든 토픽 찾기
전역 변수가 정의된 위치와 이를 사용하는 다른 항목을 찾을 수 있습니다. 이 기능은 새로운 에이전트에서 작업하거나 여러 변수가 있고 복잡한 토픽 분기가 있을 때 유용합니다.
제작 캔버스나 변수 패널에서 원하는 전역 변수를 선택합니다.
변수 속성 패널의 참조 섹션에서 모든 참조 보기를 선택합니다.
기타 탭으로 전환하고 변수를 사용하여 해당 토픽과 노드로 직접 이동하는 토픽을 선택합니다.
전역 변수 삭제
다른 항목에서 사용된 전역 변수를 제거하면 항목에서 해당 변수에 대한 참조가 Unknown으로 표시됩니다. 작업을 확인하기 전에 전역 변수 삭제에 대한 경고가 표시됩니다.
삭제된 전역 변수에 대한 참조가 포함된 노드는 알 수 없는 변수가 포함되어 있음을 나타냅니다.
삭제된 전역 변수에 대한 참조가 포함된 노드가 있는 토픽은 작동을 멈출 수 있습니다. 에이전트를 게시하기 전에 삭제된 변수를 사용하고 있던 모든 토픽을 제거하거나 수정해야 합니다.
전역 변수의 수명 주기
기본적으로 전역 변수의 값은 세션이 종료될 때까지 지속됩니다. 변수 값 지우기 노드는 전역 변수 값을 재설정하며 대화 재설정 시스템 토픽에서 사용됩니다. 리디렉션이 해당 항목을 트리거하면(또는 사용자가 "다시 시작"과 같은 문구를 입력하면) 모든 전역 변수가 재설정됩니다.
외부 소스에서 전역 변수 설정
에이전트가 일부 컨텍스트로 대화를 시작하도록 하려면 전역 변수를 사용하고 외부 소스에서 해당 값을 설정할 수 있습니다. 사이트에서 사용자가 로그인해야 한다고 가정해 보겠습니다. 사용자 이름을 전역 변수에 저장하고 에이전트에게 전달하면 에이전트는 고객이 첫 번째 질문을 입력하기 전에 이름을 부르며 인사할 수 있습니다. 또 다른 예제 시나리오는 Dynamics 365 Customer Service에서 에이전트에게 컨텍스트를 전달하여 고객이 달성하고자 하는 것에 대한 지식으로 대화를 시작할 수 있도록 하는 것입니다.
바람직하지 않은 지연 시간을 방지하기 위해 에이전트가 값을 기다릴 수 있는 시간을 지정할 수 있습니다. 외부 소스가 적시에 응답하지 않을 때 사용할 기본값을 설정할 수도 있습니다.
참고
IVR 사용 사례에 대해 Dynamics 365 Contact Center 채널에 게시된 에이전트는 외부 소스에서 설정한 전역 변수에 대해 구성된 시간 제한 값을 지원하지 않습니다.
외부 소스에서 설정하려는 모든 변수에 대한 구성을 저장할 전용 토픽을 만듭니다. 예를 들어 이 토픽의 이름을 "컨텍스트 변수 설정"으로 지정할 수 있습니다. 이 토픽은 다른 용도로 사용되지 않으므로 트리거 문구를 설정할 필요가 없습니다.
변수 값 설정 노드를 전용 토픽에 추가합니다.
변수 설정에서 변수 선택기를 열고 새 변수 만들기를 선택합니다.
새 변수의 기본 이름을 선택합니다. 변수 속성 패널이 나타납니다.
기본 이름을 외부 시스템에서 전달되는 변수의 이름과 정확히 일치하는 이름으로 바꿉니다.
사용에서 전역(모든 토픽에서 액세스 가능)과 외부 소스에서 값을 설정할 수 있음을 선택합니다.
참조에서 오른쪽 위 모서리에 있는 자세히 아이콘(⋮)을 선택하고 비어 있는 경우 이 노드에서 값 가져오기를 선택합니다.
(선택 사항) 제한 시간 지연을 밀리초 단위로 설정합니다. 이 값은 외부 소스에 의해 변수가 설정되기를 기다리는 동안 에이전트가 타임아웃되기 전까지 기다릴 수 있는 시간을 결정하며, 타임아웃 후에는 변수 값 설정 노드에서 설정한 기본값으로 계속 진행합니다. 이 설정은 변수가 장기 실행 또는 비동기 프로세스에 의존하는 시나리오와 관련이 있지만 에이전트는 좋은 사용자 경험을 보장하기 위해 최대 대기 시간을 준수해야 합니다.
Customer Service용 옴니채널에서 오는 변수의 경우 최대 대기 시간으로 10초(10,000ms) 값을 제안합니다.
변수 값 설정 노드에 제한 시간에 도달할 경우 사용할 기본값을 입력합니다. 런타임 시 에이전트는 동일한 데이터 유형의 값을 예상합니다. 이 기본값을 빈 문자열로 만들려면
Text("")를 수식으로 사용합니다.
외부 시스템에서 가져올 것으로 예상되는 다른 값의 경우 전용 토픽에 변수 값 설정 노드를 추가하고 동일한 방식으로 필요한 전역 변수를 구성합니다.
따라서 에이전트를 테스트할 준비가 되었습니다. 에이전트가 호출되면 모든 변수가 채워질 때까지 무한정 기다리는 대신 에이전트는 전달되는 변수에 종속되지 않는 모든 메시지를 즉시 보내기 시작할 수 있습니다. 에이전트가 외부에서 설정되는 변수에 액세스하려고 하면 값이 도착하거나 시간 초과가 발생할 때까지 일시 중지됩니다. 대기 시간을 최소화하기 위한 에이전트 최적화에 대해 자세히 알아보세요.
중요
대화의 정상적인 흐름 중에 에이전트가 외부 값에 대해 제공되는 변수를 설정하면 에이전트 내에서 설정된 값이 우선합니다. 컨텍스트에 전달된 모든 값은 무시됩니다. 이 규칙은 에이전트가 주제에 의도적으로 설정된 값을 덮어쓰는 것을 방지합니다.
내장된 에이전트에서 전역 변수 설정
간단한 웹 페이지에 에이전트를 포함시키는 경우 에이전트의 URL에 변수와 해당 정의를 추가할 수 있습니다. 또는 좀 더 제어하기를 원하면 <script> 코드 블록을 사용하여 프로그래밍 방식으로 변수를 호출하고 사용할 수 있습니다.
URL의 쿼리 문자열의 변수 이름은 Global. 접두사가 없는 전역 변수 이름과 일치해야 합니다. 예를 들어 전역 변수 Global.UserName은 쿼리에서 UserName으로 참조됩니다.
이어지는 예제에서는 변수에 대한 기본 선언을 사용합니다. 프로덕션 시나리오에서는 사용자 이름을 이미 저장한 다른 변수를 쿼리 매개 변수 또는 변수 정의로 전달할 수 있습니다(예: 로그인 스크립트의 사용자 이름이 있는 경우).
변수와 그 정의를 에이전트의 URL에 형식의 botURL?variableName1=variableDefinition1&variableName2=variableDefinition2로 추가합니다.
예:
-
Global.UserName이라는 전역 변수가 있습니다. - 에이전트의 URL은 https://web.powerva.microsoft.com/webchat/bots/12345입니다.
- 웹 사이트에서 에이전트 대화를 시작할 때 사용자 이름을 전달하려면
UserName=쿼리 문자열을 https://web.powerva.microsoft.com/webchat/bots/12345?UserName=Ana로 첨부하세요.
매개 변수 이름은 대소문자를 구분하지 않습니다. 이 예에서는 username=Ana도 작동합니다.
사용자 지정 캔버스에 전역 변수 추가
사용자 지정 캔버스에 변수를 추가할 수도 있습니다.
에이전트가 있는 페이지의
<script>섹션에서 변수 이름을variableName1접두사 없이Global.으로, 정의를variableDefinition1으로 대체하여 다음과 같이 변수를 정의합니다. 여러 변수를 쉼표(,)로 구분하세요.const store = WebChat.createStore({}, ({ dispatch }) => next => action => { if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') { dispatch({ type: "WEB_CHAT/SEND_EVENT", payload: { name: "pvaSetContext", value: { "variableName1": "variableDefinition1", "variableName2": "variableDefinition2" } }, }); } return next(action); });<script>섹션에서 에이전트를 내장할 때store를 호출합니다. 다음 예에서store는styleOptions가 호출되기 바로 전에 호출됩니다(BOT_ID를 에이전트의 ID로 바꿔야 함).const BOT_ID = "12345-5678"; const theURL = "https://powerva.microsoft.com/api/botmanagement/v1/directline/directlinetoken?botId=" + BOT_ID; fetch(theURL) .then(response => response.json()) .then(conversationInfo => { window.WebChat.renderWebChat( { directLine: window.WebChat.createDirectLine({ token: conversationInfo.token, }), store, styleOptions }, document.getElementById('webchat') ); }) .catch(err => console.error("An error occurred: " + err));
인증 관련 전역 변수
에이전트의 인증 설정에 따라 선택한 인증 공급자와 연결된 전역 변수 집합이 있습니다. 사용 가능한 변수 집합 및 사용 방법에 대한 자세한 내용은 토픽에 사용자 인증 추가를 참조하십시오.