동적 옵션

옵션 응답은 선택할 선택사항 목록을 고객에게 제공합니다. 동적 설정을 사용하여 매번 다를 수 있는 옵션에서 목록을 생성할 수 있습니다.

동적 옵션은 변수에 저장된 데이터를 기반으로 생성되며, 이는 질문을 묻는 단계에서 사용 가능해야 합니다. 소스 변수에는 값의 배열이 포함되어야 하며 각 값은 고객에게 제공될 옵션 중 하나를 나타냅니다. 배열의 항목은 문자열 또는 숫자 (예: [ "Raleigh", "Boston", "New York" ]) 또는 복합 JSON 오브젝트와 같은 단순 값일 수 있습니다.

동적 옵션의 공통 시나리오는 사용자 정의 확장을 사용하여 호출하는 외부 API에서 배열이 리턴되는 경우입니다. 예를 들어, 사용자 정의 확장을 사용하여 고객의 계정과 연관된 신용 카드 목록을 검색할 수 있습니다. 그런 다음 동적 옵션을 사용하여 고객에게 대화 중에 사용할 카드를 물을 수 있습니다. (사용자 정의 확장에 대한 자세한 정보는 사용자 정의 확장 호출 을 참조하십시오.)

또한 조치가 표현식을 사용하여 소스 변수를 채울 수도 있습니다. 예를 들어, 세션 변수를 사용하여 고객이 구매하기로 결정한 항목을 포함하는 장바구니를 빌드할 수 있습니다. 그러면 장바구니에서 항목을 제거하는 조치에서 동적 옵션을 사용하여 고객이 제거할 항목을 선택할 수 있도록 장바구니에 항목을 표시할 수 있습니다. (변수값에 대한 표현식 사용에 대한 자세한 정보는 표현식을 사용하여 세션 변수에 값 지정 을 참조하십시오.)

동적 옵션 정의

동적 옵션 고객 응답을 정의하려면 다음을 수행하십시오.

  1. 단계에서 고객 응답 정의를 클릭하십시오.

  2. 옵션 응답 유형을 선택하십시오.

  3. 동적 토글을 클릭하십시오.

  4. 소스 변수 필드에서 동적 옵션을 정의하는 배열을 포함하는 변수를 선택하십시오 (예: 이전 단계에서 호출한 사용자 정의 확장의 응답을 포함하는 변수).

  5. 선택사항: 옵션 필드에서 소스 배열의 항목을 나열될 옵션에 맵핑하는 표현식을 작성하십시오. 이 표현식은 배열의 각 항목을 고객에게 표시될 의미 있는 값으로 변환하는 템플리트 역할을 합니다. 이 표현식에서 동적 변수 ${item} 를 사용하여 항목을 표시하십시오.

    일부 상황에서는 표현식을 지정할 필요가 없습니다.

    • 배열의 항목이 문자열 또는 정수와 같은 단순 값인 경우 각 항목의 값이 자동으로 옵션으로 표시됩니다. 그러나 항목을 보다 의미있게 만들기 위해 조작하거나 재형식화하려는 경우에는 맵핑을 정의할 수 있습니다. 예를 들어, 표현식 "Part #" + ${item} 를 사용하여 Part #12345 형식으로 부품 번호를 표시할 수 있습니다.

    • 배열의 항목이 JSON 오브젝트인 경우 기본 맵핑은 label 라는 특성을 찾고 해당 값 (있는 경우) 을 옵션으로 사용합니다. 항목에 label 특성이 포함되지 않거나 label 특성의 값을 옵션으로 사용하지 않으려는 경우 맵핑을 지정하는 표현식을 작성해야 합니다. 점 표기법을 사용하여 JSON 경로를 사용하는 오브젝트의 특성을 참조할 수 있습니다 (예: ${item}.name).

  6. 선택사항: 옵션이 고객이 원하는 것이 아닌 경우 대체 옵션 추가 를 클릭하여 None of the above 와 같은 정적 선택사항을 포함하십시오. 그런 다음 이 정적 옵션에 조건이 지정된 단계를 추가하여 추가 지원을 제공할 수 있습니다. 조건을 추가하려면 ${step_id}.value == "None of the above" 와 같은 표현식을 작성하십시오.

맵핑 예제

입양 가능한 애완동물 목록을 표시하는 조치를 빌드하고 고객에게 애완동물을 선택하여 자세한 정보를 보도록 프롬프트를 표시한다고 가정합니다. 소스 변수에는 다음 형식의 사용자 정의 확장의 배열이 포함되어 있습니다.

[
  {
    "id": "123",
    "name": "Casey",
    "breed": "Shetland sheepdog",
    "age": 3
  },
  {
    "id": "987",
    "name": "Phoebe",
    "breed": "chihuahua",
    "age": 7
  }
]

항목의 스키마에는 label 특성이 포함되지 않으므로 기본 맵핑을 사용할 수 없습니다. 대신 표현식을 사용하여 여러 다른 특성에서 가져온 데이터를 포함하는 복합 레이블을 빌드할 수 있습니다. 예를 들어, ${item}.name + " (" + ${item}.breed + ", age " + ${item}.age + ")" 표현식을 사용하여 옵션 레이블을 정의할 수 있습니다.

레이블

표현식 메소드를 사용하여 다양한 방법으로 소스 변수의 값을 조작할 수 있습니다. 예를 들어, 고객이 지불할 신용 카드를 선택하는 데 사용하는 조치가 있을 수 있지만 보안상의 이유로 전체 카드 번호를 표시하지 않으려고 합니다. substring() 메소드를 사용하여 각 카드 번호의 마지막 네 자리 숫자만 포함하는 표현식을 작성할 수 있습니다 (예: "Card ending in " + ${item}.card_number.substring(16, 20)).

선택한 항목 참조

고객이 동적으로 생성된 옵션 중 하나를 선택한 후에는 후속 단계에서 선택된 항목을 참조해야 할 수 있습니다.

고객 응답을 나타내는 조치 변수를 참조하는 경우 기본값은 선택된 옵션의 값을 사용하는 것입니다. 그러나 일부 상황에서는 고객에게 옵션을 표시하는 데 사용된 것과 동일한 값을 사용하지 않을 수 있습니다. 대신, 선택된 옵션을 명확하게 식별하는 고유 ID 또는 기타 특성을 사용해야 할 수 있습니다.

예를 들어, 고객이 자세한 정보를 표시하기 위해 애완동물을 선택하는 경우 애완동물의 이름, 나이 및 품종이 고유하지 않을 수 있으므로 데이터베이스를 조회하기 위해 고유 ID (이 예에서는 id 특성) 를 사용해야 할 수 있습니다. 또는 고객이 마지막 4자리숫자만 표시하는 옵션에서 신용카드를 선택하는 경우 전체 신용카드 번호를 사용하여 계정 세부사항에 액세스하거나 트랜잭션을 완료해야 합니다.

이 상황에서는 선택한 항목의 원래 특성에 액세스하기 위한 표현식을 작성할 수 있습니다.

  1. 고객이 동적 옵션에서 선택하는 단계 다음에 오는 단계를 작성하거나 편집하십시오.

  2. 변수값 섹션에서 세션 변수에 값을 지정하는 표현식을 작성하십시오. (자세한 정보는 표현식을 사용하여 세션 변수에 값 지정 을 참조하십시오.)

  3. 표현식 편집기에서 달러 부호 ($) 를 입력한 후 고객이 동적 옵션을 선택한 단계를 선택하십시오.

  4. 특성 이름 item 를 사용하여 선택한 항목을 표시하고 점 표기법을 사용하여 해당 특성에 액세스하십시오. 예를 들어, 다음 표현식은 이전 단계에서 선택한 항목의 id 특성에 액세스합니다.

    ${step_331}.item.id
    

    복합 표현식을 사용하여 선택한 항목의 여러 특성을 사용하는 값을 구성할 수 있습니다. 예를 들어, ${step_123}.item.firstname + " " + ${step_123}.item.lastname 와 같은 표현식을 사용하여 사용자의 전체 이름을 구성할 수 있습니다. 표현식을 사용하여 필요한 조치를 완료하는 데 필요한 형식으로 값을 정의하십시오.