Share
Sign In

카카오톡

이 문서에서는 데스크룸에서 카카오톡을 연동하여 고객 상담 메시지를 기반으로 티켓을 생성하는 과정을 자세히 설명합니다. 특히 쓰레디파이(Threadify) 과정티켓에 포함되는 필드에 중점을 두어 각 필드의 정의를 명확히 할 것입니다.

1. 채널 연동

데스크룸에서 카카오톡을 연동하려면, 데스크룸 연동 페이지에서 카카오톡 비즈니스 계정을 연결하고, 해당 채널에서 데이터를 가져오는 설정을 완료해야 합니다. 카카오톡의 공식 API 및 웹 스크래핑을 통해 연동이 이루어지며, 이를 통해 데스크룸은 카카오톡에서 발생한 대화 메시지를 가져올 수 있게 됩니다.

2. 전체(All) 채팅방의 메시지 데이터 읽어오기

카카오톡에서 전체 채팅방을 대상으로 메시지 데이터를 읽어옵니다.
카카오톡에서 가져오는 메시지 데이터는 다음과 같은 정보를 포함합니다.
메시지 ID: 각 메시지를 고유하게 식별하는 값
채팅방 ID: 대화가 발생한 채팅방의 ID
작성자 정보: 메시지를 작성한 고객 또는 상담사의 ID와 이름
메시지 내용: 대화에서 실제로 주고받은 텍스트
메시지 전송 시각: 해당 메시지가 전송된 시점

3. 쓰레드(Thread)로 나누기

쓰레드고객과 상담사가 주고받은 하나의 대화 흐름을 의미합니다. 쓰레드는 여러 메시지를 하나로 묶어 하나의 상담 단위로 처리할 수 있도록 만들어진 구조입니다. 예를 들어, 고객이 한 번 문의한 내용에 대해 상담사가 응답하는 과정이 하나의 쓰레드로 묶일 수 있습니다. 쓰레드를 나누는 이유는, 고객이 일정한 시간 간격을 두고 여러 번 대화를 시도하거나 추가적인 문의를 남길 때, 이를 독립적인 대화 흐름으로 구분하여 분석하기 위함입니다.
Split Interval상담사 변경이라는 두 가지 기준에 의해 쓰레드를 나눕니다.
Split Interval (대화 분리 시간) : 일정 시간 동안 대화가 없으면 새로운 쓰레드로 구분합니다. 이 값은 사용자가 설정할 수 있으며, 예를 들어 Split Interval을 60분으로 설정하면, 메시지 간 60분 이상 대화가 없을 경우 새로운 쓰레드로 구분됩니다.
상담사 변경 : 사용자의 설정에 따라, 상담사가 변경될 경우 새로운 쓰레드로 구분할 수 있습니다. 이 옵션이 활성화되면, 동일한 채팅방이라도 상담사가 바뀌는 시점에서 새로운 쓰레드가 생성됩니다.
예를 들어, 고객이 오전 10시에 메시지를 보내고 상담사가 10시 30분에 답변했다면 이 두 메시지는 하나의 쓰레드로 묶입니다. 그러나 고객이 오후 1시에 다시 문의를 남기면 Split Interval이 60분을 초과했으므로 새로운 쓰레드로 구분됩니다. 또한, 상담사가 바뀐 경우, 사용자가 해당 옵션을 활성화했다면 새로운 쓰레드가 생성됩니다.

4. 티켓 만들기

쓰레드로 나누어진 메시지들을 기반으로 티켓을 생성합니다. 티켓은 고객과 상담사 간의 대화 흐름을 관리하기 위한 단위이며, 데스크룸에서 각 티켓에 대해 여러 필드를 정의하여 상담 성과를 분석할 수 있습니다.
아래 표는 카카오톡에서 티켓을 생성할 때 포함되는 필드와 그 정의, 데이터 타입에 대한 내용입니다.
필드명
설명
정의
타입
ticket_id
티켓 고유 식별 값
쓰레드 내 메시지 ID들을 합쳐 해시화한 값
STRING
channel_type
티켓이 생성된 채널의 유형
KAKAO_TALK 으로 고정
STRING
channel_id
채널 고유 식별 값
카카오톡 profile_id
STRING
ticket_type
티켓의 유형 (IB 또는 OB)
첫 메시지 유저가
고객인 경우 IB(Inbound)
상담사인 경우
OB(Outbound)
STRING
created_at
티켓이 생성된 시점
쓰레드 내 첫 번째 메시지 전송 시각
TIMESTAMP
opened_at
상담사가 티켓을 확인한 시점
ticket_type
IB 인 경우, first_replied_at OB 인 경우, created_at
TIMESTAMP | NULL
assigned_at
상담사가 티켓을 할당받은 시점
opened_at 과 동일
TIMESTAMP | NULL
solved_at
상담사가 티켓을 해결한 시점
ticket_type
IB 인 경우, last_replied_at 과 동일
OB 인 경우, 쓰레드 내 상담사의 마지막 메시지 전송 시각
TIMESTAMP | NULL
closed_at
티켓이 종료된 시점
쓰레드 내 마지막 메시지 전송 시각
TIMESTAMP | NULL
first_replied_at
티켓 내 상대방이 첫 메시지를 작성한 시점
(상대방은 IB 의 경우 상담사, OB 의 경우 고객이 됨)
ticket_type
IB 인 경우, 쓰레드 내 상담사의 첫 번째 메시지 전송 시각
OB 인 경우, 쓰레드 내 고객의 첫 번째 메시지 전송 시각
TIMESTAMP | NULL
first_replied_interval
티켓 생성 후 상대방이 첫 메시지를 작성하는데 까지 걸린 시간 IB 의 경우 상담사, OB 의 경우 고객이 됨)
(상대방은 IB 의 경우 상담사, OB 의 경우 고객이 됨)
first_replied_at - created_at
NUMBER | NULL
last_replied_at
티켓 내 상대방이 마지막 메시지를 작성한 시점 IB 의 경우 상담사, OB 의 경우 고객이 됨)
(상대방은 IB 의 경우 상담사, OB 의 경우 고객이 됨)
ticket_type
IB 인 경우, 쓰레드 내 상담사의 마지막 메시지 전송 시각
OB 인 경우, 쓰레드 내 고객의 마지막 메시지 전송 시각
TIMESTAMP | NULL
handle_time
상담사가 티켓을 해결하는 데 걸린 시간 (단위: 초)
ticket_type
IB인 경우, last_replied_at - opened_at
OB인 경우, last_replied_at - first_replied_at
INTEGER | NULL
avg_response_time
상담사의 평균 응답 시간 (단위: 초)
ticket_type
IB인 경우, 쓰레드 내 상담사의 모든 응답시간의 평균
OB인 경우, NULL
NUMBER | NULL
user_id
고객 ID
고객 ID
STRING
user_name
고객 이름
고객 이름
STRING
agent_id
상담사 ID
상담사 ID
STRING | NULL
agent_name
상담사 이름
상담사 이름
STRING | NULL
user_msg_count
고객이 보낸 메시지 수
쓰레드 내 고객 메시지 개수
NUMBER
agent_msg_count
상담사가 보낸 메시지 수
쓰레드 내 상담사 메시지 개수
NUMBER
bot_msg_count
봇이 보낸 메시지 수
쓰레드 내 봇 메시지 개수
NUMBER
is_abandoned
고객이 상담사 또는 봇과 연결되지 않았는지
쓰레드 내 상담사 혹은 봇 메시지가 0건이거나 봇 메시지 이후 마지막 메시지가 유저 메시지인 경우 True, 아닌 경우 False
BOOLEAN
is_on_operation_time
티켓이 운영 시간 내에 생성되었는지
created_at 이 설정된 운영 시간 내에 속하는 경우 True, 아닌 경우 False
BOOLEAN
is_on_break_time
티켓이 휴식 시간 내에 생성되었는지
created_at 이 설정된 휴식 시간 내에 속하는 경우 True, 아닌 경우 False
BOOLEAN
is_last_replied_by_user
쓰레드 내 마지막 메시지 작성자가 유저인지
쓰레드 내 마지막 메시지의 작성자가 고객이면 True , 아닌 경우 False
BOOLEAN
handled_by_only_bot
티켓이 봇만으로 처리되었는지
False로 고정
BOOLEAN