컬렉션 및 데이터
컬렉션은 봇의 자체 데이터 테이블입니다. 신청서, 주문, 대화 응답, 게임 점수, 수업 예약 등 봇이 사용자로부터 수집하거나 통합에서 받는 모든 것을 저장하기에 편리합니다. 이 섹션은 왼쪽 메뉴에서 데이터 → 컬렉션에 있습니다.
컬렉션이란
컬렉션은 필드(열을 설명하는 스키마)와 레코드(데이터 행)로 구성됩니다. 각 레코드는 컬렉션 필드의 값 집합이며, 내부적으로 유연한 JSON 문서로 저장됩니다. 따라서 컬렉션은 새 필드 추가에도 잘 적응합니다.
컬렉션 이름은 하나의 봇 내에서 고유하며, 반응 액션에서 식별자로 사용됩니다(예: leads, orders, scores).
필드 유형
컬렉션을 만들 때 필드 목록과 각 유형을 지정합니다:
- text — 문자열(이름, 이메일, 댓글).
- number — 숫자(금액, 수량, 점수).
- bool — 예/아니오(
true/false). - datetime — 날짜 및 시간.
- json — 복잡한 값을 위한 중첩 객체 또는 배열.
유형은 인터페이스에서 필드를 편집하는 방식과 저장 시 값이 변환되는 방식에 영향을 줍니다. 스키마는 엄격하지 않습니다: 레코드에 스키마 외부의 필드가 있으면 저장되고 별도 열로 표시됩니다.
컬렉션 만들기
- 데이터 → 컬렉션을 열고 추가를 클릭합니다.
- 이름을 지정합니다(영문, 공백 없이 — 반응에서 참조하기 더 쉽습니다).
- 필드 버튼으로 필요한 열을 추가하고 각 유형을 선택합니다.
- 필요하다면 저장 규칙(아래 참조)을 설정하고 저장합니다.
레코드: 보기 및 편집
컬렉션 카드에는 테이블 아이콘 버튼이 있습니다 — 해당 컬렉션의 레코드가 있는 데이터 창을 엽니다:
- 보기 — 모든 행이 필드당 셀로, 최신 것부터 목록으로 표시됩니다.
- 레코드 추가 — 컬렉션 스키마에 따라 양식을 엽니다. 각 필드는 유형에 맞게 편집됩니다(
bool의 경우 토글,json의 경우 JSON 입력 필드 등). - 편집(연필) — 기존 행을 수정합니다.
- 삭제(휴지통) — 행을 삭제합니다.
레코드는 봇 반응의 액션으로도 자동으로 채워집니다(아래 참조). 수동 편집과 자동 기록은 동일한 컬렉션에서 작동합니다.
저장 (retention)
컬렉션이 무한정 커지지 않도록 자동 정리 규칙을 설정하세요:
- 최대 레코드 수 유지 — 한도를 초과하면 가장 오래된 레코드가 삭제됩니다.
- 최대 보관 기간(일) — 지정된 기간보다 오래된 레코드가 삭제됩니다.
정리는 백그라운드 프로세스에 의해 주기적으로 수행됩니다. 규칙은 조합할 수 있습니다.
반응에서 데이터 작업
컬렉션은 반응 빌더와 직접 연결됩니다. 반응 액션에서 사용 가능한 것들:
- 레코드 생성 — 행을 추가합니다. 값은 템플릿에서 가져옵니다(예:
{{user.id}},{{message.text}}). 중복 제거 키를 설정하면 반복 호출 시 중복을 만들지 않고 동일한 행이 업데이트됩니다. - 레코드 업데이트 — 조건에 맞는 행을 변경합니다.
- 레코드 조회 — 행을 실행 컨텍스트에 배열로 읽어 이후에 반복 처리할 수 있습니다.
- 레코드 삭제 — 조건에 따라 행을 삭제합니다.
- 반복 (for-each) — 컨텍스트의 배열을 반복하며 각 요소에 대해 중첩된 액션을 실행합니다(예: 컬렉션 목록으로 메시지 발송).
이를 통해 봇은 외부 데이터베이스 없이도 CRM을 유지하고, 신청서를 수집하고, 포인트를 적립하고, 보고서를 작성할 수 있습니다.
Mini App에서의 접근
컬렉션 레코드는 봇의 Telegram Mini App에서 읽을 수 있습니다: 프론트엔드가 이름, 필터, 제한으로 컬렉션 데이터를 요청합니다. 이를 통해 Telegram 내에서 직접 사용자의 주문, 기록 또는 리더보드를 보여줄 수 있습니다.
팁
- 필드에 짧은 기계 친화적 이름(
email,total,paid)을 사용하세요 — 반응 템플릿에 삽입하기 더 편합니다. - 멱등성 기록(예: "사용자당 하나의 신청")에는 중복 제거 키를 사용하세요.
- 로그와 임시 데이터에는 retention을 활성화하여 컬렉션이 커지지 않도록 하세요.
- 값의 구조가 미리 고정되어 있지 않을 때는
json유형을 사용하세요.