2.1개요
본 문서는 카카오톡 비즈메시지 상담톡(이하, 상담톡) API를 이용하여, 카카오톡 상담을 요청한 사용자와의 채팅에서 메시지를 수신/발신하기 위한 API 문서이다.
본 문서는 https 프로토콜을 통해 데이터를 json 형식으로 가공하여 GET, POST method를 사용하여 전송하고, json형식의 결과 데이터를 parsing하여 처리할 수 있음을 전제로 작성되었다.
2.2용어 정의
2.2.1허브 파트너(Hub Partner)
제휴한 카카오톡 채널을 통해 상담을 요청한 사용자와의 메시지 수신/발신을 대행하는 사업자
2.2.2카카오톡 채널(Kakao Talk Channel)
카카오톡 계정을 기반으로 한 비즈니스용 카카오톡 아이디
카카오톡 채널 홈페이지(https://center-pf.kakao.com)를 통해 개설
2.2.3상담 세션(Session)
상담원이 고객에게 메시지를 전송하기 위한 필수 조건으로, 세션이 연결된 상태에서만 상담원은 고객에게 메시지를 전송할 수 있다.
고객의 상담 요청이 허브 파트너 서버에 정상적으로 전송되면 세션이 생성과 동시에 시작된다.
고객은 상담 버튼을 클릭하여 상담을 요청하거나, 채팅방에서 메시지를 전송하여 상담 요청을 할 수 있다.
생성된 세션은 상담원과 고객의 종료 액션이 없으면, 고객의 마지막 메시지 수신 후 30일간 유지되며, 고객 메시지가 수신될 때 마다 연장된다.
상담원이 상담 종료를 요청(4.7 참고)하거나, 상담원이 고객을 차단(4.5 참고)하면 상담 세션은 종료된다.
고객이 종료명령어 입력, 채팅방 삭제, 카카오톡 채널을 차단 하거나, 고객의 마지막 메시지 수신 후 30일이 경과되면 상담 세션은 종료된다.
2.2.4사용자 키 (User Key)
특정 카카오톡 사용자를 구분하기 위한 key로, 고객이 상담을 요청한 시점에 제공된다.
user_key는 특정 카카오톡 사용자에 대해 프로필별로 각기 다르게 발급된다. 따라서 user_key는 해당 프로필에 대해서만 유효하다.
user_key는 대소문자를 구분한다.
카카오톡 사용자가 프로필을 차단했다가 다시 추가한 경우에는 user_key가 갱신되지 않으며, 이용자가 카카오톡 탈퇴 후 재가입한 경우 갱신된다.
2.2.5상담원의 정의
상담원은 카카오에서 제공하는 상담톡 API를 이용하는 주체를 의미하며 반드시 사람을 지칭하는 것은 아닙니다.
상담을 위하여 유저에게 상담원(사람)이 배정 되었는지 여부는 카카오에서는 알 수 없습니다.
상담 플로우상 직접적인 상담이 아닌 항목 선택 등의 말풍선도 카카오에서는 상담원이 발송한 것(과금)으로 구분됩니다.
2.2.6상담 메시지
상담원 유저한테 보낸 대화 메시지, 유저가 상담원한테 보낸 메시지 모두 상담 메시지로 합니다.
상담 메시지는 상담톡 시스템에는 저장되지 않으며 카카오톡 메시지 시스템에 3일간만 저장됩니다.
2.3선결 조건
메시지 API를 사용하여 메시지 전송을 대행하기 위해 아래의 조건이 선결되어야 한다.
허브파트너는 채팅 상담 주체인 카카오톡 채널을 등록하고, 발신 프로필 키(Sender Key)를 조회할 수 있다.
카카오톡 채널 등록 시, 상담톡 이용 여부를 ‘이용중’으로 설정하고, 대화 내역 저장 주체인 위탁사명을 등록하여야 상담톡 이용이 가능하다.
상담톡 이용 여부를 '이용중'으로 등록한 시점에 상담 내역 유실 방지를 위해 채팅 기능은 비활성 상태로 변경된다.
상담톡 이용 여부를 '이용중'으로 등록한 시점부터, 카카오톡 채널 관리자는 카카오톡 채널 홈페이지에서 1:1대화 메뉴를 이용할 수 없으므로, 상담톡 계약 종료 시에는 해당 채널의 상담톡 이용 여부를 ‘이용 중지’ 상태로 변경하여야 한다.
2.4API 스펙
2.4.1[서버] sip 서버
2.4.2메시지 발신
- [Request]
POST /chat/write
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
user_key | text(20) | Y | 사용자 키 |
sender_key | text(40) | Y | 발신 프로필 키 |
message_type | text(2) | N | 메시지 타입 (TX : 텍스트, IM : 이미지, FI: 일반파일, AU: 오디오파일, LI : 링크타입, BS:봇정보) 버튼 (기본값은 TX)) |
message | text(1000) | Y/N | 사용자에게 전달할 메시지 message_type이 TX, LI인 경우 필수 |
image_url | text(1000) | Y/N | 사용자에게 전달될 이미지 url message_type이 image인 경우 필수 |
file_url | text(1000) | Y/N | 사용자에게 전달될 파일 url message_type이 일반파일, 오디오 파일인 경우 필수 |
file_name | text(1000) | Y/N | 사용자에게 전달될 파일이름 message_type이 일반파일인 경우필수 |
file_size | text(1000) | Y/N | 사용자에게 전달될 파일용량 message_type이 일반파일인 경우필수 |
auto_answer | text(2) | Y/N | 시스템 자동 응답 메시지 상담불가 : 'S1' 상담부재 : 'S2' 무응답 상담종료 : 'S3' |
links | json | N | 링크타입(멀티버튼) |
bot_id | text(128) | N | 넥서스 시나리오 봇 아이디(콜아이디) |
bot_name | text(100) | N | 넥서스 시나리오 봇 이름 |
bot_status | text(10) | N | START: 시작 메시지, ING: 채팅중 , CLOSE:종료, TIMEOUT: 고객 응답 없음, CONNECT: 상담원 연결, BUSY:대기 상담원 없음. EXPIRE: 고객상담종료 |
오디오 타입 말풍선으로 보내려면 오디오 타입으로 파일을 업로드한 경로를 사용해야 됩니다. 일반 파일 업 로드로 오디오 파일을 올린 후 응답 받은 경로를 사용할 경우 발송이 정상적으로 되지 않습니다.
비디오 타입 말풍선은 아직 지원되지 않으며 일반 파일 업로드로 비디오 파일을 올린 후 message_type을 일반파일 (FI)로 발송하셔야 됩니다.
- [Parameter] - links
키 | - | 타입 | 필수 | 설명 |
---|---|---|---|---|
links | - | array | - | 버튼 목록 |
name | text(28) | Y | 버튼명 | |
type | text(2) | Y | 버튼 타입 <4.2.1 버튼 타입에서 확인 가능> | |
scheme_android | text | - | mobile android 환경에서 버튼 클릭 시 실행할 application custom scheme | |
scheme_ios | text | - | mobile ios 환경에서 버튼 클릭 시 실행할 application custom scheme | |
url_mobile | text | - | mobile 환경에서 버튼 클릭 시 이동할 url | |
url_pc | text | - | pc 환경에서 버튼 클릭 시 이동할 url | |
extra | text(100) | N | BK, MD 버튼 발송 시 전달할 extra 정보 | |
event | text(100) | N | 상담톡에서 봇 상담으로 전환시 호출할 봇 이벤트명 |
링크 타입 사용시 links 하위 Array 형태로 추가
아래 형태로 구성 가능
message + links
message + image
message + image + links
하나의 링크 타입 메시지당 links버튼은 최대 5개까지 첨부 가능
extra, event는 최대 50자이며 [A-Za-z0-9_]{1,50}에 해당해야 합니다.
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
createdAt | datetime | N | 메시지 발송 후 DB에 저장된 시각 ("2018-01-31T15:27:24.514") |
2.4.2.1버튼 타입별 속성
필수 파라메터를 모두 입력하셔야 정상적인 발송이 가능합니다.
버튼타입 | 속성 | 타입 | 필수 | 설명 |
---|---|---|---|---|
WL | url_mobile | text | Y | 버튼 클릭 시 이동할 pc/mobile환경별 web url |
url_pc | text | N | ||
AL | scheme_android | text | - | scheme_ios, scheme_android, url_mobile 중 2가지 필수 입력 mobile android 환경에서 버튼 클릭 시 실행할 application custom scheme |
scheme_ios | text | - | mobile ios 환경에서 버튼 클릭 시 실행할 application custom scheme | |
url_mobile | text | - | mobile 환경에서 버튼 클릭 시 이동할 url | |
url_pc | text | N | pc 환경에서 버튼 클릭 시 이동할 url | |
BK | - | - | - | 해당 버튼 텍스트 전송 |
MD | - | - | - | 해당 버튼 텍스트 + 메시지 본문 전송 |
BT | event | text(100) | N | 상담톡에서 봇상담으로 전환 (상담톡 세션 종료)
|
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
message | text | N | 오류 메시지 (오류시 존재하는 값) |
2.4.2.2상담톡 발신 메시지 타입
2.4.2.2.1텍스트 타입
텍스트 타입의 경우 텍스트 메시지 발송만 가능하다.
텍스트 글자수는 1000자 제한
2.4.2.2.2이미지 타입
이미지 타입, link 버튼용 이미지의 경우 내부 서버에 업로드된 이미지만 발송 가능하다.
이미지 타입 확장자 : jpg, png, gif
이미지 타입 용량 : 최대 5MB
link 버튼용 확장자 : jpg, png
link 버튼용 용량 : 0.5 MB
link 버튼용 권장사이즈 : 720px*720px
link 버튼용 업로드 주의사항 : 가로 500px 미만 또는 가로:세로 비율이 2:1 미만 또는 3:4 초과시 업로드 불가
2.4.2.2.2.1이미지 업로드
- [Request]
POST /image/upload
- [Header]
Content-type: multipart/form-data
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
sender_key | text | Y | 발신프로필 키 |
image | binary | Y | 업로드할 이미지 파일 |
image_type | text | N | 링크버튼 전용 이미지(link). link 버 튼 사용시 필수 ("image_type=link") |
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
image | text | N | 업로드된 이미지 경로 ("image":"http://mud-kage.kakao.com/original.jpg") |
2.4.2.2.2.2파일 업로드
일반 파일 용량 : 최대 300MB
비디오 파일 용량 : 최대 300MB
오디오 파일 용량 : 최대 10MB
- [Request]
POST /file/upload
- [Header]
Content-type: multipart/form-data
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
sender_key | text | Y | 발신프로필 키 |
file | binary | Y | 업로드할 파일 |
file_type | text | N | file 일반파일 (기본값), audio 오디 오 파일 ("image_type=audio") |
- [Response] 일반파일
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
file | text | N | 업로드된 이미지 경로 ("image":"http://mud-kage.kakao.com/original.jpg") |
name | text | N | 업로드된 파일 이름 |
size | text | N | 업로드된 파일 용량 |
- [Response] 오디오파일
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
file | text | N | 업로드된 이미지 경로 ("image":"http://mud-kage.kakao.com/original.m4a") |
2.4.3사용자 차단
더 이상 대화를 원치 않는 사용자가 있을 경우 차단할 수 있다.
차단 당한 사용자가 메시지를 전송 시, 고객에게는 “#{발신프로필명} 요청에 의해 차단된 사용자로 1:1 채팅을 할 수 없습니다.”라는 메시지가 전송되고, 고객의 메시지는 파트너사로 전달되지 않으므로, 차단 시 주의하여 야 한다.
- [Request]
POST /profile/user/block
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
user_key | text(20) | Y | 사용자 키 |
sender_key | text(40) | Y | 발신 프로필 키 |
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
message | text | N | 오류 메시지 (오류시 존재하는 값) |
2.4.4사용자 차단 해제
- [Request]
POST /profile/user/unblock
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
user_key | text(20) | Y | 사용자 키 |
sender_key | text(40) | Y | 발신 프로필 키 |
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
2.4.5상담 종료
고객과의 상담이 종료되었을 때, 종료 요청을 보낼 경우, 현재 열려있는 세션이 종료된다
2.4.5.1일반적인 상담 종료
- [Request]
POST /chat/end
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
user_key | text(20) | Y | 사용자 키 |
sender_key | text(40) | Y | 발신 프로필 키 |
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
message | text | N | 오류 메시지 (오류시 존재하는 값) |
sessionId | text | N | 종료된 세션아이디 (현재 요청에 의해 정상적으로 종료 된 세션이 있을 경우 존재하는 값) |
2.4.5.2상담 종료 후 지정된 봇 이벤트 말블럭을 실행 (봇이 설정된 경우만 가능)
- [Request]
POST /chat/endWithBot
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
user_key | text(20) | Y | 사용자 키 |
sender_key | text(40) | Y | 발신 프로필 키 |
bot_event | text(100) | N | 봇 이벤트 명 ("bot_evnet":"hello") |
봇 이벤트 명은 [A-Za-z0-9_]{0,1 00} 규칙에 맞아야하며 맞지 않는 경우 이벤트 말블럭만 실행되지 않습니다.
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
message | text | N | 오류 메시지 (오류시 존재하는 값) |
sessionId | text | N | 종료된 세션아이디 (현재 요청에 의해 정상적으로 종료 된 세션이 있을 경우 존재하는 값) |
2.4.6카카오톡 채널 1:1 채팅 내역 조회 기능
카카오톡 채널 1:1 채팅 기능을 사용한 프로필이 상담톡으로 전환 시 사용자 동의를 받아 기존 대화 내역을 조회하는 기능
사용자 동의에 대한 값을 수신하기 위한 수신도메인 작업이 필수
수신도메인이 준비되었다면 1:1채팅 내역 조회에 필요한 발신프로필을 <4.6.1 카카오톡 채널 1:1 채팅 내역 조회 신청> 을 통해 등록
1:1 채팅 내역 전체가 조회 되는 것이 아니라 상담원과 사용자의 일반텍스트, 이미지, 동영상, 음성파일만 조 회
2.4.6.1카카오톡 채널 1:1 채팅 내역 조회 신청
- [Request]
POST /agreement/request
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
sender_key | text(40) | Y | 발신 프로필 키 |
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
2.4.6.2카카오톡 채널 1:1 채팅 내역 조회
- [Request]
POST /agreement/user/message
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
sender_key | text | Y | 발신 프로필 키 |
user_key | text | Y | 사용자 키 |
prev_id | long | N | 이전 메시지 아이디(처음 호출시에 는 빈값) |
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
has_prev | boolean | Y | 이전 메시지 존재 여부 |
prev_id | long | N | 이전 메시지 아이디, has_prev가 true 일때 추가 내역이 필요한경우 요청시 prev_id에 값을 넣어 요청 |
messages | array | Y | 이전 대화 내역 메시지 리스트 |
키 | 타입 | 필수 | 설명 |
---|---|---|---|
writer_type | text | Y | 작성자 (U : 유저 P : 톡채널) |
type | text | Y | 메시지 종류 (text, photo, video, audio) |
message | text | Y | 메시지 내용 |
url | text | N | 파일 url("url":null) |
sent_at | text | Y | 작성일 ("2019-10-23 17:03:35") |
2.4.7카카오톡 사용자 정보
카카오톡 채널 1:1 채팅시 사용자키에 전화번호 및 이름등을 가져오기 위한 API 다.
버튼등을 통해 채팅방 입장시 사용자 정보가 있을경우 가져올수 있다.
바로 채널 입장시는 4.7.2 의 시용자 정보 인증이 먼저 이루어져야 정보를 가져올수 있다.
2.4.7.1카카오톡 사용자 정보 조회
- [Request]
GET /user/info
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
sender_key | text(40) | Y | 발신 프로필 키 |
user_key | text(20) | Y | 사용자 키 |
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | text | Y | 처리 결과 코드 (200은 정상 / 나머지는 오류) |
message | text | N | 처리 메시지 |
sender_key | text | N | 발신 프로필 키 |
user_key | text | N | 사용자 키 |
tel_number | text(20) | N | 사용자 전화번호 |
user_name | text(100) | N | 사용자 이름 |
user_id | text(100) | N | 사용자 ID |
agree_type | int | N | 사용자 인증 구분 0: 지속인증(기본값), 1: 1회성 인증 |
agree_date | text | N | 동의일자: "2019-10-23 17:03:35" |
- [Example]
http://127.0.0.1:8080/user/info?sender_key=da2b0c0d28805157d5355b60beb9493a9b3e5b15&user_key=d14zPgU4yqoO&
{ "code": "200", "message": "OK", "user_key": "d14zPgU4yqoO", "sender_key": "da2b0c0d28805157d5355b60beb9493a9b3e5b150", "user_id": "", "user_name": "", "tel_number": "1112323", "agree_type": 0, "agree_date": "2022-05-11 15:40:04" }
2.4.7.2사용자 정보 인증
- [Request]
POST /user/auth
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
sender_key | text | Y | 발신 프로필 키 |
user_key | text | Y | 사용자 키 |
tel_number | text(20) | Y | 사용자 전화번호 |
user_name | text(100) | N | 사용자 이름 |
user_id | text(100) | N | 사용자 ID |
agree_type | int | N | 사용자 인증 구분 0: 지속인증(기본값), 1: 1회성 인증 |
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | text | Y | 처리 결과 코드 (200은 정상 / 나머지는 오류) |
message | text | N | 응답 메시지 |
- [Example]
curl -X POST -H "Content-type: application/json" \ -d '{"user_key":"d74zPgU4yqoO","sender_key":"da2b0c0d28805157d5355b60beb9493a9b3e5b15","app_user_id":null,"user_name":"장형길","user_id":"kenneth","tel_number":"01029113333" }' \ http://127.0.0.1:8080/user/auth
{ "code": "200", "message": "OK" }
2.4.7.3사용자 정보 인증 철회
- [Request]
post /user/auth/delete
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
sender_key | text | Y | 발신 프로필 키 |
user_key | text | Y | 사용자 키 |
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | text | Y | 처리 결과 코드 (200은 정상 / 나머지는 오류) |
message | text | N | 응답 메시지 |
- [Example]
curl -X POST -H "Content-type: application/json" \ -d '{"user_key":"d74zPgU4yqoO","sender_key":"da2b0c0d28805157d5355b60beb9493a9b3e5b15" }' \ http://127.0.0.1:8080/user/auth/delete
{ "code": "200", "message": "OK" }
2.4.8카카오톡 사용자 세션정보
카카오톡 채널 1:1 채팅 중인 사용자 정보를 가져오기 위한 API 다.
상담이 진행중인 리스트만 가져온다.
상담원이 상담한 세션만 가져올수 있다.
2.4.8.1카카오톡 사용자 세션 정보 조회
- [Request]
GET /session/list
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
sender_key | text(40) | N | 발신 프로필 키 |
agent_dn | text(32) | Y | 상담원 DN 값 |
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
message | text | N | 결과 설명 |
sessions | array | 세션 리스트 |
키 | 타입 | 필수 | 설명 |
---|---|---|---|
session_id | text | Y | 세션 ID |
extra | text | Y | 사용자 메타 데이터 |
uuid | text | Y | U PBX 에서 전달 받은 세션ID |
agent_dn | text | Y | 상담원 DN 값 |
agent_vdn | text | N | 최초 상담원 VDN 값(참고만 하면 됨, 미사용) |
reply | bool | N | 상담원 답변여부 ( 고객 메시지가 마지막일 경우 false , 상담원 메시지가 마지막일 경우 true) |
last_message | text | Y | 마지막 메시지 정보 ( text 메시지 일 경우 최대 200 byte 만 표시됨) |
- [Example]
http://127.0.0.1:8080/session/list?sender_key=da2b0c0d28805157d5355b60beb9493a9b3e5b15&agent_dn=1004
{ "code": "200", "message": "OK", "sessions": [ { "session_id": "224002311", "extra": "category_id|1|division_id|8|", "uuid": "00FA08000100036555C976", "agent_dn": "30011", "agent_vdn": "30011" }, { "session_id": "224508838", "extra": "category_id|1|division_id|8|", "uuid": "00FA0800010001655BFA3F", "agent_dn": "30011", "agent_vdn": "30011" } ] }
2.4.8.2카카오톡 사용자 세션 정보 (PBX -> Biztalk)
상담사와 채팅 연결시 uuid 및 상담사 내선을 정보를 수신한다.
상담사와 채팅 전환시 uuid 및 상담사 내선을 정보를 수신한다.
- [Request]
POST /session/info
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
sender_key | text(40) | Y | 발신 프로필 키 |
user_key | text(20) | Y | 사용자 키 |
uuid | text | Y | 콜세션 UUID 값 |
agent_dn | text(32) | Y | 상담원 DN 값 |
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | integer | Y | 처리 결과 코드 (0은 정상 / 나머지는 오류) |
message | text | N | 결과 설명 |
- [Example]
curl -X POST -H "Content-type: application/json" \ -d '{"user_key":"d74zPgU4yqoO","sender_key":"da2b0c0d28805157d5355b60beb9493a9b3e5b15", "uuid":"00FA08000100036555C976", "agent_dn":"1004" }' \ http://127.0.0.1:8080/session/info
{ "code": "200", "message": "OK" }
2.4.9넥서스 시나리오봇 연동
넥서스 시나리오 봇 연동시 상태 값 저장 할수 있다.
2.4.9.1넥서스 시나리오 봇 상태 저장
- [Request]
POST /bot/status
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
sender_key | text(40) | Y | 발신 프로필 키 |
user_key | text(20) | Y | 사용자 키 |
status | text(20) | Y | 상태값 Welcom : 시나리오봇 처음 나타남 Ing : 상담중 Completed : 상담완료 Exit: 고객 종료(상담완료 이전 종료) |
bot_id | text(128) | Y | 봇아이디 또는 call id (동일한 고객의 상담일 경우 구별을 위한 키가 필요) |
bot_name | text(100) | N | 넥서스 시나리옷 봇 이름 |
- [Response]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
code | text | Y | 처리 결과 코드 (200은 정상 / 나머지는 오류) |
message | text | N | 처리 메시지 |
2.4.10메지시 첨부파일 가져오기
메시지 수신시 1000자 이상의 경우 메시지가 첨부파일로 제공 된다.
메시지 첨부파일의 경우 일정시간이 이후 kakao 서버에서 파일이 삭제된다.
삭제전에 미리 저장된 첨부파일을 불러오는 API 다.
2.4.10.1첨부파일 가져오기
- [Request]
GET /message/attachment
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
attachment_url | text(1024) | Y | 첨부파일 URL |
2.4.11첨부파일 가져오기
일정시간이 지날경우 kakao 서버에 업로드한 파일이 삭제된다.
삭제전에 미리 저장된 첨부파일을 불러오는 API 다.
2.4.11.1첨부파일 가져오기
- [Request]
GET /message/file
- [Parameter]
키 | 타입 | 필수 | 설명 |
---|---|---|---|
file_url | text(1024) | Y | 첨부파일 URL |
2.5카카오톡 연결
2.5.1버튼을 통한 상담 시작 (GET 방식)
domain : https://bizmessage.kakao.com (별도 도메인 사용)
path : /chat/open/@uuid
method : GET
- [Parameter]
extra, event는 최대 50자이며 [A-Za-z0-9_]{1,50}에 해당해야 합니다.
extra 에는 개인정보를 포함하지 않아야 합니다. 불가피하게 개인정보가 포함되어야 할 경우, 암호화를 적용해야 합니다.
키 | 타입 | 필수 | 설명 | 예제 |
---|---|---|---|---|
uuid | text | Y | 카카오톡 채널 (@ 로 시작되는 아이디) (해당 파라미터는 주소 맨 끝에 붙는다) | @tkaekaxhr |
extra | text(50) | N | 상담시 전달하고 싶은 메타 정보 메타정보에 추가정보를 위해서 앞에 prefix 를 붙여서 사용 * UUID 추가: _CID_번호 * DN 추가: _DN_번호 * MODE 추가 : _MODE_값 - INFO(기본값) : 상담원에게 정보 제공 - AGENT: 통화중 상담원에게 연결 | extra=_UUID_1234890_DN_10004 => 통화 정보 전달 extra=_UUID_15890_DN_10004_MODE_AGENT => 상담원에게 바로 연결 |
bot | text | N | "true"인 경우 봇으로 상담 시작 | -bot:"false": 상담톡으로 시작(기본값) -bot:"true": 봇으로 시작 -bot:"auto": 봇으로 시작하되, 상담 세션이 있을 경우 상담모드 유지(True 같이 대문자 불가) |
event | text(50) | Y | 봇으로 상담 시작 시 같이 실행될 봇 말블럭 이벤트명 |
2.5.2버튼을 통한 상담 시작
domain : https://상담톡 domain
path : /chat/open
method : GET
- [Sample]
https://127.0.0.1/chat/open?yid={카카오채널명}&site_uid={site_uid}&site_id={site_id}
extra, event는 최대 50자이며 [A-Za-z0-9_]{1,50}에 해당해야 합니다.
extra 에는 개인정보를 포함하지 않아야 합니다. 불가피하게 개인정보가 포함되어야 할 경우, 암호화를 적용해야 합니다.
키 | 타입 | 필수 | 설명 | 예제 |
---|---|---|---|---|
yid | text | Y | 카카오톡 채널 (@ 로 시작되는 아이디) (해당 파라미터는 주소 맨 끝에 붙는다) | yid=@tkaekaxhr |
site_id | text | N | 엡체 정보 | site_id=_nexus |
site_uid | text | N | 고객 아이디 (고객정보 키) | site_uid=test111 |
category_id | text | N | 상담 카테고리 | |
division_id | text | N | 분류 코드 |
2.6코드 정의
2.6.1오류 코드
code | message | 설명 |
---|---|---|
0 | 정상코드 | |
-400 | ForbiddenException | 권한 없음 |
-500 | UnauthorizedException | 인증 실패 |
-501 | InvalidSenderException (InvalidSenderIdException, InvalidSenderConsultStatusException) | 발신 프로필 키가 유효하지 않거나 상담을 진행할 수 없음 (카카오톡 채널이 activated 상태가 아닌 경우 상담톡 이용 중 상태가 아닌 경우) |
-502 | InvalidSessionException | 세션이 만료되었거나 존재하지 않음 |
-503 | InvalidUserKeyException | 잘못된 형식의 유저키 요청 |
-504 | DuplicateSerialNumberException | 메시지 일련번호가 중복됨 (메시지 일련번호는 CS처리를 위해 고유한 값이 부여되어야 함.) |
-505 | InvalidImageException(InvalidImageFormatException,InvalidImageMaxLengthException) | 잘못된 이미지 전송 요청 |
-506 | MessageLengthOverLimitException | 메시지 길이 제한 오류 1000자 초과 |
-507 | InvalidHubPartnerException | 허브 파트너 키가 유효하지 않음 |
-508 | InvalidProfileChatStatusException | 채팅 기능이 비활성 상태인 경우 |
-509 | InvalidJsonException(NoJsonBodyException, JsonParseException, NoValueJsonElementException) | 잘못된 파라메터 요청 |
-510 | InvalidMessageException(NoImageException, NoTextException, FailedToReadButtonLinkException, NoMatchedButtonUrlException, NoMandatoryButtonPropertyException) | 잘못된 형식의 메시지 타입 요청 |
-511 | BlockedUserMessageException | 차단된 사용자에게 메시지 전송 요청 |
-512 | ContractNotFoundException | 유효한 상담톡 계약이 존재하지 않음 |
-600 | FailedToSendMessageException | 메시지 전송 실패 |
-601 | InternalSystemErrorException | 내부 시스템 에러 |