Channel Developers

  • 작성 가능한 언어: JavaScript

  • 코드 실행 최대 시간: 60초

코드 노드 환경에서는 기본적으로 사용할 수 있는 함수와 라이브러리가 제한되어 있습니다.추가적인 함수나 라이브러리가 필요하다면 채널 팀에 문의해주세요. 기술 검토 후 지원 여부를 안내드립니다.

JavaScript
JavaScript
JavaScript
  • require는 아래 라이브러리만 가져올 수 있습니다:

  • 노드 내에서 실행할 HTTP 요청은 axios를 이용하길 바랍니다.

JavaScript
  • 모든 코드는 위 형태의 함수 안에 작성해야 합니다.

  • context: 상담 및 사용자 관련 데이터를 읽기 전용으로 제공합니다.

  • memory: 노드 간 데이터를 전달하고 저장할 수 있는 인터페이스입니다.

  • 사용자 코드에서 사용할 메모리 인터페이스입니다.

  • 다음 메서드를 사용할 수 있습니다.

메서드

설명

get(key)

지정한 키의 값을 가져옵니다.

put(key, value)

지정한 키에 값을 저장합니다.

save()

변경된 내용을 영구 저장합니다. (반드시 호출 해야 함)

memory.put()만 호출하고 save()를 호출하지 않으면 변경 내용은 저장되지 않습니다.

JavaScript
  • context는 코드 노드가 실행되는 환경 정보를 담고 있습니다.

  • 다음과 같은 구조를 가집니다:

JSON
  1. user: 고객 정보

  2. userChat: 상담 세션 정보

  3. 모든 데이터는 읽기 전용(Read-only) 입니다.→ context 내부 값을 수정해도 실제 데이터에는 반영되지 않습니다.

JavaScript

코드 노드는 단일 노드 테스트 기능을 제공합니다.테스트 환경에는 기본적으로 다음 정보가 포함됩니다:

  • 고객 정보 (user)

  • 상담 정보 (userChat)

  • 메모리 (memory)

초기에는 메모리가 비어 있는 상태({})로 시작합니다.

  1. 샘플 값 탭의 우측에 있는 실행 버튼을 눌러 테스트를 시작합니다.

  2. 실행 후 로그 탭에서 성공 여부를 확인할 수 있습니다.

  3. 로그를 클릭하면 Result(결과)Console log(콘솔 출력)를 확인할 수 있습니다.

  • 코드 내에서 console.log()를 활용하면 실행 중 로그를 확인할 수 있습니다.

  • Result > In 탭에서는 실제 코드 실행 시 입력된 memory, userChat, user 데이터를 JSON 형태로 볼 수 있습니다.

  • Result > Out 탭에서는 실행 후 변경된 memory 상태를 확인할 수 있습니다.

memory.save()를 호출하지 않으면 변경된 데이터는 저장되지 않으며, Diff에 아무 변화도 표시되지 않습니다.

테스트에 접속 해보겠습니다.

테스트엔 기본적으로 고객 정보(User), 상담 정보(UserChat)와 메모리(Memory)가 있습니다. 샘플 값에 나와 있듯이, 메모리에는 현재 값이 따로 저장돼있지 않습니다. 비어있는 객체입니다.

샘플 값 위 실행 버튼을 이용하여 테스트를 진행할 수 있습니다. 실행 시 아래 그림과 같이 성공 여부 로그를 얻을 수 있습니다. 로그 클릭 시, 결과 값(Result)와 콘솔 로그(Console log)를 얻을 수 있습니다. 우리는 "smallTalk" 키 값에 "bigResult" 값을 저장 했으므로 Diff에 아래와 같은 결과가 나옵니다.

코드에 작성한 로그들 또한 확인할 수 있습니다. 이를 이용하여 디버깅에 활용할 수 있습니다.

Result에 있는 In 탭에서 실제로 코드가 실행될 때 들어간 memory, userChat, user의 값들을 json 형태로 확인할 수 있습니다.

Out 탭에서 볼 수 있듯이 "memory" 아래에 "smallTalk" 키에 "bigResult" 값이 들어있습니다.

admin 서비스 등은 대부분 특정 ip 대역에서만 접근할 수 있는 설정이 존재합니다. 개발 팀에 요청하여 코드 노드의 public ip를 허용하도록 요청해주세요. IP 정보는 채널톡에 문의하여 받아주세요.