페이지 이동경로
  • 문서>
  • 메시지>
  • 카카오톡 메시지: JavaScript

메시지

카카오톡 메시지: JavaScript

이 문서는 Kakao SDK for JavaScript(이하 JavaScript SDK)를 사용한 카카오톡 메시지 API 구현 방법을 안내합니다.

이 문서에 포함된 기능 일부는 [도구] > [JS 데모]를 통해 사용해 볼 수 있습니다.

시작하기 전에

보낼 메시지의 종류와 구성 방법에 따라 호출해야할 API가 다르므로, 개발 전 다음 순서대로 사용할 API를 선택합니다.

구현 방식 선택

Step 1. 메시지 API 선택

메시지 API는 카카오톡 공유와 카카오톡 메시지 두 가지입니다. 이해하기를 참고해 어떤 API로 메시지 보내기를 구현할 것인지 결정합니다. 카카오톡 메시지를 사용하려는 경우, Step 2 이후의 내용을 확인합니다.

REST API 호출

JavaScript SDK는 카카오톡 메시지 API를 내장 함수 형태로 지원하지 않습니다. 웹 페이지에서 JavaScript SDK를 통해 카카오톡 메시지 API를 사용하려면 Kakao.API.request 함수를 사용해 REST API와 같은 URL로 요청합니다.

Step 2. 메시지 종류 및 구성 방법 선택

종류를 참고하여 어떤 메시지 템플릿을 사용할지 결정합니다.

보낼 메시지는 기본 템플릿을 바탕으로 객체 형태로 구성하거나, 서비스에 맞게 직접 구성한 사용자 정의 템플릿을 사용하여 구성할 수 있습니다. 자세한 정보는 메시지 구성 방법에서 확인할 수 있습니다.

Step 3. 메시지 전송 대상 선택

카카오톡 메시지의 경우, 수신 대상에 따라 나에게 보내기, 친구에게 보내기로 API가 구분되어 있다는 점에 유의합니다.

전송 대상 설명
에게 보내기 현재 로그인한 사용자의 카카오톡 나와의 채팅에 메시지를 보냅니다. 이 기능으로는 다른 사용자에게 메시지를 보낼 수 없고, 로그인한 사용자 본인에게만 메시지를 보낼 수 있습니다.
친구에게 보내기 현재 로그인한 사용자의 카카오톡 친구에게 메시지를 보냅니다. 친구 목록 가져오기 API를 통해 수신 대상 정보를 받는 과정을 추가 구현해야 합니다. 한 번에 최대 5명의 친구에게 메시지를 보낼 수 있습니다. 일간 및 월간 제공량이 정해져 있으므로 운영 정책을 참고합니다.
주의: 사용 권한

친구에게 보내기를 사용하려는 경우, 카카오톡 메시지 사용 권한 신청을 참고하여 테스트 및 사용 권한 신청을 진행합니다. 이용 정책을 함께 참고합니다.


참고: 선택 조건별 필요한 API
전송 대상 메시지 종류 메시지 구성 방법 API
나에게 보내기 피드, 리스트, 위치, 커머스, 텍스트 기본 템플릿 기본 템플릿으로 메시지 보내기
피드, 리스트, 커머스 사용자 정의 템플릿 사용자 정의 템플릿으로 메시지 보내기
스크랩 기본 템플릿 기본 템플릿으로 스크랩 메시지 보내기
사용자 정의 템플릿 사용자 정의 템플릿으로 스크랩 메시지 보내기
친구에게 보내기 피드, 리스트, 위치, 커머스, 텍스트 기본 템플릿 친구 목록 가져오기
기본 템플릿으로 메시지 보내기
피드, 리스트, 커머스 사용자 정의 템플릿 친구 목록 가져오기
사용자 정의 템플릿으로 메시지 보내기
스크랩 기본 템플릿 친구 목록 가져오기
기본 템플릿으로 스크랩 메시지 보내기
사용자 정의 템플릿 친구 목록 가져오기
사용자 정의 템플릿으로 스크랩 메시지 보내기

커스텀 URL 스킴 설정

카카오톡 메시지는 지정된 웹 페이지 또는 앱을 실행하는 링크를 포함합니다. 메시지 속 버튼들은 URI 스킴(URI Schemes)과 파라미터로 구성된 커스텀 URL 스킴(Custom URL Scheme)을 통해 앱을 실행합니다. 자세한 설정 안내는 커스텀 URL 스킴 설정를 참고합니다.

기본 템플릿으로 메시지 보내기

기본 정보

사전 설정 카카오 로그인 사용자 동의 권한 레퍼런스
플랫폼 등록
카카오 로그인 활성화
동의 항목
필요 필요:
카카오톡 메시지 전송(talk_message)
필요:
사용 권한
(친구에게 보내기)
request()

기본 템플릿을 사용해 현재 로그인한 사용자의 카카오톡으로 메시지를 보냅니다. 메시지 전송 대상에 따라 호출해야 할 메서드가 다릅니다.

template_object 객체에 메시지 내용을 담아 data 파라미터로 전달합니다. 기본 메시지 템플릿 구성 요소 및 예제를 참고합니다.

친구에게 메시지 보내기 요청 시, 피커 또는 친구 목록 가져오기 응답으로 받은 uuidreceiver_uuids 파라미터에 전달합니다. 한 번에 최대 5명의 친구에게 메시지를 보낼 수 있습니다.

url을 사용 메서드에 해당하는 값으로 지정해 Kakao.API.request() 함수를 호출합니다. Kakao.API.request()Promise를 반환합니다. 요청 성공 시 반환 내용은 REST API를 참고합니다.

나에게 보내기

Parameter
Name Type Description Required
url String /v2/api/talk/memo/default/send로 고정 O
data Object API에 전달할 파라미터 O
data: 기본 템플릿으로 나에게 메시지 보내기
Name Type Description Required
template_object Object 메시지 구성 요소를 담은 객체(Object)
피드, 리스트, 위치, 커머스, 텍스트 중 하나
O
Sample
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);
  });

친구에게 보내기

Parameter
Name Type Description Required
url String /v1/api/talk/friends/message/default/send로 고정 O
data Object API에 전달할 파라미터 O
data: 기본 템플릿으로 친구에게 메시지 보내기
Name Type Description Required
receiver_uuids String[] 친구 목록 가져오기 API를 통해 얻은 사용자 uuid 값, 최대 5개 O
template_object Object 메시지 구성 요소를 담은 객체(Object)
피드, 리스트, 위치, 커머스, 텍스트 중 하나
O
Sample
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);
  });

사용자 정의 템플릿으로 메시지 보내기

기본 정보

사전 설정 카카오 로그인 사용자 동의 권한 레퍼런스
플랫폼 등록
카카오 로그인 활성화
동의 항목
메시지 템플릿
필요 필요:
카카오톡 메시지 전송(talk_message)
필요:
사용 권한
(친구에게 보내기)
request()

[도구] > [메시지 템플릿]에서 직접 구성한 사용자 정의 템플릿을 사용하여 현재 로그인한 사용자의 카카오톡으로 메시지를 보냅니다. 메시지 전송 대상에 따라 호출해야 할 메서드가 다릅니다.

사용자 정의 템플릿 ID를 template_id 파라미터로 전달해야 합니다. 메시지에 변동되는 정보를 포함하려면 해당 사용자 정의 템플릿에 사용자 인자를 추가한 후, template_args 파라미터를 통해 키와 값을 전달합니다. 사용자 정의 템플릿에 사용자 인자가 포함되었음에도 해당 파라미터를 사용하지 않을 경우, 사용자 인자로 지정된 부분이 ${KEY} 형식으로 메시지에 그대로 노출됩니다.

친구에게 메시지 보내기 요청 시, 피커 또는 친구 목록 가져오기 API의 응답으로 받은 uuidreceiver_uuids 파라미터에 전달해야 합니다. 한 번에 최대 5명의 친구에게 메시지를 보낼 수 있습니다.

url을 사용 메서드에 해당하는 값으로 지정해 Kakao.API.request() 함수를 호출합니다. Kakao.API.request()Promise를 반환합니다. 요청 성공 시 반환 내용은 REST API를 참고합니다.

나에게 보내기

Parameter
Name Type Description Required
url String /v2/api/talk/memo/send로 고정 O
data Object API에 전달할 파라미터 O
data: 사용자 정의 템플릿으로 나에게 메시지 보내기
Name Type Description Required
template_id Number 메시지 템플릿 도구에서 구성한 사용자 정의 템플릿의 ID O
template_args Object template_id로 지정한 템플릿에 사용자 인자(User argument)가 포함되어 있는 경우 대입할 값, key:value 형식으로 전달 X
Sample
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);
  });

친구에게 보내기

Parameter
Name Type Description Required
url String /v1/api/talk/friends/message/send로 고정 O
data Object API에 전달할 파라미터 O
data: 사용자 정의 템플릿으로 친구에게 메시지 보내기
Name Type Description Required
receiver_uuids String[] 친구 목록 가져오기 API를 통해 얻은 사용자 uuid 값, 최대 5개 O
template_id Number 메시지 템플릿 도구에서 구성한 사용자 정의 템플릿의 ID O
template_args Object template_id로 지정한 템플릿에 사용자 인자(User argument)가 포함되어 있는 경우 대입할 값, key:value 형식으로 전달 X
Sample
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);
  });

기본 템플릿으로 스크랩 메시지 보내기

기본 정보

사전 설정 카카오 로그인 사용자 동의 권한 레퍼런스
플랫폼 등록
카카오 로그인 활성화
동의 항목
필요 필요:
카카오톡 메시지 전송(talk_message)
필요:
사용 권한
(친구에게 보내기)
request()

지정한 웹 페이지를 스크랩한 정보로 스크랩 메시지를 구성하고, 현재 로그인한 사용자의 카카오톡으로 메시지를 보냅니다. 메시지 전송 대상에 따라 호출해야 할 메서드가 다릅니다.

스크랩할 웹 페이지 URL을 request_url 파라미터로 전달해야 합니다. 스크랩할 웹 페이지의 도메인은 [내 애플리케이션] > [플랫폼] > [Web]에 등록돼 있어야 합니다.

친구에게 메시지 보내기 요청 시, 피커 또는 친구 목록 가져오기 응답으로 받은 uuidreceiver_uuids 파라미터에 전달합니다. 한 번에 최대 5명의 친구에게 메시지를 보낼 수 있습니다.

url을 사용 메서드에 해당하는 값으로 지정해 Kakao.API.request() 함수를 호출합니다. Kakao.API.request()Promise를 반환합니다. 요청 성공 시 반환 내용은 REST API를 참고합니다.

나에게 보내기

Parameter
Name Type Description Required
url String /v2/api/talk/memo/scrap/send로 고정 O
data Object API에 전달할 파라미터 O
data: 기본 템플릿으로 나에게 스크랩 메시지 보내기
Name Type Description Required
request_url String 스크랩할 웹 페이지 URL, [내 애플리케이션] > [플랫폼] > [Web]에 등록된 도메인만 사용 가능 O
Sample
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);
  });

친구에게 보내기

Parameter
Name Type Description Required
url String /v1/api/talk/friends/message/scrap/send로 고정 O
data Object API에 전달할 파라미터 O
data: 기본 템플릿으로 친구에게 스크랩 메시지 보내기
Name Type Description Required
receiver_uuids String[] 친구 목록 가져오기 API를 통해 얻은 사용자 uuid 값, 최대 5개 O
request_url String 스크랩할 웹 페이지 URL, [내 애플리케이션] > [플랫폼] > [Web]에 등록된 도메인만 사용 가능 O
Sample
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);
  });

사용자 정의 템플릿으로 스크랩 메시지 보내기

기본 정보

사전 설정 카카오 로그인 사용자 동의 권한 레퍼런스
플랫폼 등록
카카오 로그인 활성화
동의 항목
메시지 템플릿
필요 필요:
카카오톡 메시지 전송(talk_message)
필요:
사용 권한
(친구에게 보내기)
request()

[도구] > [메시지 템플릿]에서 직접 구성한 사용자 정의 템플릿에 지정한 웹 페이지의 스크랩 정보를 대입해 스크랩 메시지를 구성하고, 현재 로그인한 사용자의 카카오톡으로 메시지를 보냅니다. 메시지 전송 대상에 따라 호출해야 할 메서드가 다릅니다.

스크랩할 웹 페이지 URL을 request_url 파라미터로 전달해야 합니다. 스크랩할 웹 페이지의 도메인은 [내 애플리케이션] > [플랫폼] > [Web]에 등록돼 있어야 합니다.

사용자 정의 템플릿 ID를 template_id 파라미터로 전달해야 합니다. 메시지에 변동되는 정보를 포함하려면 해당 사용자 정의 템플릿에 사용자 인자를 추가한 후, template_args 파라미터를 통해 키와 값을 전달합니다. 사용자 정의 템플릿에 사용자 인자가 포함되었음에도 해당 파라미터를 사용하지 않을 경우, 사용자 인자로 지정된 부분이 ${KEY} 형식으로 메시지에 그대로 노출됩니다.

친구에게 메시지 보내기 요청 시, 피커 또는 친구 목록 가져오기 API의 응답으로 받은 uuidreceiver_uuids 파라미터에 전달합니다. 한 번에 최대 5명의 친구에게 메시지를 보낼 수 있습니다.

url을 사용 메서드에 해당하는 값으로 지정해 Kakao.API.request() 함수를 호출합니다. Kakao.API.request()Promise를 반환합니다. 요청 성공 시 반환 내용은 REST API를 참고합니다.

나에게 보내기

Parameter
Name Type Description Required
url String /v2/api/talk/memo/scrap/send로 고정 O
data Object API에 전달할 파라미터 O
data: 사용자 정의 템플릿으로 나에게 스크랩 메시지 보내기
Name Type Description Required
request_url String 스크랩할 웹 페이지 URL, [내 애플리케이션] > [플랫폼] > [Web]에 등록된 도메인만 사용 가능 O
template_id Number 스크랩한 정보를 반영할 사용자 정의 템플릿의 ID O
template_args Object template_id로 지정한 템플릿에 사용자 인자(User argument)가 포함되어 있는 경우 대입할 값, key:value 형식으로 전달
스크랩 결과를 덮어쓰기(overwrite) 할 수는 없음
X
Sample
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);
  });

친구에게 보내기

Parameter
Name Type Description Required
url String /v1/api/talk/friends/message/scrap/send로 고정 O
data Object API에 전달할 파라미터 O
data: 사용자 정의 템플릿으로 친구에게 스크랩 메시지 보내기
Name Type Description Required
receiver_uuids String[] 친구 목록 가져오기 API를 통해 얻은 사용자 uuid 값, 최대 5개 O
request_url String 스크랩할 웹 페이지 URL, [내 애플리케이션] > [플랫폼] > [Web]에 등록된 도메인만 사용 가능 O
template_id Number 스크랩한 정보를 반영할 사용자 정의 템플릿의 ID O
template_args Object template_id로 지정한 템플릿에 사용자 인자(User argument)가 포함되어 있는 경우 대입할 값, key:value 형식으로 전달
스크랩 결과를 덮어쓰기(overwrite) 할 수는 없음
X
Sample
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);
  });

이미지 업로드하기

기본 정보

사전 설정 레퍼런스
플랫폼 등록 uploadImage()
scrapImage()
deleteImage()

메시지에 넣을 이미지는 URL 형태로 메시지 템플릿 구성 시에 첨부하거나, 메시지 템플릿 도구에서 미리 업로드할 수 있습니다. 자세한 정보는 이미지 업로드하기에서 확인할 수 있습니다.

카카오톡 공유 모듈명 변경

JavaScript SDK 1.43.0 버전부터 카카오톡 공유 모듈명이 변경되었습니다. 자세한 안내는 공지사항을 참고합니다.

Legacy

카카오톡 메시지의 Legacy Kakao SDK for JavaScript(이하 Legacy JavaScript SDK) 개발 가이드는 다음 링크에서 확인할 수 있습니다. 추후 Legacy JavaScript SDK에 대한 지원이 중단될 수 있으므로, 가급적 빠른 시일 내에 최신 버전 JavaScript SDK로 변경할 것을 권장합니다.

더보기