Skip to content

Commit f073b58

Browse files
[Impr] add kakao alimtalk template examples
1 parent df2db63 commit f073b58

9 files changed

Lines changed: 331 additions & 15 deletions

File tree

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
/**
2+
* 카카오 알림톡 템플릿 생성 예제
3+
*/
4+
const {SolapiMessageService} = require('solapi');
5+
const messageService = new SolapiMessageService(
6+
'ENTER_YOUR_API_KEY',
7+
'ENTER_YOUR_API_SECRET',
8+
);
9+
10+
// 사전에 템플릿 카테고리를 조회해야 합니다.
11+
// 반드시 실제 템플릿 생성시엔 템플릿에 맞는 카테고리를 조회하여 넣어주세요!
12+
messageService.getKakaoAlimtalkTemplateCategories().then(res => {
13+
const categoryCode = res[res.length - 1].code;
14+
messageService
15+
.createKakaoAlimtalkTemplate({
16+
name: '등록할 템플릿 제목(등록된 템플릿과 중복불가)',
17+
content: '등록할 템플릿 내용',
18+
channelId: '등록할 템플릿의 채널 ID(pfId)',
19+
// 채널 그룹으로 등록하는 경우 아래 주석 해제
20+
// channelGroupId: '등록할 템플릿의 채널 그룹 ID(pfId)',
21+
categoryCode,
22+
// 아래 데이터부터는 선택사항
23+
24+
/**
25+
* 알림톡 버튼, 최대 5개까지 입력할 수 있으며, 바로연결이 추가되면 최대 두개까지만 추가될 수 있습니다.
26+
*/
27+
/*buttons: [
28+
{
29+
buttonName: '버튼이름',
30+
/!**
31+
* 카카오 버튼 타입에 대한 설명은 아래 페이지를 참고해주세요!
32+
* @see https://developers.solapi.com/references/kakao/button-link-type
33+
*!/
34+
buttonType: 'WL',
35+
linkMo: 'https://m.example.com',
36+
linkPc: 'https://example.com',
37+
},
38+
],*/
39+
40+
/**
41+
* 바로연결, 10개까지만 등록할 수 있으며, 바로연결이 추가되면 버튼은 최대 두개까지 추가될 수 있습니다.
42+
*/
43+
/*quickReplies: [
44+
{
45+
name: '바로연결 버튼이름',
46+
/!**
47+
* 카카오 버튼 타입에 대한 설명은 아래 페이지를 참고해주세요!
48+
* @see https://developers.solapi.com/references/kakao/button-link-type
49+
* 바로연결에서 허용되는 버튼 타입은 아래와 같습니다.
50+
* WL: 웹링크, AL: 앱링크, BK: 봇키워드, BT: 봇전환, BC: 상담톡전환
51+
*!/
52+
linkType: 'WL',
53+
linkMo: 'https://m.example.com',
54+
linkPc: 'https://example.com',
55+
},
56+
],*/
57+
58+
/**
59+
* 카카오 알림톡 템플릿 메시지 유형
60+
* BA:기본형, EX:부가정보형, AD:광고추가형, MI: 복합형
61+
* 미지정시 기본값은 기본형(BA)입니다.
62+
*/
63+
//messageType: 'BA',
64+
65+
/**
66+
* 카카오 알림톡 템플릿 강조 유형
67+
* NONE: 선택안함, TEXT: 강조표기형, IMAGE: 이미지형, ITEM_LIST: 아이템리스트형
68+
* 미지정시 기본값은 선택안함(NONE) 입니다.
69+
* 강조 유형에 대한 자세한 설명은 아래 페이지를 참고해주세요!
70+
* @see https://developers.solapi.com/references/kakao/templates/createTemplate#%EA%B0%95%EC%A1%B0-%EC%9C%A0%ED%98%95
71+
*/
72+
//emphasizeType: 'NONE',
73+
74+
// 강조표기형(TEXT) 유형일 때 추가할 수 있는 강조표기형 제목
75+
//emphasizeTitle: '',
76+
77+
// 강조표기형(TEXT) 유형일 때 추가할 수 있는 강조표기형 부제목
78+
//emphasizeSubTitle: '',
79+
80+
/**
81+
* 아이템 리스트(ITEM_LIST) 유형에서만 사용 가능한 알림톡 헤더.
82+
* 변수(치환문구) 포함 가능. 최대 16자
83+
*/
84+
//header: '헤더 입력',
85+
86+
//알림톡 하이라이트, 강조 유형이 아이템 리스트일 때만 사용 가능합니다.
87+
/*highlight: {
88+
title: '하이라이트 제목', // 알림톡 하이라이트 제목, 변수 포함가능 및 최대 30자까지 입력 가능
89+
description: '', // 알림톡 하이라이트 내용. 변수 포함 불가능. 최대 16자까지 입력 가능
90+
/!**
91+
* 알림톡에 사용되는 이미지 고유 아이디. 이미지 타입이 ATA일 경우에만 사용 가능합니다.
92+
* 이미지 ID에 관한 설명은 아래 페이지를 확인해보세요!
93+
* @see https://developers.solapi.com/references/storage
94+
*!/
95+
// imageId: ''
96+
},*/
97+
98+
// 알림톡 아이템, 목록과 요약이 있습니다. 강조 유형이 아이템 리스트일 때만 사용 가능합니다.
99+
/*item: {
100+
// 알림톡 아이템 리스트, 최소 2개, 최대 10개까지 등록할 수 있습니다.
101+
list: [
102+
{
103+
title: '아이템리스트', // 아이템 리스트 제목, 변수 포함 불가, 최대 6자까지 입력 가능합니다.
104+
description: '아이템 리스트 내용', // 아이템 리스트 내용, 변수 포함가능, 최대 23까지 입력 가능합니다.
105+
},
106+
],
107+
summary: {
108+
title: '', // 알림톡 아이템 리스트 요약 제목, 변수 포함 불가, 최대 6자까지 입력 가능합니다.
109+
description: '', // 알림톡 아이템 리스트 요약 내용. 변수 포함 가능. 화폐 단위, 숫자, 쉼표, 마침표만 사용 가능합니다. 최대 14자까지 입력 가능합니다.
110+
},
111+
},*/
112+
113+
// 부가정보. 변수 포함 불가능. 최대 500자
114+
//extra: '',
115+
116+
/**
117+
* 보안 템플릿 여부. true일 경우 해당 템플릿을 PC에서는 확인할 수 없습니다. 기본값: false
118+
* 미지정시 기본값은 false 입니다.
119+
*/
120+
//securityFlag: false,
121+
122+
//알림톡에 사용되는 이미지 고유 아이디. 이미지 타입이 ATA일 경우에만 사용 가능합니다.
123+
//imageId: '',
124+
})
125+
.then(res => {
126+
console.log(res);
127+
128+
// 생성한 카카오 알림톡 템플릿을 즉시 검수할 수 있습니다.
129+
/*messageService
130+
.requestInspectionKakaoAlimtalkTemplate(res.templateId)
131+
.then(res2 => console.log(res2));*/
132+
});
133+
});
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**
2+
* 카카오 알림톡 템플릿 조회 예제
3+
*/
4+
const {SolapiMessageService} = require('solapi');
5+
const messageService = new SolapiMessageService(
6+
'ENTER_YOUR_API_KEY',
7+
'ENTER_YOUR_API_SECRET',
8+
);
9+
10+
messageService
11+
.getKakaoAlimtalkTemplate('조회할 알림톡 template ID')
12+
.then(res => console.log(res));
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/**
2+
* 카카오 알림톡 템플릿 카테고리 목록 조회 예제
3+
*/
4+
const {SolapiMessageService} = require('solapi');
5+
const messageService = new SolapiMessageService(
6+
'ENTER_YOUR_API_KEY',
7+
'ENTER_YOUR_API_SECRET',
8+
);
9+
10+
messageService.getKakaoAlimtalkTemplateCategories().then(res => {
11+
for (const category of res) {
12+
console.log(category);
13+
}
14+
});

examples/javascript/common/src/kakao/template/get_templates.js renamed to examples/javascript/common/src/kakao/alimtalk_template/get_templates.js

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,38 @@
11
/**
22
* 카카오 알림톡 템플릿 목록 조회 예제
33
*/
4-
54
const {SolapiMessageService} = require('solapi');
65
const messageService = new SolapiMessageService(
76
'ENTER_YOUR_API_KEY',
87
'ENTER_YOUR_API_SECRET',
98
);
109

1110
messageService
12-
.getKakaoAlimtalkTemplates(
13-
// 검색 조건이 있을 떄 추가
14-
{
11+
.getKakaoAlimtalkTemplates
12+
// 검색 조건이 있을 떄 추가
13+
/*{
14+
limit: 5, // 한 번 요청당 조회할 건 수 입력, 기본값은 20
15+
startKey: '페이지네이션 조회 키',
1516
name: '템플릿 이름 입력(일부 키워드로 검색 가능)',
17+
// 템플릿 이름 검색을 eq, ne 등이 포함된 object로 더 자세하게 검색할 수 있습니다!
18+
/!*name: {
19+
eq: '', // 해당 값과 완벽히 일치하는 템플릿만을 검색
20+
ne: '', // 해당 값과 불일치하는 템플릿만을 검색
21+
},*!/
1622
channelId: '카카오 채널 ID 입력(구 pfId)',
1723
templateId: '알림톡 템플릿 ID 입력',
18-
// 숨긴 템플릿 검색, true로 했을 때만 숨긴 템플릿이 검색 됨
19-
isHidden: true,
20-
/**
24+
isHidden: true, // 숨긴 템플릿 검색, true로 했을 때만 숨긴 템플릿이 검색 됨
25+
/!**
2126
* @type {import('solapi').GetKakaoAlimtalkTemplatesRequest.status}
2227
* status 안에 포함된 4가지 사항 중 한가지 선택
2328
* PENDING: 대기(검수필요)
2429
* INSPECTING: 검수중
2530
* APPROVED: 등록완료(검수완료)
2631
* REJECTED: 반려됨
27-
* */
32+
* *!/
2833
status: 'INSPECTING',
29-
},
30-
)
34+
startDate: '',
35+
endDate: '',
36+
},*/
37+
()
3138
.then(res => console.log(res));
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
* 카카오 알림톡 템플릿 검수요청 예제
3+
*/
4+
const {SolapiMessageService} = require('solapi');
5+
const messageService = new SolapiMessageService(
6+
'ENTER_YOUR_API_KEY',
7+
'ENTER_YOUR_API_SECRET',
8+
);
9+
10+
// 템플릿 검수 요청, 반드시 대기 상태의 템플릿만 검수 요청할 수 있습니다.
11+
messageService
12+
.requestInspectionKakaoAlimtalkTemplate('검수할 알림톡 템플릿 ID')
13+
.then(res => console.log(res));
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
* 카카오 알림톡 템플릿 삭제 예제
3+
* 알림톡 템플릿을 수정할 때에는 반드시 대기 상태에서만 수정할 수 있습니다.
4+
*/
5+
const {SolapiMessageService} = require('solapi');
6+
const messageService = new SolapiMessageService(
7+
'ENTER_YOUR_API_KEY',
8+
'ENTER_YOUR_API_SECRET',
9+
);
10+
11+
messageService
12+
.removeKakaoAlimtalkTemplate('삭제할 알림톡 템플릿 ID')
13+
.then(res => console.log(res));
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
/**
2+
* 카카오 알림톡 템플릿 수정 예제
3+
* 알림톡 템플릿을 수정할 때에는 반드시 대기 상태에서만 수정할 수 있습니다.
4+
*/
5+
const {SolapiMessageService} = require('solapi');
6+
const messageService = new SolapiMessageService(
7+
'ENTER_YOUR_API_KEY',
8+
'ENTER_YOUR_API_SECRET',
9+
);
10+
11+
messageService
12+
.updateKakaoAlimtalkTemplate('수정할 알림톡 템플릿 ID', {
13+
//name: '수정할 템플릿 제목(등록된 템플릿과 중복불가)',
14+
//content: '수정할 템플릿 내용',
15+
//categoryCode: '999999', // 카테고리 코드, 카테고리 코드를 미리 조회하신 다음 코드를 입력해주세요.
16+
/**
17+
* 알림톡 버튼, 최대 5개까지 입력할 수 있으며, 바로연결이 추가되면 최대 두개까지만 추가될 수 있습니다.
18+
*/
19+
/*buttons: [
20+
{
21+
buttonName: '버튼이름',
22+
/!**
23+
* 카카오 버튼 타입에 대한 설명은 아래 페이지를 참고해주세요!
24+
* @see https://developers.solapi.com/references/kakao/button-link-type
25+
*!/
26+
buttonType: 'WL',
27+
linkMo: 'https://m.example.com',
28+
linkPc: 'https://example.com',
29+
},
30+
],*/
31+
/**
32+
* 바로연결, 10개까지만 등록할 수 있으며, 바로연결이 추가되면 버튼은 최대 두개까지 추가될 수 있습니다.
33+
*/
34+
/*quickReplies: [
35+
{
36+
name: '바로연결 버튼이름',
37+
/!**
38+
* 카카오 버튼 타입에 대한 설명은 아래 페이지를 참고해주세요!
39+
* @see https://developers.solapi.com/references/kakao/button-link-type
40+
* 바로연결에서 허용되는 버튼 타입은 아래와 같습니다.
41+
* WL: 웹링크, AL: 앱링크, BK: 봇키워드, BT: 봇전환, BC: 상담톡전환
42+
*!/
43+
linkType: 'WL',
44+
linkMo: 'https://m.example.com',
45+
linkPc: 'https://example.com',
46+
},
47+
],*/
48+
/**
49+
* 카카오 알림톡 템플릿 메시지 유형
50+
* BA:기본형, EX:부가정보형, AD:광고추가형, MI: 복합형
51+
* 미지정시 기본값은 기본형(BA)입니다.
52+
*/
53+
//messageType: 'BA',
54+
/**
55+
* 카카오 알림톡 템플릿 강조 유형
56+
* NONE: 선택안함, TEXT: 강조표기형, IMAGE: 이미지형, ITEM_LIST: 아이템리스트형
57+
* 미지정시 기본값은 선택안함(NONE) 입니다.
58+
* 강조 유형에 대한 자세한 설명은 아래 페이지를 참고해주세요!
59+
* @see https://developers.solapi.com/references/kakao/templates/createTemplate#%EA%B0%95%EC%A1%B0-%EC%9C%A0%ED%98%95
60+
*/
61+
//emphasizeType: 'NONE',
62+
// 강조표기형(TEXT) 유형일 때 추가할 수 있는 강조표기형 제목
63+
//emphasizeTitle: '',
64+
// 강조표기형(TEXT) 유형일 때 추가할 수 있는 강조표기형 부제목
65+
//emphasizeSubTitle: '',
66+
/**
67+
* 아이템 리스트(ITEM_LIST) 유형에서만 사용 가능한 알림톡 헤더.
68+
* 변수(치환문구) 포함 가능. 최대 16자
69+
*/
70+
//header: '헤더 입력',
71+
//알림톡 하이라이트, 강조 유형이 아이템 리스트일 때만 사용 가능합니다.
72+
/*highlight: {
73+
title: '하이라이트 제목', // 알림톡 하이라이트 제목, 변수 포함가능 및 최대 30자까지 입력 가능
74+
description: '', // 알림톡 하이라이트 내용. 변수 포함 불가능. 최대 16자까지 입력 가능
75+
/!**
76+
* 알림톡에 사용되는 이미지 고유 아이디. 이미지 타입이 ATA일 경우에만 사용 가능합니다.
77+
* 이미지 ID에 관한 설명은 아래 페이지를 확인해보세요!
78+
* @see https://developers.solapi.com/references/storage
79+
*!/
80+
// imageId: ''
81+
},*/
82+
// 알림톡 아이템, 목록과 요약이 있습니다. 강조 유형이 아이템 리스트일 때만 사용 가능합니다.
83+
/*item: {
84+
// 알림톡 아이템 리스트, 최소 2개, 최대 10개까지 등록할 수 있습니다.
85+
list: [
86+
{
87+
title: '아이템리스트', // 아이템 리스트 제목, 변수 포함 불가, 최대 6자까지 입력 가능합니다.
88+
description: '아이템 리스트 내용', // 아이템 리스트 내용, 변수 포함가능, 최대 23까지 입력 가능합니다.
89+
},
90+
],
91+
summary: {
92+
title: '', // 알림톡 아이템 리스트 요약 제목, 변수 포함 불가, 최대 6자까지 입력 가능합니다.
93+
description: '', // 알림톡 아이템 리스트 요약 내용. 변수 포함 가능. 화폐 단위, 숫자, 쉼표, 마침표만 사용 가능합니다. 최대 14자까지 입력 가능합니다.
94+
},
95+
},*/
96+
// 부가정보. 변수 포함 불가능. 최대 500자
97+
//extra: '',
98+
/**
99+
* 보안 템플릿 여부. true일 경우 해당 템플릿을 PC에서는 확인할 수 없습니다. 기본값: false
100+
* 미지정시 기본값은 false 입니다.
101+
*/
102+
//securityFlag: false,
103+
//알림톡에 사용되는 이미지 고유 아이디. 이미지 타입이 ATA일 경우에만 사용 가능합니다.
104+
//imageId: '',
105+
})
106+
.then(res => {
107+
console.log(res);
108+
109+
// 수정한 카카오 알림톡 템플릿을 즉시 검수할 수 있습니다.
110+
/*messageService
111+
.requestInspectionKakaoAlimtalkTemplate(res.templateId)
112+
.then(res2 => console.log(res2));*/
113+
});

src/solapi.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,11 +821,22 @@ export class SolapiMessageService {
821821
}
822822

823823
/**
824+
* @deprecated 해당 메소드는 더이상 사용되지 않습니다. removeKakaoAlimtalkTemplate를 이용해주세요!
824825
* 카카오 알림톡 템플릿 삭제(대기, 반려 상태일 때만 삭제가능)
825826
* @param templateId 카카오 알림톡 템플릿 ID
826827
*/
827828
async deleteKakaoAlimtalkTemplate(
828829
templateId: string,
830+
): Promise<KakaoAlimtalkTemplate> {
831+
return this.removeKakaoAlimtalkTemplate(templateId);
832+
}
833+
834+
/**
835+
* 카카오 알림톡 템플릿 삭제(대기, 반려 상태일 때만 삭제가능)
836+
* @param templateId 카카오 알림톡 템플릿 ID
837+
*/
838+
async removeKakaoAlimtalkTemplate(
839+
templateId: string,
829840
): Promise<KakaoAlimtalkTemplate> {
830841
const requestConfig: RequestConfig = {
831842
method: 'DELETE',

yarn.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,10 +1066,10 @@ __metadata:
10661066
languageName: node
10671067
linkType: hard
10681068

1069-
"@types/node@npm:latest":
1070-
version: 18.11.13
1071-
resolution: "@types/node@npm:18.11.13"
1072-
checksum: b0c1aa3bd2f5df8240e61096a49d6d4be600109b824d23408ec4ba1ec057dc0c60588e09f73b8a60455ad26d367e9c5562fad8403099f885cbc7b4cace83ec4c
1069+
"@types/node@npm:^18.11.13":
1070+
version: 18.11.14
1071+
resolution: "@types/node@npm:18.11.14"
1072+
checksum: 1effaf6d55bbcccde9bca763e6454ebf92047726450256ccc0673bf44e4661fbddcd788b0779bad8a13809b05a7bdcbfba81db0713235478b866d553be864be9
10731073
languageName: node
10741074
linkType: hard
10751075

@@ -3658,7 +3658,7 @@ __metadata:
36583658
"@parcel/transformer-typescript-types": 2.8.1
36593659
"@types/crypto-js": ^4.1.1
36603660
"@types/image-to-base64": ^2.1.0
3661-
"@types/node": latest
3661+
"@types/node": ^18.11.13
36623662
"@types/qs": ^6.9.7
36633663
"@typescript-eslint/eslint-plugin": ^5.46.1
36643664
"@typescript-eslint/parser": ^5.46.1

0 commit comments

Comments
 (0)