This document shows you how to create messages with predefined default templates for the Kakao Talk Message API or Kakao Talk Share API.
Default templates are template formats that compose messages as objects according to defined formats. For characteristics of default templates, refer to Understanding.
To use the Feed template, you must compose the object as follows.
Name | Type | Description | Required |
---|---|---|---|
object_type | String |
Fixed as feed . |
O |
content | Content |
Main content information of the message. | O |
item_content | ItemContent |
Content to include in the item area. Used when composing as Feed Type B. |
X |
social | Social |
Social information about the content. | X |
button_title | String |
Set when you want to change the default button title ("View details"). | X |
buttons | Buttons[] |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of template_object composition for Feed template message
{
"object_type": "feed",
"content": {
"title": "Today's Dessert",
"description": "Americano, Bread, Cake",
"image_url": "https://mud-kage.kakao.com/dn/NTmhS/btqfEUdFAUf/FjKzkZsnoeE4o19klTOVI1/openlink_640x640s.jpg",
"image_width": 640,
"image_height": 640,
"link": {
"web_url": "http://www.daum.net",
"mobile_web_url": "http://m.daum.net",
"android_execution_params": "contentId=100",
"ios_execution_params": "contentId=100"
}
},
"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,
"shared_count": 300,
"view_count": 400,
"subscriber_count": 500
},
"buttons": [
{
"title": "Go to Web",
"link": {
"web_url": "http://www.daum.net",
"mobile_web_url": "http://m.daum.net"
}
},
{
"title": "Go to App",
"link": {
"android_execution_params": "contentId=100",
"ios_execution_params": "contentId=100"
}
}
]
}'
Name | Type | Description | Required |
---|---|---|---|
objectType | String |
Fixed as feed . |
O |
content | ContentObject |
Main content information of the message. | O |
itemContent | ItemContentObject |
Content to include in the item area. Used when composing as Feed Type B. |
X |
social | SocialObject |
Social information about the content. | X |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | Array.<ButtonObject> |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of template_object composition for Feed template message
{
objectType: 'feed',
content: {
title: 'Today\'s Dessert',
description: 'Americano, Bread, Cake',
imageUrl:
'https://mud-kage.kakao.com/dn/NTmhS/btqfEUdFAUf/FjKzkZsnoeE4o19klTOVI1/openlink_640x640s.jpg',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
itemContent: {
profileText: 'Kakao',
profileImageUrl: 'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png',
titleImageUrl: 'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png',
titleImageText: 'Cheese cake',
titleImageCategory: 'Cake',
items: [
{
item: 'Cake1',
itemOp: '1000원',
},
{
item: 'Cake2',
itemOp: '2000원',
},
{
item: 'Cake3',
itemOp: '3000원',
},
{
item: 'Cake4',
itemOp: '4000원',
},
{
item: 'Cake5',
itemOp: '5000원',
},
],
sum: 'Total Payment',
sumOp: '15000원',
},
social: {
likeCount: 10,
commentCount: 20,
sharedCount: 30,
},
buttons: [
{
title: 'Go to Web',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
{
title: 'Go to App',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
],
}
Name | Type | Description | Required |
---|---|---|---|
content | Content |
Main content information of the message. | O |
itemContent | ItemContent |
Content to include in the item area. Used when composing as Feed Type B. |
X |
social | Social |
Social information about the content. | X |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | List<Button> |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of FeedTemplate class composition for Feed template message
val defaultFeed = FeedTemplate(
content = Content(
title = "Today's Dessert",
description = "#cake #strawberry #sampyeongdong #cafe #atmosphere #blinddate",
imageUrl = "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
link = Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
),
itemContent = ItemContent(
profileText = "Kakao",
profileImageUrl = "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
titleImageUrl = "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
titleImageText = "Cheese cake",
titleImageCategory = "Cake",
items = listOf(
ItemInfo(item = "cake1", itemOp = "1000원"),
ItemInfo(item = "cake2", itemOp = "2000원"),
ItemInfo(item = "cake3", itemOp = "3000원"),
ItemInfo(item = "cake4", itemOp = "4000원"),
ItemInfo(item = "cake5", itemOp = "5000원")
),
sum = "Total",
sumOp = "15000원"
),
social = Social(
likeCount = 286,
commentCount = 45,
sharedCount = 845
),
buttons = listOf(
Button(
"View on Web",
Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
),
Button(
"View on App",
Link(
androidExecutionParams = mapOf("key1" to "value1", "key2" to "value2"),
iosExecutionParams = mapOf("key1" to "value1", "key2" to "value2")
)
)
)
)
Name | Type | Description | Required |
---|---|---|---|
content | Content |
Main content information of the message. | O |
itemContent | ItemContent |
Content to include in the item area. Used when composing as Feed Type B. |
X |
social | Social |
Social information about the content. | X |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | [Button] |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of FeedTemplate class composition for Feed template message
let title = "Feed Message"
let description = "Feed message example"
let feedTemplateJsonStringData =
"""
{
"object_type": "feed",
"content": {
"title": "Today's Dessert",
"description": "#cake #strawberry #sampyeongdong #cafe #atmosphere #blinddate",
"image_url": "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
"link": {
"mobile_web_url": "https://developers.kakao.com",
"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": {
"comment_count": 45,
"like_count": 286,
"shared_count": 845
},
"buttons": [
{
"title": "View on Web",
"link": {
"mobile_web_url": "https://developers.kakao.com",
"web_url": "https://developers.kakao.com"
}
},
{
"title": "View on App",
"link": {
"android_execution_params": "key1=value1&key2=value2",
"ios_execution_params": "key1=value1&key2=value2"
}
}
]
}
""".data(using: .utf8)!
Name | Type | Description | Required |
---|---|---|---|
content | Content |
Main content information of the message. | O |
itemContent | ItemContent |
Content to include in the item area. Used when composing as Feed Type B. |
X |
social | Social |
Social information about the content. | X |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | List<Button> |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of FeedTemplate class composition for Feed template message
final FeedTemplate defaultFeed = FeedTemplate(
content: Content(
title: 'Strawberry Cheese Cake',
description: '#cake #strawberry #sampyeongdong #cafe #atmosphere #blinddate',
imageUrl: Uri.parse(
'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png'),
link: Link(
webUrl: Uri.parse('https://developers.kakao.com'),
mobileWebUrl: Uri.parse('https://developers.kakao.com')),
),
itemContent: ItemContent(
profileText: 'Kakao',
profileImageUrl: Uri.parse(
'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png'),
titleImageUrl: Uri.parse(
'https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png'),
titleImageText: 'Cheese cake',
titleImageCategory: 'cake',
items: [
ItemInfo(item: 'cake1', itemOp: '1000원'),
ItemInfo(item: 'cake2', itemOp: '2000원'),
ItemInfo(item: 'cake3', itemOp: '3000원'),
ItemInfo(item: 'cake4', itemOp: '4000원'),
ItemInfo(item: 'cake5', itemOp: '5000원')
],
sum: 'total',
sumOp: '15000원',
),
social: Social(likeCount: 286, commentCount: 45, sharedCount: 845),
buttons: [
Button(
title: 'View on Web',
link: Link(
webUrl: Uri.parse('https: //developers.kakao.com'),
mobileWebUrl: Uri.parse('https: //developers.kakao.com'),
),
),
Button(
title: 'View on App',
link: Link(
androidExecutionParams: {'key1': 'value1', 'key2': 'value2'},
iosExecutionParams: {'key1': 'value1', 'key2': 'value2'},
),
),
],
);
To use the List template, you must compose the object as follows.
Name | Type | Description | Required |
---|---|---|---|
object_type | String |
Fixed as list . |
O |
header_title | String |
Main title displayed at the top of the list, maximum 200 characters. | O |
header_link | Link |
Link information corresponding to the header title content. | O |
contents | Content[] |
Content list displayed in the list, minimum 2 required, maximum 3. | O |
button_title | String |
Set when you want to change the default button title ("View details"). | X |
buttons | Buttons[] |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of template_object composition for List template message
{
"object_type": "list",
"header_title": "WEEKLY MAGAZINE",
"header_link": {
"web_url": "http://www.daum.net",
"mobile_web_url": "http://m.daum.net",
"android_execution_params": "main",
"ios_execution_params": "main"
},
"contents": [
{
"title": "Space for Bicycle Riders",
"description": "Magazine",
"image_url": "https://mud-kage.kakao.com/dn/QNvGY/btqfD0SKT9m/k4KUlb1m0dKPHxGV8WbIK1/openlink_640x640s.jpg",
"image_width": 640,
"image_height": 640,
"link": {
"web_url": "http://www.daum.net/contents/1",
"mobile_web_url": "http://m.daum.net/contents/1",
"android_execution_params": "/contents/1",
"ios_execution_params": "/contents/1"
}
},
{
"title": "Oreo Cappuccino with Amazing Visual",
"description": "Magazine",
"image_url": "https://mud-kage.kakao.com/dn/boVWEm/btqfFGlOpJB/mKsq9z6U2Xpms3NztZgiD1/openlink_640x640s.jpg",
"image_width": 640,
"image_height": 640,
"link": {
"web_url": "http://www.daum.net/contents/2",
"mobile_web_url": "http://m.daum.net/contents/2",
"android_execution_params": "/contents/2",
"ios_execution_params": "/contents/2"
}
},
{
"title": "Atmosphere Full of Sensibility",
"description": "Magazine",
"image_url": "https://mud-kage.kakao.com/dn/NTmhS/btqfEUdFAUf/FjKzkZsnoeE4o19klTOVI1/openlink_640x640s.jpg",
"image_width": 640,
"image_height": 640,
"link": {
"web_url": "http://www.daum.net/contents/3",
"mobile_web_url": "http://m.daum.net/contents/3",
"android_execution_params": "/contents/3",
"ios_execution_params": "/contents/3"
}
}
],
"buttons": [
{
"title": "Go to Web",
"link": {
"web_url": "http://www.daum.net",
"mobile_web_url": "http://m.daum.net"
}
},
{
"title": "Go to App",
"link": {
"android_execution_params": "main",
"ios_execution_params": "main"
}
}
]
}'
Name | Type | Description | Required |
---|---|---|---|
objectType | String |
Fixed as list |
O |
headerTitle | String |
Main title displayed at the top of the list, maximum 200 characters | O |
headerLink | LinkObject |
Link information corresponding to the header title content | O |
contents | Array.<ContentObject> |
Content list displayed in the list, minimum 2 required, maximum 3 | O |
buttonTitle | String |
Set when you want to change the default button title ("View details") | X |
buttons | Array.<ButtonObject> |
Button list, maximum 2 Used when you want to change button title and link, or when you want to add two buttons |
X |
// Example of template_object composition for List template message
{
objectType: 'list',
headerTitle: 'WEEKLY MAGAZINE',
headerLink: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
contents: [
{
title: 'My hobby, Table tennis',
description: 'Sports',
imageUrl:
'http://k.kakaocdn.net/dn/bDPMIb/btqgeoTRQvd/49BuF1gNo6UXkdbKecx600/kakaolink40_original.png',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
{
title: 'Understanding coffee with cream',
description: 'Food',
imageUrl:
'http://k.kakaocdn.net/dn/QPeNt/btqgeSfSsCR/0QJIRuWTtkg4cYc57n8H80/kakaolink40_original.png',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
{
title: 'Emotional atmosphere',
description: 'Photo',
imageUrl:
'http://k.kakaocdn.net/dn/c7MBX4/btqgeRgWhBy/ZMLnndJFAqyUAnqu4sQHS0/kakaolink40_original.png',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
],
buttons: [
{
title: 'View on Web',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
{
title: 'View on App',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
],
}
When using JavaScript SDK, message composition field values differ between Kakao Talk Share API and Kakao Talk Message API, so refer to the examples below to implement in the appropriate format for each.
* When calling Kakao Talk Message API with Kakao SDK for JavaScript, snake case is applied to field names identical to REST API
Name | Type | Description | Required |
---|---|---|---|
headerTitle | String |
Main title displayed at the top of the list, maximum 200 characters | O |
headerLink | Link |
Link information corresponding to the header title content | O |
contents | List<Content> |
Content list displayed in the list, minimum 2 required, maximum 3 | O |
buttonTitle | String |
Set when you want to change the default button title ("View details") | X |
buttons | List<Button> |
Button list, maximum 2 Used when you want to change button title and link, or when you want to add two buttons |
X |
// Example of ListTemplate class composition for List template message
val defaultList = ListTemplate(
headerTitle = "WEEKLY MAGAZINE",
headerLink = Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
),
contents = listOf(
Content(
title = "My hobby, Table tennis",
description = "Sports",
imageUrl = "https://mud-kage.kakao.com/dn/bDPMIb/btqgeoTRQvd/49BuF1gNo6UXkdbKecx600/kakaolink40_original.png",
link = Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
),
Content(
title = "Understanding coffee with cream",
description = "Food",
imageUrl = "https://mud-kage.kakao.com/dn/QPeNt/btqgeSfSsCR/0QJIRuWTtkg4cYc57n8H80/kakaolink40_original.png",
link = Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
),
Content(
title = "Emotional atmosphere",
description = "Photo",
imageUrl = "https://mud-kage.kakao.com/dn/c7MBX4/btqgeRgWhBy/ZMLnndJFAqyUAnqu4sQHS0/kakaolink40_original.png",
link = Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
)
),
buttons = listOf(
Button(
"View on Web",
Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
),
Button(
"View on App",
Link(
androidExecutionParams = mapOf("key1" to "value1", "key2" to "value2"),
iosExecutionParams = mapOf("key1" to "value1", "key2" to "value2")
)
)
)
)
Name | Type | Description | Required |
---|---|---|---|
headerTitle | String |
Main title displayed at the top of the list, maximum 200 characters | O |
headerLink | Link |
Link information corresponding to the header title content | O |
contents | [Content] |
Content list displayed in the list, minimum 2 required, maximum 3 | O |
buttonTitle | String |
Set when you want to change the default button title ("View details") | X |
buttons | [Button] |
Button list, maximum 2 Used when you want to change button title and link, or when you want to add two buttons |
X |
// Example of ListTemplate class composition for List template message
let headerTitle = "List message example"
let listTemplateJsonStringData =
"""
{
"object_type": "list",
"header_title": "WEEKLY MAGAZINE",
"header_link": {
"mobile_web_url": "https://developers.kakao.com",
"web_url": "https://developers.kakao.com"
},
"contents": [
{
"title": "My hobby, Table tennis",
"description": "Sports",
"image_url": "https://mud-kage.kakao.com/dn/bDPMIb/btqgeoTRQvd/49BuF1gNo6UXkdbKecx600/kakaolink40_original.png",
"link": {
"mobile_web_url": "https://developers.kakao.com",
"web_url": "https://developers.kakao.com"
}
},
{
"title": "Understanding coffee with cream",
"description": "Food",
"image_url": "https://mud-kage.kakao.com/dn/QPeNt/btqgeSfSsCR/0QJIRuWTtkg4cYc57n8H80/kakaolink40_original.png",
"link": {
"mobile_web_url": "https://developers.kakao.com",
"web_url": "https://developers.kakao.com"
}
},
{
"title": "Emotional atmosphere",
"description": "Photo",
"image_url": "https://mud-kage.kakao.com/dn/c7MBX4/btqgeRgWhBy/ZMLnndJFAqyUAnqu4sQHS0/kakaolink40_original.png",
"link": {
"mobile_web_url": "https://developers.kakao.com",
"web_url": "https://developers.kakao.com"
}
}
],
"buttons": [
{
"title": "웹으로 보기",
"link": {
"mobile_web_url": "https://developers.kakao.com",
"web_url": "https://developers.kakao.com"
}
},
{
"title": "앱으로 보기",
"link": {
"android_execution_params": "key1=value1&key2=value2",
"ios_execution_params": "key1=value1&key2=value2"
}
}
]
}
""".data(using: .utf8)!
Name | Type | Description | Required |
---|---|---|---|
headerTitle | String |
Main title displayed at the top of the list, maximum 200 characters. | O |
headerLink | Link |
Link information corresponding to the header title content. | O |
contents | List<Content> |
Content list displayed in the list, minimum 2 required, maximum 3. | X |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | List<Button> |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of ListTemplate class composition for List template message
final ListTemplate defaultList = ListTemplate(
headerTitle: 'WEEKLY MAGAZINE',
headerLink: Link(
webUrl: Uri.parse('https://developers.kakao.com'),
mobileWebUrl: Uri.parse('https://developers.kakao.com'),
),
contents: [
Content(
title: 'My hobby, Table tennis',
description: 'Sports',
imageUrl: Uri.parse(
'https://mud-kage.kakao.com/dn/bDPMIb/btqgeoTRQvd/49BuF1gNo6UXkdbKecx600/kakaolink40_original.png'),
link: Link(
webUrl: Uri.parse('https://developers.kakao.com'),
mobileWebUrl: Uri.parse('https://developers.kakao.com'),
),
),
Content(
title: 'Understanding coffee with cream',
description: 'Food',
imageUrl: Uri.parse(
'https://mud-kage.kakao.com/dn/QPeNt/btqgeSfSsCR/0QJIRuWTtkg4cYc57n8H80/kakaolink40_original.png'),
link: Link(
webUrl: Uri.parse('https://developers.kakao.com'),
mobileWebUrl: Uri.parse('https://developers.kakao.com'),
),
),
Content(
title: 'Emotional atmosphere',
description: 'Photo',
imageUrl: Uri.parse(
'https://mud-kage.kakao.com/dn/c7MBX4/btqgeRgWhBy/ZMLnndJFAqyUAnqu4sQHS0/kakaolink40_original.png'),
link: Link(
webUrl: Uri.parse('https://developers.kakao.com'),
mobileWebUrl: Uri.parse('https://developers.kakao.com'),
),
),
],
buttons: [
Button(
title: 'View on Web',
link: Link(
webUrl: Uri.parse('https://developers.kakao.com'),
mobileWebUrl: Uri.parse('https://developers.kakao.com'),
),
),
Button(
title: 'View on App',
link: Link(
androidExecutionParams: {'key1': 'value1', 'key2': 'value2'},
iosExecutionParams: {'key1': 'value1', 'key2': 'value2'},
),
),
],
);
* header_image_url, header_image_width, header_image_height: Deprecated. For header background image, see Notice.
To use the Commerce template, you must compose the object as follows.
Name | Type | Description | Required |
---|---|---|---|
object_type | String |
Fixed as commerce . |
O |
content | Content |
Content information of the message. | O |
commerce | Commerce |
Product name and price information. | O |
button_title | String |
Set when you want to change the default button title ("View details"). | X |
buttons | Buttons[] |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of template_object composition for Commerce template message
{
"object_type": "commerce",
"content": {
"title": "Ivory long dress (4 Color)",
"image_url": "https://mud-kage.kakao.com/dn/RY8ZN/btqgOGzITp3/uCM1x2xu7GNfr7NS9QvEs0/kakaolink40_original.png",
"image_width": 640,
"image_height": 640,
"link": {
"web_url": "https://style.kakao.com/main/women/contentId=100",
"mobile_web_url": "https://style.kakao.com/main/women/contentId=100",
"android_execution_params": "contentId=100",
"ios_execution_params": "contentId=100"
}
},
"commerce": {
"regular_price": 208800,
"discount_price": 146160,
"discount_rate": 30
},
"buttons": [
{
"title": "Buy now",
"link": {
"web_url": "https://style.kakao.com/main/women/contentId=100/buy",
"mobile_web_url": "https://style.kakao.com/main/women/contentId=100/buy",
"android_execution_params": "contentId=100&buy=true",
"ios_execution_params": "contentId=100&buy=true"
}
},
{
"title": "Share",
"link": {
"web_url": "https://style.kakao.com/main/women/contentId=100/share",
"mobile_web_url": "https://style.kakao.com/main/women/contentId=100/share",
"android_execution_params": "contentId=100&share=true",
"ios_execution_params": "contentId=100&share=true"
}
}
]
}
Name | Type | Description | Required |
---|---|---|---|
objectType | String |
Fixed as commerce . |
O |
content | ContentObject |
Content information of the message. | O |
commerce | CommerceObject |
Product name and price information. | O |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | Array.<ButtonObject> |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of template_object composition for Commerce template message
{
objectType: 'commerce',
content: {
title: 'Anytime, anywhere, make your daily life easier and more enjoyable. Let me tell you the story of Hey Ryan.',
imageUrl:
'http://k.kakaocdn.net/dn/dScJiJ/btqB3cwK1Hi/pv5qHVwetz5RZfPZR3C5K1/kakaolink40_original.png',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
commerce: {
productName: 'Kakao Mini',
regularPrice: 100000,
discountRate: 10,
discountPrice: 90000,
},
buttons: [
{
title: 'Buy now',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
{
title: 'Share',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
],
}
Name | Type | Description | Required |
---|---|---|---|
content | Content |
Content information of the message | O |
commerce | Commerce |
Product name and price information | O |
buttonTitle | String |
Set when you want to change the default button title ("View details") | X |
buttons | List<Button> |
Button list, up to 2 Use when you want to change the button title and link, or add two buttons |
X |
// Example of CommerceTemplate composition for Commerce template message
val defaultCommerce = CommerceTemplate(
content = Content(
title = "Ivory long dress (4 Color)",
imageUrl = "https://mud-kage.kakao.com/dn/RY8ZN/btqgOGzITp3/uCM1x2xu7GNfr7NS9QvEs0/kakaolink40_original.png",
link = Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
),
commerce = Commerce(
regularPrice = 208800,
discountPrice = 146160,
discountRate = 30,
productName = "Ivory long dress"
),
buttons = listOf(
Button(
"Purchase",
Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
),
Button(
"Share",
Link(
androidExecutionParams = mapOf("key1" to "value1", "key2" to "value2"),
iosExecutionParams = mapOf("key1" to "value1", "key2" to "value2")
)
)
)
)
Name | Type | Description | Required |
---|---|---|---|
content | Content |
Content information of the message. | O |
commerce | CommerceDetail |
Product name and price information. | O |
buttonTitle | String |
Set when you want to change the default button title ("See more"). | X |
buttons | [Button] |
Button list, up to 2. Use when you want to change the button title and link, or add two buttons. |
X |
// Example of CommerceTemplate composition for Commerce template message
let title = "Commerce Message"
let description = "Commerce message example"
let commerceTemplateJsonStringData =
"""
{
"object_type": "commerce",
"commerce": {
"product_name": "Ivory long dress",
"regular_price": 208800,
"discount_price": 146160,
"discount_rate": 30
},
"content": {
"title": "Ivory long dress (4 Color)",
"image_url": "https://mud-kage.kakao.com/dn/RY8ZN/btqgOGzITp3/uCM1x2xu7GNfr7NS9QvEs0/kakaolink40_original.png",
"link": {
"mobile_web_url": "https://developers.kakao.com",
"web_url": "https://developers.kakao.com"
},
},
"buttons": [
{
"title": "Purchase",
"link": {
"mobile_web_url": "https://developers.kakao.com",
"web_url": "https://developers.kakao.com"
}
},
{
"title": "Share",
"link": {
"android_execution_params": "key1=value1&key2=value2",
"ios_execution_params": "key1=value1&key2=value2"
}
}
]
}
""".data(using: .utf8)!
Name | Type | Description | Required |
---|---|---|---|
content | Content |
Content information of the message. | O |
commerce | Commerce |
Product name and price information. | O |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | List<Button> |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of CommerceTemplate composition for Commerce template message
final CommerceTemplate defaultCommerce = CommerceTemplate(
content: Content(
title: 'Ivory long dress (4 Color)',
imageUrl: Uri.parse(
'https://mud-kage.kakao.com/dn/RY8ZN/btqgOGzITp3/uCM1x2xu7GNfr7NS9QvEs0/kakaolink40_original.png'),
link: Link(
webUrl: Uri.parse('https://developers.kakao.com'),
mobileWebUrl: Uri.parse('https://developers.kakao.com'),
),
),
commerce: Commerce(
regularPrice: 208800,
discountPrice: 146160,
discountRate: 30,
productName: "Ivory long dress",
currencyUnit: "₩",
currencyUnitPosition: 1,
),
buttons: [
Button(
title: 'Purchase',
link: Link(
webUrl: Uri.parse('https://developers.kakao.com'),
mobileWebUrl: Uri.parse('https://developers.kakao.com'),
),
),
Button(
title: 'Share',
link: Link(
androidExecutionParams: {'key1': 'value1', 'key2': 'value2'},
iosExecutionParams: {'key1': 'value1', 'key2': 'value2'},
),
)
],
);
To use the Location template, you must compose the object as follows.
Name | Type | Description | Required |
---|---|---|---|
object_type | String |
Fixed as location . |
O |
address | String |
Address of the location to share. (Example: 235, Pangyoyeok-ro, Bundang-gu, Seongnam-si, Gyeonggi-do.) |
O |
address_title | String |
Title used in the map view in KakaoTalk. (Example: Kakao Pangyo Office.) |
X |
content | Content |
Content information describing the location. | O |
social | Social |
Additional social information. | X |
button_title | String |
Set when you want to change the default button title ("View details"). | X |
buttons | Buttons[] |
Button list, up to 2. Used when you want to change the button title and link, or add two buttons. |
X |
// Example of template_object composition for Location template message
{
"object_type": "location",
"content": {
"title": "Kakao Pangyo Office",
"description": "Location of Kakao Pangyo Office.",
"image_url": "https://mud-kage.kakao.com/dn/drTdbB/bWYf06POFPf/owUHIt7K7NoGD0hrzFLeW0/kakaolink40_original.png",
"image_width": 800,
"image_height": 800,
"link": {
"web_url": "https://developers.kakao.com",
"mobile_web_url": "https://developers.kakao.com/mobile",
"android_execution_params": "platform=android",
"ios_execution_params": "platform=ios"
}
},
"buttons": [
{
"title": "View on Web",
"link": {
"web_url": "https://developers.kakao.com",
"mobile_web_url": "https://developers.kakao.com/mobile"
}
}
],
"address": "235 Pangyo Station-ro, Bundang-gu, Seongnam-si, Gyeonggi-do, H Square N Building 7th Floor",
"address_title": "Kakao Pangyo Office"
}
Name | Type | Description | Required |
---|---|---|---|
objectType | String |
Fixed as location . |
O |
address | String |
Address of the location to share. (Example: 235, Pangyoyeok-ro, Bundang-gu, Seongnam-si, Gyeonggi-do.) |
O |
addressTitle | String |
Title used in the map view in KakaoTalk. (Example: Kakao Pangyo Office.) |
X |
content | ContentObject |
Content information describing the location. | O |
social | SocialObject |
Additional social information. | X |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | Array.<ButtonObject> |
Button list, up to 2. Used when you want to change the button title and link, or add two buttons. |
X |
// Example of template_object composition for Location template message
{
objectType: 'location',
address: '166 Pangyo Station-ro, Bundang-gu, Seongnam-si, Gyeonggi-do, 3rd Floor',
addressTitle: 'Kakao Pangyo Office Chat',
content: {
title: 'New menu release♥︎ Cherry Blossom Latte',
description: 'This week is Cherry Blossom Latte 1+1',
imageUrl:
'http://k.kakaocdn.net/dn/bSbH9w/btqgegaEDfW/vD9KKV0hEintg6bZT4v4WK/kakaolink40_original.png',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
social: {
likeCount: 286,
commentCount: 45,
sharedCount: 845,
},
buttons: [
{
title: 'View on Web',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
},
],
}
Name | Type | Description | Required |
---|---|---|---|
address | String |
Address of the location to share. (Example: Gyeonggi Seongnam Bundang-gu Pangyo Station-ro 235) |
O |
addressTitle | String |
Title used in the map view within Kakao Talk. (Example: Kakao Pangyo Office) |
X |
content | Content |
Content information describing the location. | O |
social | Social |
Additional social information. | X |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | List<Button> |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of LocationTemplate class composition for Location template message
val defaultLocation = LocationTemplate(
address = "Gyeonggi Seongnam Bundang-gu Pangyo Station-ro 235 H Square N Building 8th Floor",
addressTitle = "Kakao Pangyo Office Chat",
content = Content(
title = "New menu release❤️ Cherry Blossom Latte",
description = "This week is Cherry Blossom Latte 1+1",
imageUrl = "https://mud-kage.kakao.com/dn/bSbH9w/btqgegaEDfW/vD9KKV0hEintg6bZT4v4WK/kakaolink40_original.png",
link = Link(
webUrl = "https://developers.com",
mobileWebUrl = "https://developers.kakao.com"
)
),
social = Social(
likeCount = 286,
commentCount = 45,
sharedCount = 845
)
)
Name | Type | Description | Required |
---|---|---|---|
address | String |
Address of the location to share. (Example: Gyeonggi Seongnam Bundang-gu Pangyo Station-ro 235) |
O |
addressTitle | String |
Title used in the map view within Kakao Talk. (Example: Kakao Pangyo Office) |
X |
content | Content |
Content information describing the location. | O |
social | Social |
Additional social information. | X |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | [Button] |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of LocationTemplate class composition for Location template message
let title = "Location Message"
let description = "Location message example"
let locationTemplateJsonStringData =
"""
{
"object_type": "location",
"address_title": "Kakao Pangyo Office Chat",
"address": "Gyeonggi Seongnam Bundang-gu Pangyo Station-ro 235 H Square N Building 8th Floor",
"content": {
"description": "This week is Cherry Blossom Latte 1+1",
"image_url": "https://mud-kage.kakao.com/dn/bSbH9w/btqgegaEDfW/vD9KKV0hEintg6bZT4v4WK/kakaolink40_original.png",
"link": {
"mobile_web_url": "https://developers.kakao.com",
"web_url": "https://developers.com"
},
"title": "New menu release❤️ Cherry Blossom Latte"
},
"social": {
"comment_count": 45,
"like_count": 286,
"shared_count": 845
}
}
""".data(using: .utf8)!
Name | Type | Description | Required |
---|---|---|---|
address | String |
Address to share (e.g., 235, Pangyo Station-ro, Bundang-gu, Seongnam-si, Gyeonggi-do) |
O |
addressTitle | String |
Title used in the map view within KakaoTalk (e.g., Kakao Pangyo Office) |
X |
content | Content |
Content information describing the location | O |
social | Social |
Additional social information | X |
buttonTitle | String |
Set when you want to change the default button title ("View Details") | X |
buttons | List<Button> |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of LocationTemplate class composition for Location template message
final LocationTemplate defaultLocation = LocationTemplate(
address: 'Gyeonggi Seongnam Bundang-gu Pangyo Station-ro 235 H Square N Building 8th Floor',
content: Content(
title: 'New menu release❤️ Cherry Blossom Latte',
description: 'This week is Cherry Blossom Latte 1+1',
imageUrl: Uri.parse(
'https://mud-kage.kakao.com/dn/bSbH9w/btqgegaEDfW/vD9KKV0hEintg6bZT4v4WK/kakaolink40_original.png'),
link: Link(
webUrl: Uri.parse('https://developers.kakao.com'),
mobileWebUrl: Uri.parse('https://developers.kakao.com'),
),
),
social: Social(likeCount: 286, commentCount: 45, sharedCount: 845),
);
To use the Text template, you must compose the object as follows.
Name | Type | Description | Required |
---|---|---|---|
object_type | String |
Fixed as text . |
O |
text | String |
Text information, maximum 200 characters. | O |
link | Link |
Link information to move when content is clicked. | O |
button_title | String |
Set when you want to change the default button title ("View details"). | X |
buttons | Buttons[] |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of template_object composition for Text template message
{
"object_type": "text",
"text": "This is the text area. You can display up to 200 characters.",
"link": {
"web_url": "https://developers.kakao.com",
"mobile_web_url": "https://developers.kakao.com"
},
"button_title": "Check now"
}
Name | Type | Description | Required |
---|---|---|---|
objectType | String |
Fixed as text . |
O |
text | String |
Text information, maximum 200 characters. | O |
link | LinkObject |
Link information to move when content is clicked. | O |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | Array.<ButtonObject> |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of template_object composition for Text template message
{
objectType: 'text',
text:
'The text template provided as a default template can display text up to 200 characters. The text template has a text area and one default button. You can also set arbitrary buttons. For more extended forms of Kakao Talk sharing such as multiple images and profile information, you can use other templates.',
link: {
mobileWebUrl: 'https://developers.kakao.com',
webUrl: 'https://developers.kakao.com',
},
}
Name | Type | Description | Required |
---|---|---|---|
text | String |
Text information, maximum 200 characters. | O |
link | Link |
Link information to move when content is clicked. | O |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | List<Button> |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of TextTemplate class composition for Text template message
val defaultText = TextTemplate(
text = """
Kakao Talk sharing executes Kakao Talk to
send messages to the chat room selected by the user.
""".trimIndent(),
link = Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com"
)
)
Name | Type | Description | Required |
---|---|---|---|
text | String |
Text information, maximum 200 characters. | O |
link | Link |
Link information to move when content is clicked. | O |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | [Button] |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of TextTemplate class composition for Text template message
let text = "Kakao Talk sharing is a representative feature of Kakao platform services that can execute various functions by linking with the Kakao platform installed on the user's mobile device.\\n\\nCurrently available Kakao Talk sharing is as follows:\\nKakao Talk Link\\nExecutes Kakao Talk to send messages to the chat room selected by the user."
let textTemplateJsonStringData =
"""
{
"object_type": "text",
"text": "\(text)",
"link": {
"web_url": "http://dev.kakao.com",
"mobile_web_url": "http://dev.kakao.com"
},
"button_title": "Check now"
}
""".data(using: .utf8)!
Name | Type | Description | Required |
---|---|---|---|
text | String |
Text information, maximum 200 characters. | O |
link | Link |
Link information to move when content is clicked. | O |
buttonTitle | String |
Set when you want to change the default button title ("View details"). | X |
buttons | List<Button> |
Button list, maximum 2. Used when you want to change button title and link, or when you want to add two buttons. |
X |
// Example of TextTemplate class composition for Text template message
final TextTemplate defaultText = TextTemplate(
text:
'Kakao Talk sharing is a representative feature of Kakao platform services that can execute various functions by linking with the Kakao platform installed on the user\'s mobile device.\nCurrently available Kakao Talk sharing is as follows:\nKakao Talk Link\nExecutes Kakao Talk to send messages to the chat room selected by the user.',
link: Link(
webUrl: Uri.parse('https: //developers.kakao.com'),
mobileWebUrl: Uri.parse('https: //developers.kakao.com'),
),
);
To use the Calendar template, you must compose the object as follows.
Name | Type | Description | Required |
---|---|---|---|
object_type | String |
Fixed as calendar . |
O |
id_type | String |
Type of id , one of event (public schedule) or calendar (subscription calendar).Important: Depending on id_type , the default button in 🅒 outputs the following specified text.Public event ID: [Schedule registration]. Subscription calendar ID: [Calendar subscription]. |
O |
id | String |
Public event or Subscribed calendar ID. | O |
content | Content |
Schedule title and description. | O |
buttons | Buttons[] |
User-defined button information, maximum 1 button information only. Calendar messages provide a default button for adding public schedules or subscribing to subscription calendars, and 1 user-defined button can be optionally added. |
X |
// Example of template_object composition for Calendar template message
{
"object_type": "calendar",
"content": {
"title": "Schedule title",
"description": "Schedule description",
"image_url": "https://developers.kakao.com/static/images/pc/txt_visual1.png",
"link": {
"web_url":"https://kakao.com"
}
},
"buttons": [
{
"title": "View schedule information",
"link": {
"web_url": "https://developers.kakao.com",
"mobile_web_url": "https://developers.kakao.com/mobile"
}
}
],
"id_type": "event",
"id": "6351f57c7ec8e318d0b809a0"
}
Name | Type | Description | Required |
---|---|---|---|
objectType | String |
Fixed as calendar . |
O |
idType | String |
Type of id , one of event (public schedule) or calendar (subscription calendar).Important: Depending on idType , the default button in 🅒 outputs the specified text below.Public event ID: [Register schedule]. Subscription calendar ID: [Subscribe to calendar]. |
O |
id | String |
Public event or Subscribed calendar ID. | O |
content | ContentObject |
Schedule title and description. | O |
buttons | Array.<ButtonObject> |
User-defined button information, only up to 1 button information is used. Calendar messages provide a default button for adding public schedules or subscribing to subscription calendars, and 1 user-defined button can be optionally added. |
X |
// Example of template_object composition for Calendar template message
{
objectType: 'calendar',
idType: 'event',
id: '${YOUR_EVENT_ID}',
content: {
title: 'January New Release Review Meeting',
description: 'You are invited to a monthly gathering to share your thoughts on the latest releases.',
imageUrl:
'http://k.kakaocdn.net/dn/dFUqwp/bl3SUTqb2VV/VFSqyPpKUzZVVMcmotN9A0/kakaolink40_original.png',
link: {
webUrl: 'https://developers.kakao.com',
mobileWebUrl: 'https://developers.kakao.com',
},
},
buttons: [
{
title: 'View Meeting Topic',
link: {
webUrl: 'https://developers.kakao.com',
mobileWebUrl: 'https://developers.kakao.com',
},
},
],
}
Name | Type | Description | Required |
---|---|---|---|
idType | String |
Type of id , either event (public event) or calendar (subscription calendar).Important: Depending on idType , the default button in 🅒 is displayed with the phrase below.Public event ID: [Register event] Subscription calendar ID: [Subscribe to calendar] |
O |
id | String |
Public event or Subscribed calendar ID | O |
content | Content |
Event title and description | O |
buttons | List<Button> |
Custom button information, only up to 1 button can be used. Calendar messages provide a default button for adding a public event or subscribing to a subscription calendar, and you can optionally add one custom button. |
X |
// Example of CalendarTemplate class composition for Calendar template message
val defaultCalendar = CalendarTemplate(
idType = IdType.EVENT,
id = "${YOUR_EVENT_ID}",
content = Content(
title = "January New Release Review Meeting",
description = "You are invited to a monthly gathering to share your thoughts on the latest releases.",
imageUrl = "http://k.kakaocdn.net/dn/dFUqwp/bl3SUTqb2VV/VFSqyPpKUzZVVMcmotN9A0/kakaolink40_original.png",
link = Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com",
)
),
buttons = listOf(
Button(
title = "View Meeting Topic",
link = Link(
webUrl = "https://developers.kakao.com",
mobileWebUrl = "https://developers.kakao.com",
),
)
)
)
Name | Type | Description | Required |
---|---|---|---|
idType | IdType |
Type of id , either event (public event) or calendar (subscription calendar).Important: Depending on idType , the default button in 🅒 is displayed with the phrase below.Public event ID: [Register event]. Subscription calendar ID: [Subscribe to calendar]. |
O |
id | String |
Public event or Subscribed calendar ID. | O |
content | Content |
Event title and description. | O |
buttons | [Button] |
Custom button information, only one button can be used. Calendar messages provide a default button for adding a public event or subscribing to a subscription calendar, and you can optionally add one custom button. |
X |
// Example of composing a CalendarTemplate class for a calendar template message
let calendarTemplateJsonStringData =
"""
{
"object_type": "calendar",
"id_type": "\(CalendarTemplate.IdType.Event.rawValue)",
"id": "${YOUR_EVENT_ID}",
"content": {
"link": {
"web_url": "https://devtalk.kakao.com",
"mobile_web_url": "https://developers.kakao.com"
},
"title": "January New Release Review Meeting",
"image_url": "http://k.kakaocdn.net/dn/dFUqwp/bl3SUTqb2VV/VFSqyPpKUzZVVMcmotN9A0/kakaolink40_original.png"
},
"buttons": [
{
"title": "View Meeting Topic",
"link": {
"mobile_web_url": "https://developers.kakao.com",
"web_url": "https://developers.kakao.com"
}
}
]
}
""".data(using: .utf8)!
Name | Type | Description | Required |
---|---|---|---|
idType | String |
Type of id , either event (public event) or calendar (subscription calendar).Important: Depending on idType , the default button in 🅒 is displayed with the phrase below.Public event ID: [Register event] Subscription calendar ID: [Subscribe to calendar] |
O |
id | String |
Public event or Subscribed calendar ID | O |
content | Content |
Event title and description | O |
buttons | List<Button> |
Custom button information, only one button can be used. Calendar messages provide a default button for adding a public event or subscribing to a subscription calendar, and you can optionally add one custom button. |
X |
// Example of composing a CalendarTemplate class for a calendar template message
final CalendarTemplate defaultCalendar = CalendarTemplate(
idType: IdType.event,
id: '${YOUR_EVENT_ID}',
content: Content(
title: 'January New Release Review Meeting',
description: 'You are invited to a monthly meeting to share your thoughts on the latest releases.',
imageUrl: Uri.parse(
'http://k.kakaocdn.net/dn/dFUqwp/bl3SUTqb2VV/VFSqyPpKUzZVVMcmotN9A0/kakaolink40_original.png'),
link: Link(
webUrl: Uri.parse('https://developers.kakao.com'),
mobileWebUrl: Uri.parse('https://developers.kakao.com'),
),
),
buttons: [
Button(
title: 'View Meeting Topic',
link: Link(
webUrl: Uri.parse('https://developers.kakao.com'),
mobileWebUrl: Uri.parse('https://developers.kakao.com'),
),
)
],
);
This section describes the common components that make up message templates.
This object contains the basic content information of the message, such as message title, body, and image information.
For images, they must be passed as URLs and must comply with RFC2396, RFC1034, and RFC1123. Image URLs that do not comply with the specifications will not display images.
Name | Type | Description | Required |
---|---|---|---|
title | String |
Title of the content | O* |
image_url | String |
Image URL of the content | O* |
image_width | Int |
Width of the content image in pixels | X |
image_height | Int |
Height of the content image in pixels | X |
description | String |
Detailed description of the content, displayed up to 4 lines combined with the title | O* |
link | Link |
Link information to navigate to when the content is clicked | O |
Name | Type | Description | Required |
---|---|---|---|
title | String |
Title of the content | O* |
imageUrl | String |
Image URL of the content | O* |
imageWidth | Number |
Width of the content image in pixels | X |
imageHeight | Number |
Height of the content image in pixels | X |
description | String |
Detailed description of the content, displayed up to 4 lines combined with the title | O* |
link | LinkObject |
Link information to navigate to when the content is clicked | O |
When using the Android SDK, use the Content
class.
Name | Type | Description | Required |
---|---|---|---|
title | String |
Title of the content | O* |
imageUrl | String |
Image URL of the content | O* |
imageWidth | Int |
Width of the content image in pixels | X |
imageHeight | Int |
Height of the content image in pixels | X |
description | String |
Detailed description of the content, displayed up to 4 lines combined with the title | O* |
link | Link |
Link information to navigate to when the content is clicked | O |
When using the iOS SDK, use the Content
class.
Name | Type | Description | Required |
---|---|---|---|
title | String |
Title of the content | O* |
imageURL | URL |
Image URL of the content | O* |
imageWidth | Int |
Width of the content image in pixels | X |
imageHeight | Int |
Height of the content image in pixels | X |
description | String |
Detailed description of the content, displayed up to 4 lines combined with the title | O* |
link | Link |
Link information to navigate to when the content is clicked | O |
When using the Flutter SDK, use the Content
class.
Name | Type | Description | Required |
---|---|---|---|
title | String |
Title of the content | O* |
imageUrl | String |
Image URL of the content | O* |
imageWidth | Int |
Width of the content image in pixels | X |
imageHeight | Int |
Height of the content image in pixels | X |
description | String |
Detailed description of the content, displayed up to 4 lines combined with the title | O* |
link | Link |
Link information to navigate to when the content is clicked | O |
* One of title, image_url, or description is required
This object contains information about buttons included in the message. It defines the button text and actions when clicked.
When composing a message, if both buttonTitle
and buttons
are provided, buttons
takes precedence. If neither is provided, one button is composed with the default title and link information from content
.
Name | Type | Description | Required |
---|---|---|---|
title | String |
Button title | O |
link | Link |
Link information to move to when the button is clicked (at least one is required) | O |
Name | Type | Description | Required |
---|---|---|---|
title | String |
Button title | O |
link | LinkObject |
Link information to navigate to when the button is clicked (at least one is required) | O |
When using the Android SDK, use the Button
class.
Name | Type | Description | Required |
---|---|---|---|
title | String |
Button title | O |
link | Link |
Link information to navigate to when the button is clicked (at least one is required) | O |
When using the iOS SDK, use the Button
class.
Name | Type | Description | Required |
---|---|---|---|
title | String |
Button title | O |
link | Link |
Link information to navigate to when the button is clicked (at least one is required) | O |
When using the Flutter SDK, use the Button
class.
Name | Type | Description | Required |
---|---|---|---|
title | String |
Button title | O |
link | Link |
Link information to navigate to when the button is clicked (at least one is required) | O |
This object contains link information that moves when the content area or button is clicked in the message.
You can set different links for each platform, and the appropriate link works according to the user's Kakao Talk execution environment. Web links are supported on PC/Mac, Android, and iOS. Android and iOS links are only applied to buttons on their respective platforms. For more details, refer to Link behavior.
To apply links to messages, at least one field in link
must be set. If no link is set or there is no link setting available in the user's Kakao Talk execution environment, links will not be applied to the message content area or buttons will not appear.
Name | Type | Description | Required |
---|---|---|---|
web_url | String |
Web link URL used in Kakao Talk for PC version. The domain part must match the site domain registered in [My Application] > [Platform] > [Web]. |
O* |
mobile_web_url | String |
Web link URL used in Kakao Talk for mobile. The domain part must match the site domain registered in [My Application] > [Platform] > [Web]. |
O* |
android_execution_params | String |
Parameters used in the app link URL for Kakao Talk on Android. If this value is not provided, mobile_web_url is used. |
O* |
ios_execution_params | String |
Parameters used in the app link URL for Kakao Talk on iOS. If this value is not provided, mobile_web_url is used. |
O* |
Name | Type | Description | Required |
---|---|---|---|
webUrl | String |
Web link URL used in Kakao Talk for PC version. The domain part must match the site domain registered in [My Application] > [Platform] > [Web]. |
O* |
mobileWebUrl | String |
Web link URL used in Kakao Talk for mobile. The domain part must match the site domain registered in [My Application] > [Platform] > [Web]. |
O* |
androidExecutionParams | String |
Parameters used in the app link URL for Kakao Talk on Android. If this value is not provided, mobile_web_url is used. |
O* |
iosExecutionParams | String |
Parameters used in the app link URL for Kakao Talk on iOS. If this value is not provided, mobile_web_url is used. |
O* |
When using the Android SDK, use the Link
class.
Name | Type | Description | Required |
---|---|---|---|
webUrl | String |
Web link URL used in Kakao Talk for PC version. The domain part must match the site domain registered in [My Application] > [Platform] > [Web]. |
O* |
mobileWebUrl | String |
Web link URL used in Kakao Talk for mobile. The domain part must match the site domain registered in [My Application] > [Platform] > [Web]. |
O* |
androidExecutionParams | Map<String,String> |
Parameters used in the app link URL for Kakao Talk on Android. If this value is not provided, mobile_web_url is used. |
O* |
iosExecutionParams | Map<String,String> |
Parameters used in the app link URL for Kakao Talk on iOS. If this value is not provided, mobile_web_url is used. |
O* |
When using the iOS SDK, use the Link
class.
Name | Type | Description | Required |
---|---|---|---|
webURL | URL |
Web link URL used in Kakao Talk for PC version. The domain part must match the site domain registered in [My Application] > [Platform] > [Web]. |
O* |
mobileWebURL | URL |
Web link URL used in Kakao Talk for mobile. The domain part must match the site domain registered in [My Application] > [Platform] > [Web]. |
O* |
androidExecutionParams | String |
Parameters used in the app link URL for Kakao Talk on Android. If this value is not provided, mobile_web_url is used. |
O* |
iosExecutionParams | String |
Parameters used in the app link URL for Kakao Talk on iOS. If this value is not provided, mobile_web_url is used. |
O* |
When using the Flutter SDK, use the Link
class.
Name | Type | Description | Required |
---|---|---|---|
webUrl | Uri |
Web link URL used in Kakao Talk for PC version. The domain part must match the site domain registered in [My Application] > [Platform] > [Web]. |
O* |
mobileWebUrl | Uri |
Web link URL used in Kakao Talk for mobile. The domain part must match the site domain registered in [My Application] > [Platform] > [Web]. |
O* |
androidExecutionParams | Map<String,String> |
Parameters used in the app link URL for Kakao Talk on Android. If this value is not provided, mobile_web_url is used. |
O* |
iosExecutionParams | Map<String,String> |
Parameters used in the app link URL for Kakao Talk on iOS. If this value is not provided, mobile_web_url is used. |
O* |
* One of web_url, mobile_web_url, android_execution_params, or ios_execution_params is required.
This object is used to display areas that show social metrics such as likes, comments, shares, views, and subscriber counts for content.
Name | Type | Description | Required |
---|---|---|---|
like_count | Int |
Number of likes for the content | X |
comment_count | Int |
Number of comments for the content | X |
shared_count | Int |
Number of shares for the content | X |
view_count | Int |
Number of views for the content | X |
subscriber_count | Int |
Number of subscribers for the content | X |
Name | Type | Description | Required |
---|---|---|---|
likeCount | Number |
Number of likes for the content | X |
commentCount | Number |
Number of comments for the content | X |
sharedCount | Number |
Number of shares for the content | X |
viewCount | Number |
Number of views for the content | X |
subscriberCount | Number |
Number of subscribers for the content | X |
When using the Android SDK, use the Social
class.
Name | Type | Description | Required |
---|---|---|---|
likeCount | Int |
Number of likes for the content | X |
commentCount | Int |
Number of comments for the content | X |
sharedCount | Int |
Number of shares for the content | X |
viewCount | Int |
Number of views for the content | X |
subscriberCount | Int |
Number of subscribers for the content | X |
When using the iOS SDK, use the Social
class.
Name | Type | Description | Required |
---|---|---|---|
likeCount | Int |
Number of likes for the content | X |
commentCount | Int |
Number of comments for the content | X |
sharedCount | Int |
Number of shares for the content | X |
viewCount | Int |
Number of views for the content | X |
subscriberCount | Int |
Number of subscribers for the content | X |
When using the Flutter SDK, use the Social
class.
Name | Type | Description | Required |
---|---|---|---|
likeCount | Int |
Number of likes for the content | X |
commentCount | Int |
Number of comments for the content | X |
sharedCount | Int |
Number of shares for the content | X |
viewCount | Int |
Number of views for the content | X |
subscriberCount | Int |
Number of subscribers for the content | X |
This is text item information that can be used in Feed Type B templates.
Name | Type | Description | Required |
---|---|---|---|
profile_text | String |
Text displayed in the header or profile area. If profile_image_url is not provided, only a bold title is shown as the header.Up to 16 characters. |
X |
profile_image_url | String |
Image displayed in the profile area. Shown as a small circular profile photo. |
X |
title_image_text | String |
Title of the image item. Up to 2 lines, up to 24 characters. |
X |
title_image_url | String |
Image of the image item. iOS: 108*108 , Android: 98*98 size.Images not in 1:1 ratio are center cropped. |
X |
title_image_category | String |
Category information displayed in gray text below the image item title. Up to 1 line, up to 14 characters. |
X |
items | ItemInfo[] |
Information for each text item. JSON array including item and item_op for item name and price, up to 5 items supported.(e.g., [{"item": "item1 name", "item_op": "item1_description"}, {"item": "item2 name", "item_op": "item2_description"}] ) |
X |
sum | String |
Summary title for the item area, such as order amount or payment amount. Displayed below the text item area, up to 6 characters. Important: The 🅖 area must have at least one item, and both sum and sum_op must be provided for the 🅗 area to be displayed.Note: When using the 🅗 area, item_op and sum_op in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned. |
X |
sum_op | String |
Total price information for the item area. Displayed in bold below the text item area, up to 11 characters. Important: The 🅖 area must have at least one item, and both sum and sum_op must be provided for the 🅗 area to be displayed.Note: When using the 🅗 area, item_op and sum_op in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned. |
X |
Name | Type | Description | Required |
---|---|---|---|
profileText | String |
Text displayed in the header or profile area. If profileImageUrl is not provided, only a bold title is shown as the header.Up to 16 characters. |
X |
profileImageUrl | String |
Image displayed in the profile area. Shown as a small circular profile photo. |
X |
titleImageText | String |
Title of the image item. Up to 2 lines, up to 24 characters. |
X |
titleImageUrl | String |
Image of the image item. iOS: 108*108 , Android: 98*98 size.Images not in 1:1 ratio are center cropped. |
X |
titleImageCategory | String |
Category information displayed in gray text below the image item title. Up to 1 line, up to 14 characters. |
X |
items | Array.<ItemObject> |
Information for each text item. JSON array including item and itemOp for item name and price, up to 5 items supported.(e.g., [{"item": "item1 name", "itemOp": "item1_description"}, {"item": "item2 name", "itemOp": "item2_description"}] ) |
X |
sum | String |
Summary title for the item area, such as order amount or payment amount. Displayed below the text item area, up to 6 characters. Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned. |
X |
sumOp | String |
Total price information for the item area. Displayed in bold below the text item area, up to 11 characters. Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned. |
X |
When using the Android SDK, use the ItemContent
class.
Name | Type | Description | Required |
---|---|---|---|
profileText | String |
Text displayed in the header or profile area. If profileImageUrl is not provided, only a bold title is shown as the header.Up to 16 characters. |
X |
profileImageUrl | String |
Image displayed in the profile area. Shown as a small circular profile photo. |
X |
titleImageText | String |
Title of the image item. Up to 2 lines, up to 24 characters. |
X |
titleImageUrl | String |
Image of the image item. iOS: 108*108 , Android: 98*98 size.Images not in 1:1 ratio are center cropped. |
X |
titleImageCategory | String |
Category information displayed in gray text below the image item title. Up to 1 line, up to 14 characters. |
X |
items | List<ItemInfo> |
Information for each text item. List including item and itemOp for item name and price, up to 5 items supported. |
X |
sum | String |
Summary title for the item area, such as order amount or payment amount. Displayed below the text item area, up to 6 characters. Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned. |
X |
sumOp | String |
Total price information for the item area. Displayed in bold below the text item area, up to 11 characters. Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned. |
X |
When using the iOS SDK, use the ItemContent
class.
Name | Type | Description | Required |
---|---|---|---|
profileText | String |
Text displayed in the header or profile area. If profileImageUrl is not provided, only a bold title is shown as the header.Up to 16 characters. |
X |
profileImageUrl | String |
Image displayed in the profile area. Shown as a small circular profile photo. |
X |
titleImageText | String |
Title of the image item. Up to 2 lines, up to 24 characters. |
X |
titleImageUrl | String |
Image of the image item. iOS: 108*108 , Android: 98*98 size.Images not in 1:1 ratio are center cropped. |
X |
titleImageCategory | String |
Category information displayed in gray text below the image item title. Up to 1 line, up to 14 characters. |
X |
items | [ItemInfo] |
Information for each text item. Array including item and itemOp for item name and price, up to 5 items supported. |
X |
sum | String |
Summary title for the item area, such as order amount or payment amount. Displayed below the text item area, up to 6 characters. Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned. |
X |
sumOp | String |
Total price information for the item area. Displayed in bold below the text item area, up to 11 characters. Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned. |
X |
When using the Flutter SDK, use the ItemContent
class.
Name | Type | Description | Required |
---|---|---|---|
profileText | String |
Text displayed in the header or profile area. If profileImageUrl is not provided, only a bold title is shown as the header.Up to 16 characters. |
X |
profileImageUrl | String |
Image displayed in the profile area. Shown as a small circular profile photo. |
X |
titleImageText | String |
Title of the image item. Up to 2 lines, up to 24 characters. |
X |
titleImageUrl | String |
Image of the image item. iOS: 108*108 , Android: 98*98 size.Images not in 1:1 ratio are center cropped. |
X |
titleImageCategory | String |
Category information displayed in gray text below the image item title. Up to 1 line, up to 14 characters. |
X |
items | List<ItemInfo> |
Information for each text item. List including item and itemOp for item name and price, up to 5 items supported. |
X |
sum | String |
Summary title for the item area, such as order amount or payment amount. Displayed below the text item area, up to 6 characters. Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned. |
X |
sumOp | String |
Total price information for the item area. Displayed in bold below the text item area, up to 11 characters. Important: The 🅖 area must have at least one item, and both sum and sumOp must be provided for the 🅗 area to be displayed.Note: When using the 🅗 area, itemOp and sumOp in the 🅖 and 🅗 areas are right-aligned; if not used, they are left-aligned. |
X |
This is information about one text item in the text item list.
Name | Type | Description | Area | Required |
---|---|---|---|---|
item | String |
Item name Up to 6 characters. |
🅖 | O |
item_op | String |
Item price Allowed characters: numbers, currency symbols, commas (,), periods (.), spaces. If including decimal amounts, up to 2 decimal places is recommended. Up to 2 lines: 14 characters for 1 line, 25 characters for 2 lines. |
🅖 | O |
Name | Type | Description | Area | Required |
---|---|---|---|---|
item | String |
Item name Up to 6 characters. |
🅖 | O |
itemOp | String |
Item price Allowed characters: numbers, currency symbols, commas (,), periods (.), spaces. If including decimal amounts, up to 2 decimal places is recommended. Up to 2 lines: 14 characters for 1 line, 25 characters for 2 lines. |
🅖 | O |
When using the Android SDK, use the ItemInfo
class.
Name | Type | Description | Area | Required |
---|---|---|---|---|
item | String |
Item name Up to 6 characters. |
🅖 | O |
itemOp | String |
Item price Allowed characters: numbers, currency symbols, commas (,), periods (.), spaces. If including decimal amounts, up to 2 decimal places is recommended. Up to 2 lines: 14 characters for 1 line, 25 characters for 2 lines. |
🅖 | O |
When using the iOS SDK, use the ItemInfo
class.
Name | Type | Description | Area | Required |
---|---|---|---|---|
item | String |
Item name Up to 6 characters. |
🅖 | O |
itemOp | String |
Item price Allowed characters: numbers, currency symbols, commas (,), periods (.), spaces. If including decimal amounts, up to 2 decimal places is recommended. Up to 2 lines: 14 characters for 1 line, 25 characters for 2 lines. |
🅖 | O |
When using the Flutter SDK, use the ItemInfo
class.
Name | Type | Description | Area | Required |
---|---|---|---|---|
item | String |
Item name Up to 6 characters. |
🅖 | O |
itemOp | String |
Item price Allowed characters: numbers, currency symbols, commas (,), periods (.), spaces. If including decimal amounts, up to 2 decimal places is recommended. Up to 2 lines: 14 characters for 1 line, 25 characters for 2 lines. |
🅖 | O |
This is text item information that can represent product information.
Name | Type | Description | Required |
---|---|---|---|
product_name | String |
Product name and title, up to 2 lines. Displayed above the product price in black text. |
X |
regular_price | Int |
Regular price | O |
discount_price | Int |
Discounted price | X |
discount_rate | Int |
Discount rate | X |
fixed_discount_price | Int |
Fixed discount price, cannot be used with discount rate | X |
currency_unit | String |
Currency unit or symbol (e.g., won, USD, ₩, $) (Default: won) |
X |
currency_unit_position | Int |
Position of the currency unit0 : after the price1 : before the price(Default: 0 ) |
X |
Name | Type | Description | Required |
---|---|---|---|
productName | String |
Product name and title, up to 2 lines. Displayed above the product price in black text. |
X |
regularPrice | Int |
Regular price | O |
discountPrice | Int |
Discounted price | X |
discountRate | Int |
Discount rate | X |
fixedDiscountPrice | Int |
Fixed discount price, cannot be used with discount rate | X |
currencyUnit | String |
Currency unit or symbol (e.g., won, USD, ₩, $) (Default: won) |
X |
currencyUnitPosition | Int |
Position of the currency unit0 : after the price1 : before the price(Default: 0 ) |
X |
When using the Android SDK, use the Commerce
class.
Name | Type | Description | Required |
---|---|---|---|
productName | String |
Product name and title, up to 2 lines. Displayed above the product price in black text. |
X |
regularPrice | Int |
Regular price | O |
discountPrice | Int |
Discounted price | X |
discountRate | Int |
Discount rate | X |
fixedDiscountPrice | Int |
Fixed discount price, cannot be used with discount rate | X |
currencyUnit | String |
Currency unit or symbol (e.g., won, USD, ₩, $) (Default: won) |
X |
currencyUnitPosition | Int |
Position of the currency unit0 : after the price1 : before the price(Default: 0 ) |
X |
When using the iOS SDK, use the CommerceDetail
class.
Name | Type | Description | Required |
---|---|---|---|
productName | String |
Product name and title, up to 2 lines. Displayed above the product price in black text. |
X |
regularPrice | Int |
Regular price | O |
discountPrice | Int |
Discounted price | X |
discountRate | NSNumber |
Discount rate | X |
fixedDiscountPrice | Int |
Fixed discount price, cannot be used with discount rate | X |
currencyUnit | String |
Currency unit or symbol (e.g., won, USD, ₩, $) (Default: won) |
X |
currencyUnitPosition | Int |
Position of the currency unit0 : after the price1 : before the price(Default: 0 ) |
X |
When using the Flutter SDK, use the Commerce
class.
Name | Type | Description | Required |
---|---|---|---|
productName | String |
Product name and title, up to 2 lines. Displayed above the product price in black text. |
X |
regularPrice | Int |
Regular price | O |
discountPrice | Int |
Discounted price | X |
discountRate | Int |
Discount rate | X |
fixedDiscountPrice | Int |
Fixed discount price, cannot be used with discount rate | X |
currencyUnit | String |
Currency unit or symbol (e.g., won, USD, ₩, $) (Default: won) |
X |
currencyUnitPosition | Int |
Position of the currency unit0 : after the price1 : before the price(Default: 0 ) |
X |