스크립트 노드를 사용하여 대화 작업에서 JavaScript 코드를 작성할 수 있습니다. 스크립트 노드를 사용하여 다음 조치를 수행할 수 있습니다.
- API 호출을 실행하기 전에 사용자 입력 매개 변수를 조작합니다.
- 대화를 계속하기 전에 API 응답 페이로드에서 매개 변수를 조작합니다.
- 사용자에게 사용자 정의 오류 메시지를 표시합니다.
- 복잡한 비즈니스 규칙을 기반으로 의사 결정을 합니다.
봇 빌더에서 대화를 테스트할 때 스크립트 노드에 오류 대화에 Context
개체와 함께 줄 번호 및 열 번호를 포함하여 스크립트 노드 오류가 표시됩니다. 다음 그림과 같이 스크립트 노드의 오류 대화상자에서 직접 스크립트를 업데이트하고 테스트 할 수 있습니다.
스크립트 노드 설정
대화 작업에서 스크립트 노드를 설정하려면 다음 단계를 수행합니다.
설정
대화 작업에서 스크립트 노드를 설정하려면 다음 단계를 수행합니다. 참고: 플랫폼의 v9.0 이후에는 스크립트 노드가 봇 작업 노드 아래에 분류됩니다. 봇 조치 노드에 대해 자세히 알아보려면 여기를 클릭하세요.
노드 추가
- 스크립트 노드를 추가하려는 대화 작업을 엽니다.
- 지정된 위치에 스크립트 노드를 추가합니다. 노드를 추가하는 단계의 경우, 여기를 참조하세요.
- 스크립트 창은 기본적으로 구성 요소 속성 탭이 선택되어 표시됩니다.
- 연결 속성을 설정할 수 있습니다.자세한 내용은 여기를 참조하세요.
노드 설정
구성 요소 속성
참고: 이 섹션에서 설정하거나 편집한 설정은 이 노드를 사용하는 다른 모든 대화 작업에 반영됩니다.
- 구성 요소 속성 탭의 일반 설정 섹션에서 스크립트 노드의 이름 및 표시 이름 이름을 입력합니다. 노드 이름에는 공백을 사용할 수 없습니다.
- 스크립트 정의 섹션에서 JavaScript를 추가하려면 스크립트 정의를 클릭합니다.
- 스크립트 추가 대화 상자에서 JavaScript를 입력한 후 저장을 클릭합니다. JavaScript 코드 예제는 아래에서 확인하세요.
- 변수 네임스페이스 섹션에서 이 노드와 전환을 실행할 변수 네임스페이스를 연결합니다. 이 옵션은 봇에 변수 네임스페이스를 사용하도록 설정한 경우에만 표시됩니다. 작업 수준 설정을 사용하거나 이 노드에 사용자 정의할 수 있습니다. 자세한 내용은 네임스페이스 관리를 참조하세요.
JavaScript 예제
JavaScript를 사용하여 API 호출 전후에 데이터를 처리하여 대화 작업을 사용자 정의할 수 있습니다. 예를 들어, 대화 흐름의 방향을 지정합니다. Context
개체 타이프 어헤드 기능을 사용하여 다음 설명과 같이 동적 변수를 식별하고 선택할 수 있습니다. 자세한 내용은 컨텍스트 개체를 참조하세요.
데이터 조작하기
JavaScript에서 세션 변수를 사용하여 세션 데이터에서 데이터를 가져올 수 있습니다. 예를 들어, context.session.UserContext.identities
를 사용하여 사용자 ID를 얻은 후 다음 예제와 같이 데이터를 context
에 넣을 수 있습니다.
var x = context.session.UserContext.identities; var isEmailFound = false; for (var i = 0; i < x.length; i++) { if (x[i].type === "mapped") { var identity = x[i].val; var arr = identity.split("/"); var pattern = /^cs/i; var result = arr[0].match(pattern); if (result) { isEmailFound = true; context.UserSession.put("rtmEmail", arr[1], '20000'); } } } ...
자세한 내용은 작업에서 세션 및 컨텍스트 변수 사용하기를 참조하세요.
조건 처리하기
다음 코드 예제에서는 ID가 입력되지 않았을 때 서비스 노드 응답 본문의 Context
개체 변수를 사용하여 고객 ID를 반환합니다 data.results
var data = context.getcontactsService.response.body; if (data & amp; & amp; typeof(data.results) != 'undefined') { context.customerID = data.results.customerId; } else { context.customerID = context.Usersession.customerID; }
흐름 처리하기
다음 스크립트 노드 코드 예에서는 Context
개체 변수를 사용하여 선택한 계정 유형에 대한 제한을 초과하지 않는 은행 송금액을 확인합니다.
var valid = 0; var i = 0; while (context.accdata.length - i) { if (context.accdata[i].accountType == context.entities.FromAccountName) { if ((context.accdata[i].amount - context.entities.Amount) < 0) { valid = 3; } else { if (context.entities.Amount > context.accdata[i].transferLimit) { valid = 0; } else { valid = 2; } } } i++; } context.canProceed = valid;