챗봇 스티비 이메일 연동 삽질기 + SSO 지원 추가
이번 주 챗봇에서 무슨 일이 있었나
5월 18일부터 22일까지 챗봇에서 두 가지 큰 작업이 있었다. 스티비 이메일 자동화 연동과 SSO 유저 정보 주입이다.
스티비 이메일 자동화 연동 — 하루 종일 API와 씨름
방문자가 채팅 폼을 완료하면 스티비 주소록에 자동 등록되고 자동이메일이 발송되는 플로우를 구현했다.
스티비 API가 문서와 실제 동작이 달랐다. commit이 무려 15개 가까이 쌓였는데 대부분이 payload 형식 싸움이었다.
subscribervssubscribers(단수/복수 혼용)- 시스템 필드명이 영어(
email)인지 한국어(이메일)인지 AccessToken헤더가 필요한지 아닌지 (자동이메일 트리거 URL 자체가 토큰 역할을 한다는 걸 나중에야 확인)- 자동이메일 트리거(Step2)를 주소록 등록과 별도로 쏴야 하는지, 한 번에 되는지
결국 공식 문서를 처음부터 다시 읽고, 주소록 등록 API와 자동이메일 트리거 API를 각각 명확히 분리해서 순차 호출하는 방식으로 확정됐다. 에러 직렬화도 수정해서 API 응답 전체가 로깅되도록 해둔 덕에 원인을 빨리 잡을 수 있었다.
이메일 발송이 채팅 응답 속도에 영향을 주는 문제도 있었다. 처음엔 await로 이메일 발송을 기다렸는데 채팅이 느려졌다. Firestore 트리거를 별도로 두어 채팅과 이메일 발송을 분리했다.
SSO 유저 정보 주입
SaaS로 붙이는 고객사 사이트에서 이미 로그인된 유저 정보를 챗봇에 그대로 전달하는 기능이 필요했다.
위젯 스크립트 태그에 data-sso-* 속성으로 전달하거나, window.CKSsoUser 전역 객체에 미리 세팅하는 두 가지 방법을 지원한다. 어느 쪽이든 챗봇이 자동으로 감지해서 리드 폼을 건너뛰고 세션을 생성한다.
위젯 런처 리디자인 + 기타
위젯 런처도 손봤다. 기존 컬러 배경 버튼에서 말풍선 아이콘 + 검정 배경으로 바꿨다. 버튼 색상, 텍스트 색상을 채널별로 커스텀할 수 있도록 옵션을 열었다.
슈퍼관리자는 세션 상태와 무관하게 세션을 삭제할 수 있도록 권한을 분리했고, 메시지 전송 시 시각이 스피너 없이 즉시 표시되도록 UI를 다듬었다.
22일에는 어드민에서 메시지 발신자 이름이 표시되고, 구글 스페이스 알림 클릭 시 해당 세션으로 바로 이동하는 링크가 들어갔다.