변수값 설정 노드에서 계산식 및 함수 사용하기

이제 변수값 설정 노드에서 변수값으로 계산식을 지정할 수 있습니다. 간단한 수식 뿐 아니라 다양한 함수들도 사용할 수 있어 큰 의미가 있는 업데이트입니다.

이 기능을 사용하려면 우선 변수값 설정 노드를 생성하고 ‘변수 추가’ 를 클릭한 다음, 대상 변수를 지정하고 ‘수식’ 형식을 선택하면 됩니다. ‘지정될 수식’ 필드에 계산식을 입력합니다.

위 예시에서 알 수 있듯이 계산식에는 변수도 포함시킬 수 있습니다. 사용할 수 있는 연산과 함수는 아래와 같습니다.

기본 연산

  • +, -, *, /, ( )
  • % (나머지)
    예시: 100%2 = 0, 100%8 = 4.
  • ** (거듭제곱)
    예시: 100**2 = 10,000.

함수

모든 함수는 함수명( ) 형식으로 사용합니다. 예를 들면 abs(-5) 등입니다.

  • to_number: 값을 숫자 형식으로 변환합니다.
    예시: to_number(‘4’) = 4
  • to_string: 값을 문자열 형식으로 변환합니다.
    예시: to_string(7) = ‘7’
  • to_boolean: 값을 불리언(참/거짓) 형식으로 변환합니다.
    예시: to_boolean(1) = True
  • length = 값의 길이를 리턴합니다.
    예시: length(‘abcde’) = 5
  • abs = 절대값을 리턴합니다.
    예시: abs(-5) = 5
  • sin, cos, tan = sin, cos, tan 값을 리턴합니다.
    예시: tan(90) = 1
  • ceil, floor, round= 올림, 버림, 반올림 값을 리턴합니다.
    예시: floor(2.1) = 2
  • random, random_int = random() 은 0과 1 사이의 랜덤한 수를 리턴합니다. random_int(min, max) 는 min 과 max 값 사이의 랜덤한 정수를 리턴합니다.
    예시: random_int(-1, 2) = -1, 0, 1, or 2
  • unix_timestamp: Unix timestamp 값을 리턴합니다.
    예시: unix_timestamp() = 1601672447

고급 함수

고급 함수들은 주로 JSON 이나 문자열 목록 형식 변수값을 다루는 데 사용됩니다. 함수에 사용하는 값들은 모두 같은 형식의 변수로 치환 가능합니다. 문자열을 값으로 사용하는 경우 반드시 따옴표를 사용해 주세요 (예시: ‘Allganize’).

dict

  • 사용 형식: dict(키1, 값1, 키2, 값2, …)
  • 주어진 키와 값 쌍을 이용해 JSON 형식 변수를 생성합니다. 대상 JSON 에 키가 이미 존재한다면 값을 덮어씁니다.
  • 결과를 저장할 변수 타입: JSON
  • 예시: @NAME 변수가 ‘Allganize’ 를 값으로 가지는 경우, dict(‘Name’,@NAME,’Email’,’test@allganize.ai’) = {‘Name’:’Allganize’, ‘Email’:’test@allganize.ai’}

dict_set

  • 사용 형식: dict_set(@JSON_변수, 키1, 값1, 키2, 값2,…)
  • JSON 변수에 주어진 키와 값을 추가합니다. 대상 JSON 에 키가 이미 존재한다면 값을 덮어씁니다.
  • 결과를 저장할 변수 타입: JSON
  • 예시: @JSON_VAR 변수가 {‘Name’:’Allganize’} 를 값으로 가지는 경우, dict_set(@JSON_VAR,’Email’,’test@allganize.ai’) = {‘Name’:’Allganize’, ‘Email’:’test@allganize.ai’}

dict_del

  • 사용 형식: dict_del(@JSON_변수, 키)
  • 지정된 키를 JSON 변수에서 제거합니다.
  • 결과를 저장할 변수 타입: JSON
  • 예시: @JSON_VAR 변수가 {‘Name’:’Allganize’, ‘Email’:’test@allganize.ai’} 를 값으로 가지는 경우, dict_del(@JSON_VAR,’Email’) = {‘Name’:’Allganize’}

dict_update

  • 사용 형식: dict_update(@JSON_변수1, @JSON_변수2)
  • 두 JSON 형식을 합칩니다. 동일한 키가 존재하는 경우 뒤의 변수에서 값을 가져옵니다.
  • 결과를 저장할 변수 타입: JSON
  • 예시: @JSON_VAR 변수가 {‘Name’:’Allganize’, ‘Email’:’test@allganize.ai’}, @JSON_VAR2 변수가 {‘Name’:’Alli’, ‘Type’:’AnswerBot’} 를 값으로 가지는 경우, dict_update(@JSON_VAR, @JSON_VAR2) = {‘Name’:’Alli’, ‘Email’:’test@allganize.ai’, ‘Type’:’AnswerBot’}

json_loads

  • 사용 형식: json_loads(@JSON_변수, ‘JSON_형식’)
  • 지정된 JSON 형식을 JSON 변수값으로 저장합니다.
  • 결과를 저장할 변수 타입: JSON
  • 예시: json_loads(‘{“Name”:”Alli”, “Email”:”test@allganize.ai”}’)

json_dumps

  • 사용 형식: json_dumps(@JSON_변수)
  • JSON 변수값을 문자열로 변환합니다.
  • 결과를 저장할 변수 타입: 문자열
  • 예시: json_dumps(@JSON_VAR)

list

  • 사용 형식: list(문자열1, 문자열2, …)
  • 주어진 문자열로 문자열 목록 형식의 변수를 생성합니다.
  • 결과를 저장할 변수 타입: 문자열 목록
  • 예시: list(‘Allganize’, ‘Test’) = [‘Allganize’, ‘Test’]

list_append

  • 사용 형식: list_append(@문자열_목록_변수, 문자열1, 문자열2, …)
  • 문자열 목록 변수에 주어진 문자열을 추가합니다.
  • 결과를 저장할 변수 타입: 문자열 목록
  • 예시: @STR_LIST 변수가 [‘Allganize’, ‘Test’] 를 값으로 가지는 경우, list_append(@STR_LIST,”Alli”) = [‘Allganize’, ‘Test’, ‘Alli’]

list_reverse

  • 사용 형식: list_reverse(@문자열_목록_변수)
  • 문자열 목록 변수에 포함된 값의 순서를 역순으로 바꿉니다.
  • 결과를 저장할 변수 타입: 문자열 목록
  • 예시: @STR_LIST 변수가 [‘Allganize’, ‘Test’] 를 값으로 가지는 경우, list_reverse(@STR_LIST) = [‘Test’, ‘Allganize’]

get_by_json_path

  • 사용 형식: get_by_json_path(@JSON_변수, JSON_경로)
  • JSON 변수에서 JSON 경로에 있는 값을 리턴합니다.
  • 결과를 저장할 변수 타입: 문자열
  • 예시: @JSON_VAR 변수가 {‘Name’:’Allganize’, ‘Email’:’test@allganize.ai’} 를 값으로 가지는 경우, get_by_json_path(@JSON_VAR, ‘$.Email’) = ‘test@allganize.ai’

storage_set / storage_get

  • 사용 형식: storage_set(‘키’, @변수) / storage_get(‘키’)
  • storage_set 은 지정된 변수의 변수값을 지정된 키에 프로젝트 단위로 저장합니다. 키는 아무 문자열이나 사용 가능합니다. 키에 저장된 값은 storage_get 을 이용해 불러올 수 있습니다. 지정할 변수 타입은 값을 불러올 변수 타입과 동일하다면 어떤 타입이든 사용 가능합니다.
  • 결과를 저장할 변수 타입: 저장된 변수 타입과 동일한 변수 타입
  • 예시: storage_set(‘string’ @문자열_변수)를 이용해 문자열_변수의 변수값을 ‘string’키에 저장한 경우, storage_get(‘string’) 을 이용해 스킬/유저를 가리지 않고 동일한 값을 불러올 수 있습니다.

contains

  • 사용 형식: contains(@문자열_목록_변수, 문자열)
  • 문자열이 문자열 목록에 포함되었는지 여부에 따라 불리언 (True 혹은 False) 값을 리턴합니다.
  • 결과를 저장할 변수 타입: Boolean 혹은 문자열
  • 예시: @STR_LIST 변수가 [‘Allganize’, ‘Test’] 를 값으로 가지는 경우, contains(@STR_LIST, ‘Allganize’) = ‘True’

append

  • 사용 형식: append(@문자열_목록_변수, 문자열)
  • 문자열을 문자열 목록에 추가합니다.
  • 결과를 저장할 변수 타입: 문자열 목록
  • 예시: @STR_LIST 변수가 [‘Allganize’, ‘Test’] 를 값으로 가지는 경우, contains(@STR_LIST, ‘Variable’) = [‘Allganize’, ‘Test’, ‘Variable’]

unique

  • 사용 형식: unique(@문자열_목록_변수)
  • 문자열 목록에서 중복된 값을 제거합니다.
  • 결과를 저장할 변수 타입: 문자열 목록
  • 예시: @STR_LIST 변수가 [‘Allganize’, ‘Test’, ‘Test’] 를 값으로 가지는 경우, unique(@STR_LIST) = [‘Allganize’, ‘Test’]

urlencode

  • 사용 형식: urlencode(@JSON_변수)
  • JSON 형식을 URL 인코딩 형식으로 변환합니다.
  • 결과를 저장할 변수 타입: 문자열
  • 예시: @JSON_VAR 변수가 {‘key’:’hello world!’} 를 값으로 가지는 경우, urlencode(@JSON_VAR) = ‘key=hello+world%21’

urldecode

  • 사용 형식: urldecode(string)
  • URL 인코딩 형식의 문자열을 JSON 형식으로 변환합니다.
  • 결과를 저장할 변수 타입: 문자열 혹은 JSON
  • 예시: @STR 변수가 ‘key=hello+world%21’ 을 값으로 가지는 경우, urldecode(@STR) = {‘key’:’hello world!’}

regex_sub, regex_isub

  • 사용 형식: regex_sub(정규표현식_패턴, 문자열1, 문자열2) 혹은 regex_isub(정규표현식_패턴, 문자열1, 문자열2)
  • 문자열 2에서 주어진 정규표현식 패턴을 찾아 문자열 1로 대체합니다. regex_sub 는 대소문자를 구별하며 regex_isub 는 하지 않습니다.
  • 결과를 저장할 변수 타입: 문자열
  • 예시: @STR 변수가 ‘ooAoO’ 를 값으로 가지는 경우, regex_isub(r’o{2}’, ‘A’, @STR) = ‘AAA’

date_format

  • 사용 형식: date_format(정규표현식_날짜형식, 날짜)
  • 날짜를 주어진 정규표현식 형태로 변환합니다.
  • 결과를 저장할 변수 타입: 문자열
  • 예시: @DATE (날짜 혹은 문자열 타입) 변수가 ‘2020-01-11′ 를 값으로 가지는 경우, date_format(r’%Y-%m’, @DATE) = ‘2020-01’

to_date

  • 사용 형식: to_date(날짜형식, YMD형식(optional))
  • 주어진 날짜 형식을 날짜 변수 형식으로 변환합니다. 사용할 수 있는 날짜 형식: YYYYMMDD, YYYY/MM/DD, YYYY-MM-DD, YYYY MM DD, YYYY M D YYYY-M-D, YYYY/M/D, YYMMDD, YY/M/D, YY-M-DD, YY M DD
  • “MDY” 를 추가하면 입력하는 날짜 형식 순서를 월/일/년으로 변경할 수 있습니다. 예를 들어 MMDDYY, MM/DD/YYYY 등의 형식을 사용할 수 있습니다. 아래 예시 2를 참고하세요.
  • 입력하는 날짜 형식은 0으로 시작할 수 없습니다.
  • 결과를 저장할 변수 타입: 문자열 혹은 날짜
  • 예시 1 : @DATE (문자열 혹은 숫자 타입) 변수가 ‘20210602’ 를 값으로 가지는 경우, to_date(@DATE) = ‘2021-06-02’.
  • 예시 2 : @DATE (문자열 혹은 숫자 타입) 변수가 ‘060221’ 를 값으로 가지는 경우, to_date(@DATE, “MDY”) = ‘2021-06-02’.

date_add

  • 사용 형식: date_add(날짜, 숫자)
  • 주어진 숫자만큼 날짜에 더합니다.
  • 결과를 저장할 변수 타입: 날짜
  • 예시: @DATE (날짜 혹은 문자열 타입) 변수가 ‘2020-01-11’ 를 값으로 가지는 경우, date_add(@DATE, 2) = ‘2020-01-13’

today

  • 사용 형식: today()
  • 오늘의 날짜를 리턴합니다.
  • 결과를 저장할 변수 타입: 날짜 혹은 문자열
  • 예시: 오늘의 날짜가 2021년 4월 15일인 경우, today() = ‘2021-04-15’

first_day_of_month

  • 사용 형식: first_day_of_month()
  • 당월의 첫날 날짜를 리턴합니다.
  • 결과를 저장할 변수 타입: 날짜 혹은 문자열
  • 예시: 오늘의 날짜가 2021년 4월 15일인 경우, first_day_of_month() = ‘2021-04-01’

last_day_of_month

  • 사용 형식: last_day_of_month()
  • 당월의 마지막 날짜를 리턴합니다.
  • 결과를 저장할 변수 타입: 날짜 혹은 문자열
  • 예시: 오늘의 날짜가 2021년 4월 15일인 경우, last_day_of_month() = ‘2021-04-30’

find_all, find_iall

  • 사용 형식: find_all(정규표현식_패턴, 문자열) 혹은 find_iall(정규표현식_패턴, 문자열)
  • 문자열에서 주어진 정규표현식 패턴을 찾아 첫번째 결과를 리턴합니다. find_all 은 대소문자를 구별하며 find_iall 은 하지 않습니다.
  • 결과를 저장할 변수 타입: 문자열
  • 예시: @STR 변수가 ‘Type of the OS: Windows’ 를 값으로 가지는 경우, find_iall(r'(windows|mac|linux)’, @STR) = ‘Windows’

substr

  • 사용 형식: substr(문자열, 숫자)
  • 문자열에서 첫 [number] 문자만 리턴합니다.
  • 결과를 저장할 변수 타입: 문자열
  • 예시: @STR 변수가 ‘3months’ 를 값으로 가지는 경우, substr(@STR, 2) = ‘3m’

Updates

Update on 7/9/2021 storage_get, storage_set, json_loads, json_dumps 함수가 추가되었습니다.

Update on 6/1/2021 to_date 함수가 추가되었습니다.

Update on 5/26/2021 urldecode 함수가 추가되었습니다.

Update on 4/15/2021 날짜 관련 함수들 (date_add, today, first_day_of_month, last_day_of_month) 이 추가되었습니다.