용 구성요소 개발 가상 에이전트
사용자 지정 가상 에이전트 구성요소를 생성하여 입력을 수집하거나 클라이언트 인터페이스에 정보를 가상 에이전트 표시합니다.
가상 에이전트 구성요소 유형
에 대한 가상 에이전트구성요소를 개발하려면 클라이언트 인터페이스와 상호작용하는 가상 에이전트 특정 속성 및 작업을 추가합니다. 필요한 속성은 생성 중인 구성요소 유형에 따라 다릅니다.
- 응답 구성요소
-
응답 구성요소는 사용자에게 정보만 제공하며 입력을 수집하거나 사용자 상호작용을 처리하지 않습니다. 예를 들어 사용자 입력이 필요 없고 대화에 한 번만 등장하는 카드 컨트롤이 있습니다.
서버에서 보낸 가상 에이전트 데이터를 처리하는 속성을 응답 구성요소에 추가합니다.
표 1. 출력 구성요소 속성 속성 설명 controlData 주제가 실행될 때 서버가 구성요소에 보내는 초기 데이터 가상 에이전트 입니다. 데이터 유형: JSON 객체
- 입력 구성요소
-
입력 구성요소는 정보를 표시하거나 사용자 입력을 수집합니다. 서버에서 보낸 데이터를 처리하기 위해 출력 구성 요소와 동일한 속성을 포함하지만 가능한 상태가 더 많고 사용자 상호 작용이 필요합니다.
표 2. 입력 구성요소 속성 속성 설명 controlData 주제가 실행될 때 서버가 구성요소에 보내는 초기 데이터 가상 에이전트 입니다. 데이터 유형: JSON 객체
responseValue 클라이언트에서 직접 또는 새로 고침이 있는 경우 서버에서 사용자의 응답에서 구성 요소로 전송되는 데이터입니다. 사용자 입력이 필요한 구성요소에서만 사용합니다. 데이터 유형: JSON 객체
forceCloseControl 구성요소가 입력을 수락할 수 있는지 여부를 나타내는 플래그입니다. true이면 컨트롤이 닫히고 사용자가 컨트롤과 상호 작용할 수 없습니다. 클라이언트의 변경 내용을 모니터링하여 이 값을 업데이트합니다. 사용자 입력이 필요한 구성요소에서만 사용합니다. 데이터 유형: 부울
이 작업을 사용하여 사용자 상호작용에서 데이터를 내보냅니다.
표 3. 입력 구성요소 작업 동작 설명 VA_CONTROL#VALUE_SENT 서버에서 서버로 보낼 클라이언트의 응답 데이터입니다. 사용자 입력이 필요한 구성요소에서만 사용합니다. 데이터 유형: JSON 객체
입력 구성요소 상태
입력 구성요소는 데이터를 수락하기 때문에 여러 상태를 처리해야 합니다. 상태 흐름은 일반적으로 다음과 같습니다.
- 가상 에이전트 입력 대기 중 상태의 사용자 지정 구성요소를 표시합니다.
- 사용자는 구성요소와 상호작용하여 입력을 제공합니다.
- 구성 요소가
닫히고 responseValue속성을 서버로 보냅니다. - 서버는 서버 측 논리를 실행하고 사용자의 입력이 포함된 구성 요소를 클라이언트로 다시 보냅니다.
- 입력 대기 중
-
사용자 상호작용을 기다리는 구성요소의 초기 상태입니다.
controlData속성은 설정되었지만forceControlClosed속성은 false입니다. 이 예에서는 입력 대기 중 상태의 슬라이더 구성요소를 보여줍니다.이 예제에서는 사용자가
responseValue를 제공하지 않았고 컨트롤이 닫히지 않은 경우 슬라이더와 입력 단추가 표시됩니다.const {controlClosed, sliderVal, sliderMin, sliderMax} = state; return (<div class={{"slider-chat": true}}> {responseValue ? null : <Fragment> <div class={{"slider-label": true}}>{label}</div> {controlClosed ? null : <Fragment> <div class={{"slider-container": true}}> <input on-change={onSliderChange} type="range" min={sliderMin} max={sliderMax} value={sliderVal} class={{"slider": true}} /> <div class={{"slider-value": true}}> {unitIcon && <div class={{"unit-icon": true}}><img src={unitIcon} /></div> } {sliderVal} {unitName} </div> <div class={{"button-container":true}}> <now-button variant="primary" label={buttonText || 'Confirm'} /> </div></div></Fragment>} - 입력 처리
-
이전 예제에서 슬라이더는 사용자가 입력을 확인하고 서버로 보내기 위해 클릭하는
now-button구성요소를 사용합니다. 사용자가 버튼을 클릭하면responseValue페이로드와 함께VA_CONTROL#VALUE_SENT작업이 실행됩니다.'NOW_BUTTON#CLICKED': (data) => { const {updateState, dispatch, state: {sliderVal}} = data; updateState({controlClosed: true}); dispatch('VA_CONTROL#VALUE_SENT', { value: { sliderVal } }); } - 종결
-
닫힌 구성 요소는 더 이상 사용자 입력을 수락할 수 없습니다. 구성요소는 일반적으로 다음과 같은 이유로 종결됩니다.
- 사용자가 구성요소에 응답했습니다. 구성요소가 닫히고 대화가 계속됩니다.
- 사용자가 채팅을 종료했습니다. 서버는 응답을 기다리지 않습니다.
예를 들어 슬라이더 구성 요소는 닫힌 상태일 때만 원래 프롬프트를 렌더링합니다.
- 응답 전송 중
-
사용자가 응답하면
컨트롤이 responseValue속성 값을 사용하여 대화의 사용자 쪽에서 다시 렌더링됩니다.예를 들어 슬라이더 컨트롤은 이 코드 조각을 사용하여 응답을 렌더링합니다.
{responseValue && <div className="response-container slider-value"> {unitIcon && <div className="unit-icon"><img src={unitIcon} /></div> } {returnVal} {unitName} </div>}
에 구성요소 추가 가상 에이전트 디자이너
구성요소를 개발하고 인스턴스에 배포한 후 사용자 지정 컨트롤 및 정의를 사용하여 구성요소를 가상 에이전트 디자이너 추가합니다. 자세한 내용은 가상 에이전트 사용자 지정 컨트롤을 참조하십시오.