동적 선택 사용자 입력 통제

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 12일
  • 읽기16분
  • 주제에서 가상 에이전트 동적 선택 사용자 입력 컨트롤을 사용하여 사용자가 사용할 수 있는 선택 목록 목록을 동적으로 만들 수 있습니다. 이러한 선택 항목은 테이블을 쿼리하거나 스크립트를 사용하여 동적으로 만듭니다.

    선택 목록 표시

    동적 선택 목록에는 페이지당 최대 10개의 항목이 포함됩니다. 10개 이상의 항목이 있는 경우 추가 항목을 표시하고 검색 결과를 필터링할 수도 있습니다. 선택 목록 프롬프트에는 사용자가 결과를 필터링하기 위해 선택할 수 있는 검색 아이콘이 포함되어 있습니다.

    팁:
    페이지당 나열되는 기본 항목 수를 변경하려면 시스템 속성을 수정할 com.glide.cs.picker_page_limit 수 있습니다. 기본값은 10입니다.

    다중 선택 항목이 켜져 있으면 검색 결과를 필터링하기 위한 옵션 검색 필드 내에서 검색할 수 있습니다. 해당하는 모든 선택 사항을 선택하거나 입력한 다음 보내기 아이콘 보내기 화살표 아이콘을 선택합니다. LLM(Large Language Model)이 활성화 가상 에이전트된 를 통해 선택 항목을 보내면 LLM은 선택 항목이 유효성 검사 기준을 충족하는지 여부에 응답합니다.

    채팅 창에 발언을 입력하여 LLM 지원 대화의 목록에서 선택 사항을 선택할 수도 있습니다. 입력 가상 에이전트 과 일치하는 항목이 없으면 유효한 선택이 아님을 알리고 다른 입력을 시도하라는 메시지를 표시합니다.

    동적 선택 컨트롤은 선택 목록 위에 표시되는 헤더 카드를 추가하는 옵션도 제공합니다. 헤더 카드는 웹 및 모바일 채널에서 지원됩니다.
    • 헤더 카드에는 설명 텍스트와 함께 크거나 작은 이미지 또는 YouTube 동영상 카드가 포함될 수 있습니다. 선택 목록에는 기본적으로 최대 5개의 항목이 포함되지만 검색 기능은 표시되지 않습니다. 5개 이상의 항목이 있는 경우 사용자는 추가 항목을 표시하도록 선택할 수 있습니다.

    • 헤더 카드 아래에 표시되는 항목 수를 제어하려면 시스템 속성을 추가합니다 com.glide.cs.web_header_picker_page_limit . 값을 사용하여 선택 목록의 항목 수를 지정합니다. 시스템 속성 만들기에 대한 자세한 내용은 시스템 속성 추가를 참조하십시오.

    주:

    동적 선택 목록 노드를 하나의 선택 항목으로만 채우면 노드를 테스트하거나 사용할 때 "[선택]을(를) [노드 이름]으로 사용했는데 맞습니까?"라는 메시지가 표시됩니다. 동적 선택 목록 노드에서 여러 선택 항목을 사용하여 이 메시지를 수신하지 않도록 합니다.



    다음으로 이동하여 메시지 내용을 변경할 수도 있습니다. ALL > sys_properties.list 을 클릭하고 시스템 속성을 편집합니다 glide.cs.retry_question_message . 이 메시지 값은 기본적으로 문자열입니다. {1}로 {0}했습니다. 맞습니까? 동적 선택 목록 외부의 여러 케이스에서 슬롯을 채우는 데 사용됩니다. 변경한 내용은 이 속성을 사용할 때마다 반영됩니다.

    동적 선택 LLM 주제 검색을 위한 사용자 입력 제어 속성

    속성 설명
    노드 이름 주제 플로우에서 이 동적 선택 사용자 컨트롤 노드를 식별하는 이름입니다.
    선택
    선택 항목 채우기 기준 사용할 동적 변수의 유형입니다. 다음 옵션 중 하나를 선택합니다.
    • 기록: 선택한 테이블에서 기록을 반환합니다. 이러한 옵션의 값은 GlideRecord 객체입니다.
    • 스크립트: 옵션 배열을 반환하는 식입니다.
      주:

      스크립트 표현식을 사용할 때 대규모 데이터 세트에 대한 보다 효율적인 페이지 매김 반환 결과를 위해 다음 스크립트를 검토하고 이 스크립트를 사용할지 여부를 결정합니다.

      (function execute() {
       
      var pagingUtil = new global.VirtualAgentChoicePagingUtil(null, "sys_user", null, "user_name,name",
      "active=true", null, vaVars);
       
      var gr = pagingUtil.getPagingGlideRecordSecure("name", false);
      
      var options = pagingUtil.getSecureOptions(gr, null,'user_name', ['user_name','name']);
      
      return options;
      })()
      

      앞의 스크립팅 상세 정보에 대한 자세한 내용은 GlideRecords 에 대한 정보와 추가 정보를 검토하십시오.

      • fieldName: 필드 이름은 선택적 정보입니다. null과 함께 전달합니다.
      • table: 사용 가능한 옵션을 표시하기 위해 쿼리할 테이블 이름입니다.
      • pageSize: 페이지 크기는 선택적 정보입니다. null과 함께 전달합니다.
      • searchColumns: 모든 searchText에 적용되는 쉼표로 구분된 목록의 테이블 열입니다.
      • encodedQuery: 테이블 행에 적용할 초기 질의. 예를 들어 active=true입니다.
      • searchText: 검색 텍스트는 선택적 정보입니다. null과 함께 전달합니다.
      • vaVars: 가상 에이전트 컨텍스트 변수(vaVars)에 대한 참조입니다.
      • orderByColumn: 옵션을 정렬하는 데 사용되는 테이블 열입니다.
      • orderDescending: 옵션이 내림차순으로 표시됩니다. true 또는 false 값만 허용됩니다.
      • gr: Glide 기록 이름입니다.
      • startRow: 시작 행은 선택적 정보입니다. null과 함께 전달합니다.
      • valueColumn: 각 옵션의 값으로 사용할 테이블 열 이름입니다.
      • labelColumns: 각 옵션 표시에 사용할 테이블 열의 배열입니다.
    테이블 선택 항목을 채우는 방법으로 기록을 선택한 경우 검색할 테이블을 선택합니다.

    이 필드는 기록 옵션을 선택한 경우에만 사용할 수 있습니다.

    선택 항목 필터링 조건 작성기를 사용하거나 가상 에이전트 디자이너 스크립트를 제공하는 옵션입니다. 다음 중 하나를 선택합니다.
    • 조건 작성기: 테이블에서 기록의 하위 집합을 선택하는 데 사용되는 필터를 만듭니다.
    • 스크립트: 표시할 옵션(선택 목록)의 열거형 목록을 정의합니다. 이름-값 쌍은 string형 객체로 저장됩니다.

    이 필드는 기록 옵션을 선택한 경우에만 사용할 수 있습니다.

    사용자가 둘 이상의 선택 항목을 선택할 수 있도록 허용 사용자가 선택 목록에서 여러 항목을 선택할 수 있도록 허용하는 옵션입니다.
    고급
    헤더 카드

    이미지 또는 YouTube 동영상을 포함할 수 있는 카드를 추가할 필드를 열려면 전환합니다. 자세한 내용은 정적 선택 또는 동적 선택 컨트롤에 헤더 카드 삽입 문서를 참조하십시오.

    사용자 프롬프트 적용

    대규모 언어 모델(LLM)에서 생성된 메시지 대신 사용자에게 표시되는 사용자 지정 메시지에 대한 필드를 열려면 전환합니다. 일반 언어로 사용자 지정 메시지를 생성하거나, 스크립트를 입력하거나, 데이터 알약 선택기를 사용하여 조건을 정의할 수 있습니다.

    확인

    사용자 입력의 유효성을 검사하는 스크립트를 추가합니다. 예를 들어 사용자가 유효한 이메일 주소를 입력했는지 확인합니다.

    LLM에 대한 추가 지침

    사용자 응답에 대한 데이터 형식, 제한 또는 기본값 추가와 같은 LLM에 대한 추가 지침입니다. 데이터 알약 선택기를 사용하여 일반 언어로 추가 지침을 생성하거나, 스크립트를 입력하거나, 조건을 정의할 수 있습니다.

    이 노드 숨기기 또는 건너뛰기
    다음과 같은 경우 이 노드를 조건부로 표시합니다.

    대화에 이 노드를 표시하기 위한 조건을 지정하는 노코드 조건문 또는 로우코드 스크립트입니다. 조건은 true로 평가되어야 합니다.

    다음과 같은 경우 사용자가 이 노드를 건너뛸 수 있도록 허용

    사용자가 대화에서 이 노드를 건너뛸 수 있도록 허용하는 조건을 지정하는 코드 없는 조건문 또는 로우 코드 스크립트입니다. 조건은 true로 평가되어야 합니다. 조건 작성기 또는 스크립트를 사용하여 이 필드를 설정할 수 있습니다.

    LLM 주제 검색을 위한 동적 선택 사용자 입력 통제의 예

    주:
    가상 에이전트 디자이너 컨트롤은 다른 채널에서 다르게 표시되고 작동할 수 있습니다.
    입력 속성 프롬프트 나열

    기본 속성에는 이름, 설명, 목록별 채우기 선택 및 필터링 옵션이 포함됩니다. 고급 옵션으로는 헤더 카드, 사용자 프롬프트 적용, LLM에 대한 추가 지침 및 이 노드 숨기기 또는 건너뛰기가 있습니다.

    그림 1. 웹 UI 동적 선택 목록 프롬프트
    동적 선택 목록은 사용자가 만든 인시던트 목록을 반환합니다.
    선택 목록에는 페이지당 10개의 항목이 표시됩니다. 10개 이상의 결과가 반환되는 경우:
    • 목록 끝에는 더 많은 결과를 표시할 수 있는 링크가 포함되어 있습니다.
    • 검색 아이콘()이 검색 결과 필터링 프롬프트에 표시됩니다. 사용자는 아이콘을 선택하여 검색 상자를 열고 필터를 입력합니다.
    • 여러 항목을 선택할 때 검색 결과 필터링을 위한 옵션 검색 필드 내에서 검색할 수 있습니다. 해당하는 모든 선택 사항을 선택하거나 입력한 다음 보내기 아이콘 보내기 화살표 아이콘을 선택합니다. 선택 항목을 보내면 LLM은 선택 항목이 검증 기준을 충족하는지 여부를 응답합니다.

    동적 선택 NLU 주제 검색을 위한 사용자 입력 통제 속성

    속성 설명
    노드 이름 주제 플로우에서 이 동적 선택 사용자 컨트롤 노드를 식별하는 이름입니다.
    변수 이름 이 프롬프트에 대한 사용자 응답을 저장하는 변수의 이름입니다. 변수 이름은 노드 이름 속성에서 자동으로 생성됩니다.
    프롬프트

    사용자에 대한 프롬프트 또는 질문입니다. 프롬프트는 텍스트 문자열 또는 텍스트를 반환하는 스크립트일 수 있습니다. 이 값은 기본값이 지정되지 않은 경우에만 사용됩니다. 예: 이름이 무엇입니까?

    서식 있는 텍스트를 생성하여 프롬프트의 스타일을 변경할 수 있습니다.
    • 기울임꼴 텍스트에는 단일 별표 또는 밑줄을 사용합니다. 예를 들어 *text* 또는 _text_입니다.
    • 굵은 텍스트에는 이중 별표 또는 밑줄을 사용합니다. 예를 들어 **text** 또는 __text__.
    • 기울임꼴 및 굵은 텍스트에는 세 개의 별표 또는 밑줄을 사용합니다. 예를 들어 text*** 또는 ___text___입니다.
    • 공백 하이픈을 사용하여 줄에 글머리 기호를 추가합니다. 예: 텍스트.
    • 간격이 있는 오른쪽 꺾쇠 괄호를 사용하여 블록 따옴표를 만듭니다. 예를 들어, > 텍스트입니다.
    • 1개에서 6개 사이의 해시 표시를 사용하여 머리글을 만듭니다. 예: #text# 또는 ######text######
    • 대괄호와 괄호를 사용하여 하이퍼링크를 만듭니다. 예를 들면 [링크 텍스트](url)입니다. 하이퍼링크에 느낌표를 추가하여 이미지를 표시합니다. 예를 들어, ![ 대체 텍스트](이미지 URL)
    NLU 엔터티

    엔터티를 NLU 노드와 연결하는 옵션입니다. NLU 엔터티가 이 노드 가상 에이전트 의 입력 변수와 연결된 경우 사용자의 발언에 따라 지정된 값을 슬롯으로 채울 수 있습니다. 주제 의도와 연결된 엔터티 목록에서 엔터티를 선택합니다.

    노드에 대한 엔터티를 지정하면 사용자에게 인식된 엔터티 토글 스위치를 확인하도록 묻지 않음이 표시됩니다. 사용하도록 설정하면 추출된 엔터티를 확인하라는 메시지가 표시되지 않습니다.

    이 필드는 인스턴스에서 검색이 활성화된 경우에만 NLU 사용할 수 있습니다.

    선택
    선택 항목 채우기 기준 사용할 동적 변수의 유형입니다. 다음 옵션 중 하나를 선택합니다.
    • 기록: 선택한 테이블에서 기록을 반환합니다. 이러한 옵션의 값은 GlideRecord 객체입니다.
    • 스크립트: 옵션 배열을 반환하는 식입니다.
    테이블 선택 항목을 채우는 방법으로 기록을 선택한 경우 검색할 테이블을 선택합니다.

    이 필드는 기록 옵션을 선택한 경우에만 사용할 수 있습니다.

    선택 항목 필터링 조건 작성기를 사용하거나 가상 에이전트 디자이너 스크립트를 제공하는 옵션입니다. 다음 중 하나를 선택합니다.
    • 조건 작성기: 테이블에서 기록의 하위 집합을 선택하는 데 사용되는 필터를 만듭니다.
    • 스크립트: 표시할 옵션(선택 목록)의 열거형 목록을 정의합니다. 이름-값 쌍은 string형 객체로 저장됩니다.

    이 필드는 기록 옵션을 선택한 경우에만 사용할 수 있습니다.

    사용자가 둘 이상의 선택 항목을 선택할 수 있도록 허용 사용자가 선택 목록에서 여러 항목을 선택할 수 있도록 허용하는 옵션입니다.
    기록 응답 메시지가 없습니다. 테이블 검색에서 기록을 반환하지 않을 때 사용자에게 표시되는 메시지입니다. 메시지는 텍스트 문자열 또는 텍스트를 반환하는 스크립트일 수 있습니다.
    고급
    헤더 카드

    이미지 또는 YouTube 동영상을 포함할 수 있는 카드를 추가할 필드를 열려면 전환합니다. 자세한 내용은 정적 선택 또는 동적 선택 컨트롤에 헤더 카드 삽입 문서를 참조하십시오.

    기본값
    기본값

    질문 또는 프롬프트에 대한 사용자 응답의 미리 정의된 값입니다. 기본값 확인 필드에 정의된 응답은 사용자에게 기본값을 확인하도록 요청합니다. 사용자가 no로 응답하면 값이 null이 됩니다. 기본값은 텍스트 문자열 또는 텍스트를 반환하는 스크립트일 수 있습니다. 예를 들어 닷워킹을 사용하는 경우 기본값은 스크립트 변수 > 마지막 사용자 이름일 수 있습니다. 또는 스크립트를 사용하는 경우 기본값은 {{vaScripts.lastUsername}}일 수 있습니다.

    확인 메시지
    입력 완료 확인

    노드 상호작용이 완료되면 사용자에게 표시되는 봇 응답입니다. 메시지는 텍스트 문자열 또는 텍스트를 반환하는 스크립트일 수 있습니다. 예를 들어 닷워킹을 사용하는 경우: 감사합니다(입력 변수 > 사용자 이름)! 또는 스크립트를 사용하는 경우 {{ vaInputs.username}} 감사합니다!

    기본값 확인

    기본값 필드의 값이 올바른지 사용자에게 확인하도록 요청하는 메시지입니다. 이 메시지는 프롬프트 필드의 값 대신 사용됩니다. 텍스트 문자열 또는 텍스트를 반환하는 스크립트를 포함할 수 있습니다. 예를 들어 닷워킹을 사용하는 경우: 사용자(입력 변수 > 사용자 이름)입니까? 또는 스크립트를 사용하는 경우 확인 메시지는 {{vaScripts.lastUsername}}입니까?일 수 있습니다.

    대화 전환
    이 섹션은 인스턴스에서 검색이 활성화된 경우에만 NLU 사용할 수 있습니다.
    사용자가 제목을 변경할 수 있도록 켜기

    이 노드에 대한 예측을 활성화 NLU 하는 옵션입니다. 사용하도록 설정하면 사용자는 사용 중인 입력 컨트롤의 유형에 관계없이 텍스트를 입력하여 질문에 답할 수 있습니다. 가상 에이전트 을 사용하여 다른 기존 의도와 일치시키므로 사용자가 주제를 전환할 수 있습니다.

    이 노드 숨기기 또는 건너뛰기
    다음과 같은 경우 이 노드를 조건부로 표시합니다.

    대화에 이 노드를 표시하기 위한 조건을 지정하는 노코드 조건문 또는 로우코드 스크립트입니다. 조건은 true로 평가되어야 합니다.

    다음과 같은 경우 사용자가 이 노드를 건너뛸 수 있도록 허용

    사용자가 대화에서 이 노드를 건너뛸 수 있도록 허용하는 조건을 지정하는 코드 없는 조건문 또는 로우 코드 스크립트입니다. 조건은 true로 평가되어야 합니다. 조건 작성기 또는 스크립트를 사용하여 이 필드를 설정할 수 있습니다.

    다음과 같은 경우 재요청을 건너뜁니다. 사용자가 대화에서 다시 요청을 건너뛸 수 있도록 하는 조건을 지정하는 코드 없는 조건문 또는 로우 코드 스크립트입니다. 주제 루프백 또는 대화 상자 법칙을 통해 이전 노드로 다시 돌아가면 가상 에이전트가 이 노드를 무시하고 원래 값을 자동으로 유지합니다.

    NLU 주제 검색을 위한 동적 선택 사용자 입력 통제의 예

    주:
    가상 에이전트 디자이너 컨트롤은 다른 채널에서 다르게 표시되고 작동할 수 있습니다.
    입력 속성 프롬프트 나열
    그림 2. 동적 선택 사용자 입력 통제 기본 속성
    기본 속성에는 노드 이름, 프롬프트, NLU 엔터티 및 목록으로 선택 항목 채우기가 포함됩니다.
    그림 3. 웹 UI 동적 선택 목록 프롬프트
    동적 선택 목록은 사용자가 만든 인시던트 목록을 반환합니다.
    선택 목록에는 페이지당 10개의 항목이 표시됩니다. 10개 이상의 결과가 반환되는 경우:
    • 목록 끝에는 더 많은 결과를 표시할 수 있는 링크가 포함되어 있습니다.
    • 검색 아이콘()이 검색 결과 필터링 프롬프트에 표시됩니다. 사용자는 아이콘을 선택하여 검색 상자를 열고 필터를 입력합니다.
    • 여러 항목을 선택할 때 검색 결과 필터링을 위한 옵션 검색 필드 내에서 검색할 수 있습니다. 이 항목에 있는 보조 필드를 활성화하는 스크립트를 입력하면 검색 필터 결과가 보조 필드에도 적용됩니다. 해당하는 모든 선택 항목을 선택하거나 입력한 다음 보내기 아이콘 보내기 화살표 아이콘을 선택합니다.
    그림 4. 헤더 카드가 있는 웹 UI 동적 선택 목록 프롬프트
    "무엇을 확인하고 싶으십니까?"라는 메시지가 나오고 호텔 사진과 제목이 이어집니다. 선택에는 식사, 스위트 및 시설이 포함됩니다.
    선택 목록에는 페이지당 5개의 항목이 포함되어 있습니다. 5개 이상의 결과가 반환되면 목록에 더 많은 결과를 표시하는 옵션이 제공됩니다.
    주:
    헤더 카드를 사용하면 검색 기능이 억제됩니다.

    동적 선택 스크립트 예시

    다음 스크립트 예시는 선택 항목 채우기 기준의 값이 스크립트로 설정된 경우에만 선택 정의 필드에서 사용할 수 있습니다. 이 스크립트를 사용하면 요청자가 나중에 대화에서 선택 사항을 편집하도록 선택하는 경우 이전에 선택한 항목을 볼 수 있습니다. 또한 이 스크립트는 요청자에게 이메일 주소, 성별 마커 또는 둘 다와 같은 보조 필드를 표시하여 사용 가능한 선택 항목을 더욱 구분할 수 있도록 도와줍니다. 요청자에게 보조 필드를 표시하면 동일하거나 유사한 이름(예: Christopher Smith 또는 Chris Smith)으로 작업할 때 올바른 직원 이름을 선택하는 것과 같이 유사한 값을 처리할 때 특히 유용할 수 있습니다.
    (function execute() {
        var pagingUtil = new global.VirtualAgentChoicePagingUtil(null, "sys_user", 10, "user_name,name",
          "active=true", null, vaVars);
        var selectedOptions = pagingUtil.getSavedSelectedOptions("user", vaSystem);
        if (!selectedOptions || selectedOptions.length == 0) {
          // Secondary labels can be passed to selected options
           selectedOptions.push({ "value": "abel.tuter", "label": "Abel Tuter"
            ,"secondary_label": ["abel.tuter@example.com", "male"]
            });
           selectedOptions.push({ "value": "Beth.anglin", "label": "Beth Anglin"
            ,"secondary_label": ["beth.anglin@example.com", "female"] 
            });
        }
        vaSystem.setSelectedOptions(selectedOptions, "user", false);
        // Topic authors have the ability to define which values should go in the 
        // secondary labels by adding secondary label functions
        pagingUtil.addSecondaryLabelFunction(function (gr) {
          return gr.getValue("email");
        });
        pagingUtil.addSecondaryLabelFunction(function (gr) {
          return gr.getValue("gender");
        });
        var gr = pagingUtil.getPagingGlideRecordSecure("name", false);
        var options = pagingUtil.getSecureOptions(gr, null,'user_name', ['user_name']);
        return options;
    })()

    동적 선택 목록 값 표현식 예시

    (function execute(table) {
            var options = [];
            var gr = new GlideRecordSecure(table);
            gr.addEncodedQuery('active=true');
            gr.setLimit(5);
            gr.query();
            while(gr.next()) {
                options.push({ 'value': gr.getUniqueValue(), 'label': gr.getValue('short_description') });
            }
            return options;
    })(table)
    

    Choice Value Expression 속성의 스크립트는 선택 배열을 정의하고 반환합니다. 이 예시에서 스크립트는 options라는 배열을 만들고 GlideRecord 쿼리에서 찾은 각 기록을 이 배열에 추가합니다. 배열의 각 요소에는 해당 GlideRecord의 데이터를 사용하여 레이블 키에 값이 지정됩니다. 컨트롤의 Table 속성은 스크립트에서 사용하는 테이블을 정의합니다. 이 예제 스크립트는 gr.setLimit(5) 를 사용하여 반환되는 레코드 수를 5로 제한합니다. 이 방법을 사용하면 반환된 기록에서 지나치게 큰 선택 목록을 만드는 것을 방지할 수 있습니다.

    표 1. 동적 선택 제어 값 표현식 키
    설명
    선택 항목에 대한 값입니다. 사용자가 컨트롤에서 선택 항목을 선택하면 이 값이 변수 이름 속성에 명명된 변수에 저장됩니다.
    레이블 선택 목록에서 이 선택 항목에 대해 나타나는 레이블입니다.

    채널 지원

    표 2. 동적 선택 사용자 입력 컨트롤에 대한 채널 지원
    채널 지원 제약 조건
    웹 UI 지원됨 없음
    모바일 UI 지원됨 없음
    Now Assist 패널 지원됨 없음
    Microsoft Teams 지원됨 없음
    Slack 지원됨 헤더 카드는 지원되지 않습니다.
    Workplace 지원됨 헤더 카드는 지원되지 않습니다.
    Facebook Messenger 지원되지 않음 해당 사항 없음
    문자 메시지 Twilio 지원됨 헤더 카드는 지원되지 않습니다.
    LINE 지원되지 않음 해당 사항 없음
    WhatsApp 지원됨 없음
    Apple Messages for Business 지원됨 없음
    Alexa (음성) 지원됨 화면 장치의 경우 터치 스크롤을 사용합니다. 링크를 클릭하는 것은 지원되지 않습니다. 화면이 표시되지 않는 장치의 경우 음성 페이지 매김을 사용합니다.