이 문서는 JavaScript SDK(Kakao SDK for JavaScript)를 사용한 카카오톡 메시지 API 구현 방법을 안내합니다.
이 문서에 포함된 기능 일부는 [도구] > [JS 데모]에서 사용해 볼 수 있습니다.
카카오톡 메시지 API는 같은 서비스 내 사용자간 메시지 발송만 지원하며, 카카오톡 소셜 API 사용 권한이 있어야 친구에게 메시지 발송 기능을 사용할 수 있습니다. 자세한 내용은 메시지 발송 기능 안내와 사용 방법을 확인합니다.
보낼 메시지의 종류와 구성 방법에 따라 호출해야할 API가 다르므로, 개발 전 아래 순서대로 사용할 API를 선택합니다.
카카오디벨로퍼스의 메시지 발송 기능은 카카오톡 공유와 카카오톡 메시지 두 가지입니다. 메시지 발송 기능 안내를 참고해 사용할 기능을 선택합니다. 카카오톡 메시지를 사용하려는 경우, Step 2 이후의 내용을 확인합니다.
JavaScript SDK는 카카오톡 메시지 API를 내장 함수 형태로 지원하지 않습니다. 웹 페이지에서 JavaScript SDK로 카카오톡 메시지 API를 사용하려면 Kakao.API.request 함수를 사용해 REST API와 같은 URL로 요청합니다.
템플릿 종류를 참고하여 어떤 메시지 템플릿을 사용할지 결정합니다.
보낼 메시지는 기본 템플릿을 바탕으로 객체 형태로 구성하거나, 서비스에 맞게 직접 구성한 사용자 정의 템플릿을 사용하여 구성할 수 있습니다. 구성 방식 비교를 참고합니다.
카카오톡 메시지의 경우, 수신 대상에 따라 사용하는 API가 구분되어 있다는 점에 유의합니다.
전송 대상 | 설명 |
---|---|
나에게 발송 | 현재 로그인한 사용자의 카카오톡 나와의 채팅에 메시지를 발송합니다. 이 기능으로는 다른 사용자에게 메시지를 보낼 수 없고, 로그인한 사용자 본인에게만 메시지를 보낼 수 있습니다. |
친구에게 발송 | 현재 로그인한 사용자의 카카오톡 친구에게 메시지를 발송합니다. 중요: 추가 기능 신청이 필요합니다. 피커 또는 카카오톡 친구 목록 조회로 수신 대상 정보를 받는 과정을 추가 구현해야 합니다. 한 번에 최대 5명의 친구에게 메시지를 보낼 수 있습니다. 일간 및 월간 제공량이 정해져 있으므로 쿼터를 참고합니다. |
카카오톡 메시지는 지정된 웹 페이지 또는 앱을 실행하는 링크를 포함합니다. 메시지 속 버튼들은 URI 스킴(URI Schemes)과 파라미터로 구성된 커스텀 URL 스킴(Custom URL Scheme)으로 앱을 실행합니다. 자세한 설정 안내는 커스텀 URL 스킴 설정를 참고합니다.
레퍼런스 | 앱 설정 |
---|---|
Kakao.API.request() |
설치 초기화 커스텀 URL 스킴 설정 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
- | 플랫폼 등록 카카오 로그인 활성화 동의항목 |
필요 | 필요: 카카오톡 메시지 전송(talk_message) |
사전 정의된 템플릿 형식에 맞춰 객체로 구성 요소를 정의해 나에게 메시지를 발송하는 API입니다.
먼저 원하는 템플릿 종류에 따라 객체를 구성해야 합니다. 구성 방법은 기본 템플릿을 참고합니다.
Kakao.API.request()
함수 호출 시, 앞서 구성한 템플릿 객체를 template_object
파라미터로 전달합니다.
Kakao.API.request()
는 Promise
를 반환합니다. 요청 성공 시 반환 내용은 REST API를 참고합니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
url | String |
/v2/api/talk/memo/default/send 로 고정 |
O |
data | Object |
API에 전달할 파라미터 | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
template_object | Object |
메시지 구성 요소를 담은 객체(Object) 피드, 리스트, 위치, 커머스, 텍스트, 캘린더 중 하나 |
O |
Kakao.API.request({
url: '/v2/api/talk/memo/default/send',
data: {
template_object: {
object_type: 'feed',
content: {
title: '딸기 치즈 케익',
description: '#케익 #딸기 #삼평동 #카페 #분위기 #소개팅',
image_url:
'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png',
link: {
web_url: 'https://developers.kakao.com',
mobile_web_url: 'https://developers.kakao.com',
},
},
item_content: {
profile_text: 'Kakao',
profile_image_url: 'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png',
title_image_url: 'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png',
title_image_text: 'Cheese cake',
title_image_category: 'Cake',
items: [
{
item: 'Cake1',
item_op: '1000원',
},
{
item: 'Cake2',
item_op: '2000원',
},
{
item: 'Cake3',
item_op: '3000원',
},
{
item: 'Cake4',
item_op: '4000원',
},
{
item: 'Cake5',
item_op: '5000원',
},
],
sum: 'Total',
sum_op: '15000원',
},
social: {
like_count: 100,
comment_count: 200,
},
buttons: [
{
title: '웹으로 보기',
link: {
mobile_web_url: 'https://developers.kakao.com',
web_url: 'https://developers.kakao.com',
},
},
{
title: '앱으로 보기',
link: {
mobile_web_url: 'https://developers.kakao.com',
web_url: 'https://developers.kakao.com',
},
},
],
},
},
})
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
});
레퍼런스 | 앱 설정 |
---|---|
Kakao.API.request() |
설치 초기화 커스텀 URL 스킴 설정 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
- | 플랫폼 등록 카카오 로그인 활성화 동의항목 메시지 템플릿 |
필요 | 필요: 카카오톡 메시지 전송(talk_message) |
현재 로그인한 사용자의 카카오톡으로, 사용자 정의 템플릿을 적용한 메시지를 발송합니다. 템플릿 구성 방법은 사용자 정의 템플릿을 참고합니다.
Kakao.API.request()
함수 호출 시, 사용자 정의 템플릿 ID를 template_id
파라미터로 전달해야 합니다.
Kakao.API.request()
는 Promise
를 반환합니다. 요청 성공 시 반환 내용은 REST API를 참고합니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
url | String |
/v2/api/talk/memo/send 로 고정 |
O |
data | Object |
API에 전달할 파라미터 | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
template_id | Number |
[도구] > [메시지 템플릿]에서 구성한 메시지 템플릿 ID | O |
template_args | Object |
template_id 로 지정한 메시지 템플릿에 사용자 인자를 사용한 경우, 전달 필수 key:value 형식으로 전달 중요: 사용자 정의 템플릿에 사용자 인자를 사용했음에도 이 파라미터를 사용하지 않을 경우, 사용자 인자로 지정된 부분이 ${KEY} 형식으로 메시지에 그대로 노출 |
X |
Kakao.API.request({
url: '/v2/api/talk/memo/send',
data: {
template_id: ${YOUR_TEMPLATE_ID},
},
})
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
});
레퍼런스 | 앱 설정 |
---|---|
Kakao.API.request() |
설치 초기화 커스텀 URL 스킴 설정 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
- | 플랫폼 등록 카카오 로그인 활성화 동의항목 |
필요 | 필요: 카카오톡 메시지 전송(talk_message) |
웹 페이지 URL을 스크랩하여 그 정보를 바탕으로 스크랩 메시지를 구성해 나에게 발송하는 API입니다. 다른 사용자에게 발송이 필요하면 스크랩 메시지 발송 API를 사용합니다.
Kakao.API.request()
함수 호출 시, 스크랩할 웹 페이지 URL을 request_url
파라미터로 전달해야 합니다. 스크랩할 웹 페이지의 도메인은 앱 관리 페이지의 [앱] > [일반] > [플랫폼] > [Web]에 등록돼 있어야 합니다.
Kakao.API.request()
는 Promise
를 반환합니다. 요청 성공 시 반환 내용은 REST API를 참고합니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
url | String |
/v2/api/talk/memo/scrap/send 로 고정 |
O |
data | Object |
API에 전달할 파라미터 | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
request_url | String |
스크랩할 웹 페이지 URL 중요: 앱 관리 페이지의 [앱] > [일반] > [플랫폼] > [Web]에 등록된 도메인만 사용 가능 |
O |
template_id | Number |
[도구] > [메시지 템플릿]에서 구성한 메시지 템플릿 ID 서비스에서 정의한 메시지 템플릿을 기반으로 스크랩 메시지를 보낼 경우 사용 (참고: 사용자 정의 템플릿) |
X |
template_args | Object |
template_id 로 지정한 메시지 템플릿에 사용자 인자를 사용한 경우, 전달 필수 key:value 형식으로 전달 스크랩 결과를 덮어쓰기(overwrite) 할 수는 없음 중요: 사용자 정의 템플릿에 사용자 인자를 사용했음에도 이 파라미터를 사용하지 않을 경우, 사용자 인자로 지정된 부분이 ${KEY} 형식으로 메시지에 그대로 노출 |
X |
Kakao.API.request({
url: '/v2/api/talk/memo/scrap/send',
data: {
request_url: 'https://developers.kakao.com',
},
})
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
});
Kakao.API.request({
url: '/v2/api/talk/memo/scrap/send',
data: {
request_url: 'https://developers.kakao.com',
template_id: ${YOUR_TEMPLATE_ID},
},
})
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
});
레퍼런스 | 앱 설정 |
---|---|
Kakao.API.request() |
설치 초기화 커스텀 URL 스킴 설정 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
필요: 사용 권한 |
플랫폼 등록 카카오 로그인 활성화 동의항목 |
필요 | 필요: 카카오톡 메시지 전송(talk_message) |
사전 정의된 템플릿 형식에 맞춰 객체로 구성 요소를 정의해 메시지를 발송하는 API입니다.
먼저 원하는 템플릿 종류에 따라 객체를 구성해야 합니다. 구성 방법은 기본 템플릿을 참고합니다.
Kakao.API.request()
함수 호출 시, 앞서 구성한 템플릿 객체를 template_object
파라미터로 전달합니다.
Kakao.API.request()
는 Promise
를 반환합니다. 요청 성공 시 반환 내용은 REST API를 참고합니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
url | String |
/v1/api/talk/friends/message/default/send 로 고정 |
O |
data | Object |
API에 전달할 파라미터 | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
receiver_uuids | String[] |
피커 또는 카카오톡 친구 목록 조회 API로 얻은 사용자 uuid 값 한 번에 최대 5명의 사용자에게 메시지 발송 가능 |
O |
template_object | Object |
메시지 구성 요소를 담은 객체(Object) 피드, 리스트, 위치, 커머스, 텍스트, 캘린더 중 하나 |
O |
Kakao.API.request({
url: '/v1/api/talk/friends/message/default/send',
data: {
receiver_uuids: ['${RECEIVER_UUID}'],
template_object: {
object_type: 'feed',
content: {
title: '딸기 치즈 케익',
description: '#케익 #딸기 #삼평동 #카페 #분위기 #소개팅',
image_url:
'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png',
link: {
web_url: 'https://developers.kakao.com',
mobile_web_url: 'https://developers.kakao.com',
},
},
item_content: {
profile_text: 'Kakao',
profile_image_url: 'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png',
title_image_url: 'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png',
title_image_text: 'Cheese cake',
title_image_category: 'Cake',
items: [
{
item: 'Cake1',
item_op: '1000원',
},
{
item: 'Cake2',
item_op: '2000원',
},
{
item: 'Cake3',
item_op: '3000원',
},
{
item: 'Cake4',
item_op: '4000원',
},
{
item: 'Cake5',
item_op: '5000원',
},
],
sum: 'Total',
sum_op: '15000원',
},
social: {
like_count: 100,
comment_count: 200,
},
buttons: [
{
title: '웹으로 보기',
link: {
mobile_web_url: 'https://developers.kakao.com',
web_url: 'https://developers.kakao.com',
},
},
{
title: '앱으로 보기',
link: {
mobile_web_url: 'https://developers.kakao.com',
web_url: 'https://developers.kakao.com',
},
},
],
},
},
})
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
});
레퍼런스 | 앱 설정 |
---|---|
Kakao.API.request() |
설치 초기화 커스텀 URL 스킴 설정 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
필요: 사용 권한 |
플랫폼 등록 카카오 로그인 활성화 동의항목 메시지 템플릿 |
필요 | 필요: 카카오톡 메시지 전송(talk_message) |
현재 로그인한 사용자의 카카오톡으로, 사용자 정의 템플릿을 적용한 메시지를 발송합니다. 템플릿 구성 방법은 사용자 정의 템플릿을 참고합니다.
Kakao.API.request()
함수 호출 시, 사용자 정의 템플릿 ID를 template_id
파라미터로 전달해야 합니다.
Kakao.API.request()
는 Promise
를 반환합니다. 요청 성공 시 반환 내용은 REST API를 참고합니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
url | String |
/v1/api/talk/friends/message/send 로 고정 |
O |
data | Object |
API에 전달할 파라미터 | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
receiver_uuids | String[] |
피커 또는 카카오톡 친구 목록 조회 API로 얻은 사용자 uuid 값 한 번에 최대 5명의 사용자에게 메시지 발송 가능 |
O |
template_id | Number |
[도구] > [메시지 템플릿]에서 구성한 메시지 템플릿 ID | O |
template_args | Object |
template_id 로 지정한 메시지 템플릿에 사용자 인자를 사용한 경우, 전달 필수 key:value 형식으로 전달 중요: 사용자 정의 템플릿에 사용자 인자를 사용했음에도 이 파라미터를 사용하지 않을 경우, 사용자 인자로 지정된 부분이 ${KEY} 형식으로 메시지에 그대로 노출 |
X |
Kakao.API.request({
url: '/v1/api/talk/friends/message/send',
data: {
receiver_uuids: ['${RECEIVER_UUID}'],
template_id: ${YOUR_TEMPLATE_ID},
},
})
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
});
레퍼런스 | 앱 설정 |
---|---|
Kakao.API.request() |
설치 초기화 커스텀 URL 스킴 설정 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
필요: 사용 권한 |
플랫폼 등록 카카오 로그인 활성화 동의항목 |
필요 | 필요: 카카오톡 메시지 전송(talk_message) |
웹 페이지 URL을 스크랩하여 그 정보를 바탕으로 스크랩 메시지를 구성해 발송하는 API입니다.
Kakao.API.request()
함수 호출 시, 스크랩할 웹 페이지 URL을 request_url
파라미터로 전달해야 합니다. 스크랩할 웹 페이지의 도메인은 앱 관리 페이지의 [앱] > [일반] > [플랫폼] > [Web]에 등록돼 있어야 합니다.
Kakao.API.request()
는 Promise
를 반환합니다. 요청 성공 시 반환 내용은 REST API를 참고합니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
url | String |
/v1/api/talk/friends/message/scrap/send 로 고정 |
O |
data | Object |
API에 전달할 파라미터 | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
receiver_uuids | String[] |
피커 또는 카카오톡 친구 목록 조회 API로 얻은 사용자 uuid 값 한 번에 최대 5명의 사용자에게 메시지 발송 가능 |
O |
request_url | String |
스크랩할 웹 페이지 URL 중요: 앱 관리 페이지의 [앱] > [일반] > [플랫폼] > [Web]에 등록된 도메인만 사용 가능 |
O |
template_id | Number |
[도구] > [메시지 템플릿]에서 구성한 메시지 템플릿 ID 서비스에서 정의한 메시지 템플릿을 기반으로 스크랩 메시지를 보낼 경우 사용 (참고: 사용자 정의 템플릿) |
X |
template_args | Object |
template_id 로 지정한 메시지 템플릿에 사용자 인자를 사용한 경우, 전달 필수 key:value 형식으로 전달 스크랩 결과를 덮어쓰기(overwrite) 할 수는 없음 중요: 사용자 정의 템플릿에 사용자 인자를 사용했음에도 이 파라미터를 사용하지 않을 경우, 사용자 인자로 지정된 부분이 ${KEY} 형식으로 메시지에 그대로 노출 |
X |
Kakao.API.request({
url: '/v1/api/talk/friends/message/scrap/send',
data: {
receiver_uuids: ['${RECEIVER_UUID}'],
request_url: 'https://developers.kakao.com',
},
})
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
});
Kakao.API.request({
url: '/v1/api/talk/friends/message/scrap/send',
data: {
receiver_uuids: ['${RECEIVER_UUID}'],
request_url: 'https://developers.kakao.com',
template_id: ${YOUR_TEMPLATE_ID},
},
})
.then(function(response) {
console.log(response);
})
.catch(function(error) {
console.log(error);
});
메시지에 넣을 이미지는 URL 형태로 메시지 템플릿 구성 시에 첨부하거나, 메시지 템플릿 도구에서 미리 업로드할 수 있습니다. 자세한 안내와 예제는 이미지 업로드에서 확인할 수 있습니다.