카카오 i 오픈빌더 스킬 서버. 보호자가 아니라 임대 상담 손님을 상대한다 — 건물 이름으로 찾고, 사진과 공실 현황을 카드로 보고, 상담으로 넘어간다. 데이터베이스는 구글 시트 한 장이다.
카카오톡 ─▶ 오픈빌더 블록 ─▶ POST / (이 서버, Flask)
│
├─ 구글 시트를 CSV 로 읽는다 (gviz, 60초 캐시)
└─ listCard · basicCard · carousel 로 응답
| 블록 | 하는 일 | 응답 |
|---|---|---|
| 빌딩 목록 | 발화로 건물 이름·주소를 검색. 여러 개면 목록, 하나면 바로 카드 | listCard / basicCard |
| 건물 카드 | 건물 하나의 요약 카드 → 상세·공실·상담 버튼 | basicCard |
| 상세 보기 | 사진 캐러셀 + 설명 | carousel(basicCard) |
| 공실 현황 | 그 건물의 공실 층·면적·임대료 | simpleText |
| 상담 연결 | 상담 안내 | simpleText |
| 메인 메뉴 | 처음으로 | 버튼 |
건물 선택은 clientExtra.building_id 로 넘기고, 없으면 오픈빌더 컨텍스트(building_context)에서
꺼낸다 — 버튼을 눌러 온 손님과 말로 물어본 손님을 같은 코드가 받는다.
관리자가 개발자 없이 공실을 갱신해야 한다. 시트 한 장을 gviz/tq?tqx=out:csv 로 읽으면
DB 도 관리자 화면도 필요 없다. 60초 캐시(CACHE_TTL)로 카카오의 5초 응답 제한을 지킨다.
pip install -r requirements.txt
python app.py # 로컬
gunicorn app:app -b 0.0.0.0:8000 # 배포오픈빌더 스킬 URL 을 이 서버의 / 로 두고, app.py 상단의 BLOCK_* 를 자기 봇의 블록 ID 로 바꾼다.
SHEET_ID 는 "링크가 있는 모든 사용자 보기" 로 공개된 시트여야 한다.