---
sourceDocument: Xanadu 대화형 인터페이스
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ko-KR/xanadu/conversational-interfaces

 Release :

    - xanadu

ft:locale :

    - ko-KR

ft:publication_title :

    - Xanadu 대화형 인터페이스

ft:clusterId :

    - convint

bundleId :

    - convint

workflow :

    - Platform


---

# 가상 에이전트 스크립트

# 가상 에이전트 스크립트 {#ariaid-title1}

* 릴리스 버전: Xanadu
* 
* 업데이트 날짜 2024년 08월 01일
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 소요 시간: 11분

스크립트 메서드 및 변수를 사용하여 ServiceNow® 가상 에이전트 응답, 트리거 및 플로우 스크립트와 같은 채팅 스크립트를 작성합니다. 변수는 실시간 지원 주제 및 대화에 대한 컨텍스트를 제공할 수도 있습니다.

가상 에이전트 스크립트는 사용자 또는 사용자의 입력에 대한 정보 유지와 같은 주제에 대한 컨텍스트를 제공할 수 있습니다. 이 정보를 사용하여 스크립트로 작성된 인사말 또는 확인을 표시하는 등 대화를 개인화할 수 있습니다. 스크립트는 대화 중에 얻은 정보에 대해 수행할 특정 작업을 지정할 수도 있습니다. 이러한 작업은 기록을 만들거나 업데이트 ServiceNow 하는 데 사용할 수 있습니다.

스크립트는 주제가 정의된 범위 내의 서버에서 실행됩니다. 모든 범위 보호가 적용됩니다. 범위가 지정된 애플리케이션에 대한 대화를 개발하는 경우 범위가 지정된 API를 사용해야 합니다. 서버 스크립트에서 실행되는 대부분의 API를 사용할 수 있습니다.

## 사용자 입력 및 ServiceNow 기록 변수 {#virtual-agent-scripts__section_ssh_pxw_sdb}

에서는 가상 에이전트주제에 대해 만드는 스크립트에서 다음 변수를 사용할 수 있습니다.  

사용자 입력 변수

:   주제에 입력 컨트롤을 추가하면 시스템이 자동으로 변수를 생성하여 사용자 입력(문자열, 부울 값 등)을 저장합니다. 구문은 `vaInputs.myvar` 이며, 여기서 `myvar` 은 입력 노드에 할당한 이름입니다.

    예를 들어 <kbd class="ph userinput">첫 번째 프롬프트</kbd> 라는 이름의 텍스트 입력 프롬프트에는 `vaInputs.first_prompt`라는 시스템 정의 변수가 있습니다. 이름의 공백은 밑줄 문자로 대체되고 대문자는 소문자로 변경됩니다.

ServiceNow 기록 변수

:   테이블을 쿼리 ServiceNow 하는 주제에 대한 스크립트를 만들면 반환된 기록 객체(GlideRecord)를 자동으로 주제에서 사용할 수 있게 됩니다. 변수 구문은 `vaInputs.myvar` 이며, 여기서 `myvar` 은 레코드 개체입니다. 레코드 개체를 반환하기 위해 테이블을 쿼리 ServiceNow 하는 방법에 대한 자세한 내용은 [스크립트에서 테이블 쿼리를](https://www.servicenow.com/docs/access?context=c_UsingGlideRecordToQueryTables&version=xanadu&pubname=xanadu-api-reference&ft:locale=en-US) 참조하십시오.

    기록을 포함하는 ServiceNow 변수에서 닷워킹을 사용하여 테이블의 특정 필드를 지정합니다. 구문은 `vaInputs.myvar.field`입니다. 스크립트 내의 닷워킹에 대한 자세한 내용은 [닷워킹 예제를](https://www.servicenow.com/docs/access?context=dot-walking-examples&version=xanadu&pubname=xanadu-platform-user-interface&ft:locale=en-US) 참조하십시오.

사용자 입력 및 ServiceNow 기록 변수에 액세스

:   vaInputs 객체를 사용하여 스크립트의 기록 변수에 액세스 ServiceNow 합니다. 예를 들어 `vaInputs.myvar == "expected value"`입니다. 기록이 아닌 사용자 입력의 값에 액세스하려면 `vaInputs.myvar.getValue()를` 사용합니다.

    다음과 같은 방법을 사용할 수 있습니다.  
    {#virtual-agent-scripts__table_uht_pzs_cpb__entry__2}

    | 방법 | 설명 |
    |-|-|
    | vaInputs.myvar == "예상 값" | `myvar`이 예상 값과 일치하는지 여부를 평가합니다. 주: 사용자 입력 변수의 값은 사용자 입력 컨트롤을 사용하여 할당됩니다. 이러한 값은 스크립트에서 변경할 수 없습니다. * 이 릴리스는 Xanadu 추가 데이터 유형을 지원합니다. 자세한 내용은 [주제의 가상 에이전트 입력 데이터 유형](https://servicenow-prod.fluidtopics.net/FpTV91nNTN5uLmd5BZhmpQ "스크립트를 작성하지 않고 일반적으로 사용되는 Glide 가상 에이전트 (com.glide.cs.chatbot) 데이터 유형의 입력을 정의할 수 있습니다 가상 에이전트 디자이너 . 사용자 지정 컨트롤 또는 주제 블록의 시작 노드에서 입력 데이터 유형을 정의합니다.") 문서를 참조하십시오. * 기본적으로 사용자 변수는 사용할 수 있으며 사용자의 sys_user 기록에 대한 참조입니다. {#virtual-agent-scripts__ul_dsz_rbt_cpb} |
    | vaInputs.myvar.getValue(); | 값을 반환합니다. |
    | vaInputs.myvar.getDisplayValue(); | 저장된 값이 기록이 아닌 ServiceNow 경우 표시 값을 반환합니다. 기록을 포함하는 ServiceNow 변수의 경우 이 메서드는 해당 테이블의 표시 필드에 정의된 표시 값을 반환합니다. 다음 예제에서는 사용자 입력에 대한 레이블 및 선택 값 값을 보여 줍니다. 이 경우 `myVar.getValue()` 는 10, 20 또는 30의 값을 반환하고 `myVar.getDisplayValue()` 는 Apple, Orange 또는 Pear를 반환합니다. 그림 1. 선택 목록 예시 |
    | vaInputs.myvar.getDefaultValue(); | 확인 메시지에서 기본값을 반환합니다. |
    | vaInputs.myvar.getDefaultDisplayValue(); | 확인 메시지의 기본값에 대한 표시 값을 반환합니다. |
    | vaInputs.myvar.unbindEntity(); | 예측 서비스 슬롯이 NLU 추출된 엔터티로 채운 입력 변수의 값을 제거합니다(초기 입력 값에서 바인딩 해제). 예를 들어 사용자가 확인 프롬프트에서 선택 사항을 변경하기로 결정한 경우 입력 변수에서 엔터티 값을 바인딩 해제할 수 있습니다. 그런 다음 사용자가 해당 입력 노드로 루프백할 때 메시지가 다시 표시됩니다. 주: NLU 주제에서 활성화해야 합니다. 에서 가상 에이전트 디자이너설정할 속성 탭을 NLU선택합니다. 엔터티 정의 NLU 에 대한 자세한 내용은 [엔터티를](https://www.servicenow.com/docs/access?context=entities&version=xanadu&pubname=xanadu-intelligent-experiences&ft:locale=en-US) 참조하십시오. |
    [표 1. vaInputs 메서드]

    {#virtual-agent-scripts__table_uht_pzs_cpb}

## 스크립트 변수 {#virtual-agent-scripts__section_kpv_qxj_12b}

테이블에 저장 ServiceNow 되지 않지만 주제의 다른 곳에서 해당 정보를 공유하는 데 사용할 수 있는 정보에 대한 스크립트 변수를 정의할 수 있습니다. 스크립트 변수는 정수, 부울 값 또는 문자열과 같은 기본 요소를 저장하는 워크플로우 스크래치패드 변수와 유사합니다. 문자열 값은 정적 또는 동적 스크립트 값일 수 있습니다. 변수 사이드바를 사용하여 의 가상 에이전트 디자이너주제에 대한 스크립트 변수를 정의합니다.  
그림 2. 변수 사이드바  
주:  
스크립트 변수는 고급 스크립팅 기술을 갖춘 주제 작성자가 사용할 수 있습니다.

변수 구문은 `vaVars.myvar`이며, 여기서 `myvar` 은 변수에 할당하는 이름입니다. 예를 들어, `vaVars.myvar = value;`를 사용하여 변수에 값을 할당할 수 있습니다. 사용자 입력 변수와 달리 스크립트 변수는 스크립트에서 값을 할당할 수 있습니다.

주제에서 스크립트 변수를 정의하는 방법에 대한 자세한 내용은 을 참조하십시오 [주제에 대한 스크립트 변수 정의](https://servicenow-prod.fluidtopics.net/pOWOg22Mack9wjhA54I7tw "변수 사이드바를 사용하여 주제에 대한 스크립트 변수를 정의합니다. 스크립트 변수는 테이블에서 ServiceNow 찾을 수 없는 정보를 저장할 수 있습니다. 그런 다음 이 정보를 주제의 다른 곳에서 공유할 수 있습니다.").

## 컨텍스트 변수 {#virtual-agent-scripts__section_mc5_tvw_22b}

컨텍스트 변수는 전역 범위에서 작동하는 반면 시스템 변수는 주제 범위 내에서 작동합니다. 웹 클라이언트 URL 내의 시스템 매개변수에 컨텍스트 변수를 사용할 수 있습니다. 이러한 변수는 `vaContext` 개체를 사용하여 대화의 어느 곳에서나 사용할 수 있습니다. 이러한 옵션을 사용하여 미리 정의된 변수를 가진 링크를 만들 수 가상 에이전트 있습니다.

다음 예제 링크에는 `매개 변수 sysparm_city=milan`이 포함되어 있습니다. 이 링크를 사용하면 대화를 여는 가상 에이전트 것 외에도 `Milan` 값을 갖는 `city`라는 변수가 생성됩니다. `이 변수는 vaContext.city`를 사용하여 스크립트에서 액세스할 수 있습니다.

    https://<instance>.service-now.com/$sn-va-web-client-app.do?sysparm_city=milan

주제 스크립트에서 사용할 수 있는 변수는 다양 라이브 에이전트 합니다. 이러한 변수에는 다음이 포함됩니다.

* <var class="keyword varname">신청</var>
* <var class="keyword varname">언어</var>
* <var class="keyword varname">portal</var>
* <var class="keyword varname">search_text</var>
* <var class="keyword varname">short_description</var>
{#virtual-agent-scripts__ul_nvm_krg_rwb}

변수 구문은 `vaContext.LiveAgent_myvar`이며, 여기서 `myvar` 은 사용 가능한 [라이브 에이전트 컨텍스트 변수](https://servicenow-prod.fluidtopics.net/3diGoZdXgCZdgpn9OIklOQ "채팅 컨텍스트 변수를 사용하여 주제의 특정 정보를 전달하여 라이브 에이전트와 공유하거나 봇 대화가 라이브 에이전트로 라우팅되는 방식을 제어합니다. 가상 에이전트 에는 몇 가지 기본 변수가 포함되어 있으며 새 변수를 정의할 수 있습니다.") 중 하나입니다. `vaContext.LiveAgent_myvar = value;`를 사용하여 변수에 액세스합니다.

주제 스크립트에서 변수를 사용하려면 라이브 에이전트 에서 가상 에이전트 디자이너주제를 여십시오. 속성 탭에서 라이브 에이전트 변수 옆에 있는 연필 아이콘을 선택하여 주제에 추가합니다.

에 가상 에이전트포함된 라이브 에이전트 컨텍스트 변수에 대한 자세한 내용은 다음 문서를 참조하십시오 [라이브 에이전트 채팅 컨텍스트 변수](https://servicenow-prod.fluidtopics.net/3diGoZdXgCZdgpn9OIklOQ "채팅 컨텍스트 변수를 사용하여 주제의 특정 정보를 전달하여 라이브 에이전트와 공유하거나 봇 대화가 라이브 에이전트로 라우팅되는 방식을 제어합니다. 가상 에이전트 에는 몇 가지 기본 변수가 포함되어 있으며 새 변수를 정의할 수 있습니다.").

## vaSystem 메서드 {#virtual-agent-scripts__section_bdc_wtr_h2b}

vaSystem 객체의 메서드를 사용하여 다양한 작업을 수행할 수 있습니다. 이러한 작업 중 일부는 다음과 같습니다.

* 기록에 이미지를 첨부합니다.
* 현재 주제를 찾는 데 사용된 검색 문자열에 액세스합니다.
* 라이브 에이전트를 사용하여 대화를 수신할 수 있는지 확인합니다.
* 사용자를 라이브 에이전트에 연결합니다.
{#virtual-agent-scripts__ul_rgh_w31_fpb}  
주:  
문서화되지 않은 시스템 메서드는 지원되지 않으며 사전 통지 없이 언제든지 중단되거나 변경될 수 있으므로 사용하지 않는 것이 좋습니다.
{#virtual-agent-scripts__table_xvn_c5r_h2b__entry__2}

| 방법 | 설명 |
|-|-|
| vaSystem.applyLinkTemplate(문자열 sysId, 문자열 tableName, 문자열 actionName) | 포털과 관련된 외부 링크를 생성합니다. |
| vaSystem.attachRecordToConversation(문자열 tableName, 문자열 sysId) | 상호작용 기록의 관련 작업 목록에 기록을 첨부 ServiceNow 합니다 가상 에이전트 . 이러한 기록은 대화 중에 가상 에이전트 업데이트되거나 생성됩니다. |
| vaSystem.attachToRecord(문자열 mediaId, 문자열 tableName, 문자열 sysId) | 업로드된 이미지를 기록에 첨부합니다 ServiceNow . 이 메서드는 다음 매개 변수를 사용합니다. * `mediaId`: 첨부할 이미지의 경로입니다. 고객이 입력한 이미지를 사용하려면 이미지 입력 변수에 `getValue()` 를 사용합니다. 예: `vaInputs.image_input.getValue()`. * `tableName`: 테이블 이름을 포함하는 문자열입니다. * `sysId`: 기록의 sys_id입니다. {#virtual-agent-scripts__ul_dlj_4yr_h2b} |
| vaSystem.connectToAgent() | 고객을 라이브 에이전트에 연결합니다. 이 방법에 대한 자세한 내용은 을 참조하십시오 [Live Agent로 대화 전송 가상 에이전트](https://servicenow-prod.fluidtopics.net/94dDpqnYRyMvwT0Q1555EQ "대화가 라이브 에이전트로 전송될 때 가상 에이전트 사용되는 채팅 지원 인터페이스를 포함하여 라이브 채팅 지원을 관리합니다."). |
| vaSystem.didConnectToLiveAgent() | 현재 대화가 라이브 에이전트에 연결되었는지 여부에 관계없이 부울(예 또는 아니오) 값을 반환합니다. |
| vaSystem.getClosingMessage()를 호출합니다. | 시스템 속성 com.glide.cs.general.closing_message에서 대화의 종결 메시지를 반환합니다. (메시지는 및 Slack와 같은 Microsoft Teams 타사 메시징 앱에 따라 다릅니다.) |
| vaSystem.getConversationId()를 호출합니다. | 현재 대화의 대화 ID를 반환합니다. |
| vaSystem.getGreetingMessage()를 호출합니다. | UI 메시지에서 "안녕하세요, 저는 가상 에이전트입니다. 오늘 제가 어떻게 도와드릴 수 있을지 알려주세요." |
| vaSystem.getInteractionSysId() | 현재 대화의 상호작용 ID를 반환합니다. |
| vaSystem.getSearchText() | 사용자가 입력한 마지막 발언을 반환합니다. |
| vaSystem.getTopicSelectionMessage()를 호출합니다. | "귀하의 문제 또는 요청은 무엇입니까? 아니면 제가 뭘 도와드릴까요?" (메시지는 및 Slack와 같은 Microsoft Teams 타사 메시징 앱에 따라 다릅니다.) 이 메서드는 시스템 속성 com.glide.cs.topic_picker_msg에서 반환됩니다. |
| vaSystem.getTranscript()를 호출합니다. | 대화 녹취록을 가져옵니다. |
| vaSystem.isLiveAgentAvailable()을 호출합니다. | 봇에서 전송된 대화를 라이브 에이전트가 수신할 수 있는지 여부를 확인합니다. 라이브 에이전트로 대화를 전송하려면 `vaSystem.connectToAgent()`를 사용하기 전에 이 메서드를 호출합니다. |
| vaSystem.isLiveAgentConfigured() | 라이브 채팅이 활성화되어 있는지 여부를 반환합니다. |
| vaSystem.resetAllEntities()를 호출합니다. | 대화에 기록된 모든 엔터티를 재설정합니다. |
| vaSystem.sendBatchedMessages()를 호출합니다. | 대기 중인 메시지를 즉시 보냅니다. |
| vaSystem.sendSeparatorMessage() | 구분 기호 메시지 라인을 보내고 `getClosingMessage()`에서 닫는 메시지를 반환합니다. |
| vaSystem.sendSystemMessage(문자열 메시지, 부울 showAvatar) | 시스템 메시지를 전송하고 `getGreetingMessage()`에서 인사말 메시지를 반환합니다. |
| vaSystem.sendTopicPickerControl(문자열 topicSelectionMessage, 문자열 topicPickerButtonLabel) | 메시지에 대한 관련 값과 "모두 표시" 단추 레이블이 있는 주제 선택기 컨트롤을 보냅니다. |
| vaSystem.switchTopicByName()을 호출합니다. | 사용자가 현재 대화 주제에서 지정된 주제 이름으로 이동할 수 있습니다. 사용자가 대화를 종료할 수 있도록 X 버튼을 사용할 수 있습니다. 주제가 끝나면 사용자는 전역 주제를 다시 시작합니다. 대화가 끝나면 사용자는 채팅 창 아래쪽 에서 여기를 클릭하여 새 대화를 시작 을 선택하여 주제를 다시 시작할 수 있습니다. 선택적 resumeBehavior 매개 변수는 다음과 같이 대화 흐름이 다시 시작되는 방법을 지정합니다. * If resumeBehavior=resume는 가상 에이전트 호출 항목을 다시 시작합니다. * 가상 에이전트 인 경우 resumeBehavior=skip호출 주제를 건너뜁니다. {#virtual-agent-scripts__ul_x2k_rxk_gtb} resumeBehavior 지정하지 않으면 인스턴스의 기본 동작이 사용됩니다. |
| vaSystem.switchTopicById(sysid) | 사용자가 현재 대화 주제에서 지정된 주제 ID로 이동할 수 있습니다. 사용자가 대화를 종료할 수 있도록 X 버튼을 사용할 수 있습니다. 주제가 끝나면 사용자는 전역 주제를 다시 시작합니다. 대화가 끝나면 사용자는 채팅 창 아래쪽 에서 여기를 클릭하여 새 대화를 시작 을 선택하여 주제를 다시 시작할 수 있습니다. 선택적 resumeBehavior 매개 변수는 다음과 같이 대화 흐름이 다시 시작되는 방법을 지정합니다. * If resumeBehavior=resume는 가상 에이전트 호출 항목을 다시 시작합니다. * 가상 에이전트 인 경우 resumeBehavior=skip호출 주제를 건너뜁니다. {#virtual-agent-scripts__ul_hwt_21l_gtb} resumeBehavior 지정하지 않으면 인스턴스의 기본 동작이 사용됩니다. |
| vaSystem.topicDiscovery(String searchTextOverride, Boolean keywordImpl) | 매개변수의 용어에 searchTextOverride 따라 주제 검색을 수행합니다. 이 메서드는 다음 매개 변수를 사용합니다. * `searchTextOverride`: 주제 검색을 실행할 문자열입니다. * `keywordImpl`: 키워드를 사용할지 여부를 결정하는 부울입니다. {#virtual-agent-scripts__ul_rq2_zst_ssb} |
[표 2. 주제 스크립트에 가상 에이전트 사용되는 메서드]

{#virtual-agent-scripts__table_xvn_c5r_h2b} {#virtual-agent-scripts__table_mqd_wqp_1jb__entry__2}

| 방법 | 설명 |
|-|-|
| sn_cs. VASystemObject.getTranscriptById(\<conversation sysId\>) | 현재 가상 에이전트 대화의 녹취록을 가져옵니다. |
[표 3. 주제 외부 가상 에이전트 에서 사용할 수 있는 메서드]

{#virtual-agent-scripts__table_mqd_wqp_1jb}
**관련 개념**   

* [도메인 분리 및 가상 에이전트](https://servicenow-prod.fluidtopics.net/qyNZ6Qcsflpq1_CiKOV7LA "도메인 분리는 가상 에이전트 애플리케이션에서 지원됩니다. 도메인 분리를 사용하여 데이터, 프로세스 및 관리 작업을 도메인이라는 논리적 그룹으로 분할할 수 있습니다. 어떤 사용자가 데이터를 보고 액세스할 수 있는지를 포함하여 이러한 분리의 여러 측면을 제어할 수 있습니다.")
* [가상 에이전트 상호작용 기록](https://servicenow-prod.fluidtopics.net/14GC0hGxS3vuVi5no2lnbw "대화가 가상 에이전트 발생할 때마다 상호작용 기록은 상호작용 [interaction] 테이블에서 전체 대화를 캡처합니다. 이 기록에는 대화에 사용된 모든 주제 요소뿐만 아니라 라이브 에이전트 전송도 포함됩니다.")  
**관련 참조**   

* [주제의 가상 에이전트 입력 데이터 유형](https://servicenow-prod.fluidtopics.net/FpTV91nNTN5uLmd5BZhmpQ "스크립트를 작성하지 않고 일반적으로 사용되는 Glide 가상 에이전트 (com.glide.cs.chatbot) 데이터 유형의 입력을 정의할 수 있습니다 가상 에이전트 디자이너 . 사용자 지정 컨트롤 또는 주제 블록의 시작 노드에서 입력 데이터 유형을 정의합니다.")
* [NLU 시스템 엔터티](https://servicenow-prod.fluidtopics.net/PNyqgYSxCfeyuEW7UwND2Q "전역적으로 정의된 NLU 엔터티를 사용하여 대화에서 추출할 수 있는 가상 에이전트 시스템 정보를 식별합니다. 엔터티를 주제에 대한 \"노드 없는\" 입력 변수로 정의할 수 있습니다. 이러한 변수는 서비스 제공자 예측에서 NLU 슬롯으로 채워지거나 주제 범위 밖에서 제공될 수 있습니다.")
* [가상 에이전트 URL 매개변수](https://servicenow-prod.fluidtopics.net/RSbZaxn5EIr407WgvD1VIw "가상 에이전트 는 관리자가 인스턴스 URL에 추가하여 페이지 컨텐츠가 렌더링되는 방식을 제어할 수 있는 다양한 시스템 매개변수를 제공합니다.")
* [의 대기 시간 피드백 가상 에이전트](https://servicenow-prod.fluidtopics.net/gZXQRNujmaSqegNXTBfiKg "com.glide.cs.message.processing.enabled 이 시스템 속성은 생성형 AI LLM(대규모 언어 모델)이 웹 클라이언트 및 Now Assist 패널에서 가상 에이전트 요청을 처리할 때마다 요청자에게 알립니다.")

