Skip to content

Commit 3f78385

Browse files
authored
Merge pull request #4 from wileyday/main
발신번호 예제 추가, rcs 예제 추가, 알림톡 variables 예제 추가
2 parents 38846f8 + 52c162d commit 3f78385

18 files changed

+373
-33
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ venv/
33
__pycache__/
44
*.pyc
55
config.ini
6+
*.real.py

examples/all_in_one.py

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -82,36 +82,17 @@ def sendMany(data):
8282
{
8383
'to': '01000000004',
8484
'from': '029302266',
85-
'text': '버튼은 최대 5개까지 추가 가능하며 템플릿 내용과 마찬가지로 버튼 내용도 등록 및 검수 받은 내용 그대로 입력되어야 합니다.',
8685
'kakaoOptions': {
8786
'pfId': 'KA01PF200323182344986oTFz9CIabcx',
8887
'templateId': 'KA01TP200323182345741y9yF20aabcx',
89-
'buttons': [
90-
{
91-
'buttonType': 'WL', # 웹링크
92-
'buttonName': '버튼 이름',
93-
'linkMo': 'https://m.example.com',
94-
'linkPc': 'https://example.com' # 템플릿 등록 시 모바일링크만 입력하였다면 linkPc 값은 입력하시면 안됩니다.
95-
},
96-
{
97-
'buttonType': 'AL', # 앱링크
98-
'buttonName': '실행 버튼',
99-
'linkAnd': 'examplescheme://', # 안드로이드
100-
'linkIos': 'examplescheme://' # iOS
101-
},
102-
{
103-
'buttonType': 'DS', # 배송조회
104-
'buttonName': '배송 조회'
105-
},
106-
{
107-
'buttonType': 'BK', # 봇키워드(챗봇에게 키워드를 전달합니다. 버튼이름의 키워드가 그대로 전달됩니다.)
108-
'buttonName': '봇키워드'
109-
},
110-
{
111-
'buttonType': 'MD', # 상담요청하기 (상담요청하기 버튼을 누르면 메시지 내용이 상담원에게 그대로 전달됩니다.)
112-
'buttonName': '상담요청하기'
113-
}
114-
]
88+
# 변수: 값 형식으로 모든 변수에 대한 변수값 입력
89+
'variables': {
90+
'#{변수1}': '변수1의 값',
91+
'#{변수2}': '변수2의 값',
92+
'#{버튼링크1}': '버튼링크1의 값',
93+
'#{버튼링크2}': '버튼링크2의 값',
94+
'#{강조문구}': '강조문구의 값'
95+
}
11596
}
11697
}
11798
# ...
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import json
2+
import sys
3+
4+
sys.path.append('../../lib')
5+
6+
import message
7+
8+
9+
# 한번 요청으로 1만건의 알림톡 발송이 가능합니다.
10+
# 변수: 값 형식으로 변수값만 입력해주면 템플릿의 모든 내용을 서버에 저장된 값을 사용하여 발송합니다.
11+
if __name__ == '__main__':
12+
data = {
13+
'messages': [
14+
# 변수가 있는 경우
15+
{
16+
'to': '01000000001',
17+
'from': '029302266',
18+
'kakaoOptions': {
19+
'pfId': 'KA01PF200323182344986oTFz9CIabcx',
20+
'templateId': 'KA01TP200323182345741y9yF20aabcx',
21+
# 변수: 값 형식으로 모든 변수에 대한 변수값 입력
22+
'variables': {
23+
'#{변수1}': '변수1의 값',
24+
'#{변수2}': '변수2의 값',
25+
'#{버튼링크1}': '버튼링크1의 값',
26+
'#{버튼링크2}': '버튼링크2의 값',
27+
'#{강조문구}': '강조문구의 값'
28+
}
29+
}
30+
},
31+
# 변수가 없는 경우
32+
{
33+
'to': '01000000001',
34+
'from': '029302266',
35+
'kakaoOptions': {
36+
'pfId': 'KA01PF200323182344986oTFz9CIabcx',
37+
'templateId': 'KA01TP200323182345741y9yF20aabcx',
38+
'variables': {} # 변수가 없는 경우에도 입력
39+
}
40+
},
41+
{
42+
'to': [ '01000000002', '01000000003' ], # array 사용으로 동일한 내용을 여러 수신번호에 전송 가능
43+
'from': '029302266',
44+
'kakaoOptions': {
45+
'pfId': 'KA01PF200323182344986oTFz9CIabcx',
46+
'templateId': 'KA01TP200323182345741y9yF20aabcx'
47+
'variables': {
48+
'#{변수1}': '변수1의 값',
49+
'#{변수2}': '변수2의 값',
50+
'#{버튼링크1}': '버튼링크1의 값',
51+
'#{버튼링크2}': '버튼링크2의 값',
52+
'#{강조문구}': '강조문구의 값'
53+
}
54+
}
55+
}
56+
# ...
57+
# 1만건까지 추가 가능
58+
]
59+
}
60+
res = message.sendMany(data)
61+
print(json.dumps(res.json(), indent=2, ensure_ascii=False))
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import json
2+
import sys
3+
sys.path.append('../../lib')
4+
import message
5+
6+
# 한번 요청으로 1만건의 친구톡 발송이 가능합니다.
7+
# 카카오톡채널 친구로 추가되어 있어야 친구톡 발송이 가능합니다.
8+
# 템플릿 등록없이 버튼을 포함하여 자유롭게 메시지 전송이 가능합니다.
9+
if __name__ == '__main__':
10+
data = {
11+
'messages': [
12+
{
13+
'to': '01000000001',
14+
'from': '029302266',
15+
'text': '카카오톡채널 친구로 추가되어 있어야 친구톡 발송이 가능합니다.',
16+
'kakaoOptions': {
17+
'pfId': 'KA01PF200323182344986oTFz9CIabcx',
18+
'adFlag': True # 광고 표기 여부(기본값 False)
19+
}
20+
},
21+
{
22+
'to': [ '01000000002', '01000000003' ], # array 사용으로 동일한 내용을 여러 수신번호에 전송 가능
23+
'from': '029302266',
24+
'text': '카카오톡채널 친구로 추가되어 있어야 친구톡 발송이 가능합니다.',
25+
'kakaoOptions': {
26+
'pfId': 'KA01PF200323182344986oTFz9CIabcx'
27+
}
28+
},
29+
{
30+
'to': '01000000004',
31+
'from': '029302266',
32+
'text': '버튼은 최대 5개까지 추가 가능하며 내용과 마찬가지로 자유롭게 입력이 가능합니다.',
33+
'kakaoOptions': {
34+
'pfId': 'KA01PF200323182344986oTFz9CIabcx',
35+
'buttons': [
36+
{
37+
'buttonType': 'WL', # 웹링크
38+
'buttonName': '버튼 이름',
39+
'linkMo': 'https://m.example.com',
40+
'linkPc': 'https://example.com' # 템플릿 등록 시 모바일링크만 입력하였다면 linkPc 값은 입력하시면 안됩니다.
41+
},
42+
{
43+
'buttonType': 'AL', # 앱링크
44+
'buttonName': '실행 버튼',
45+
'linkAnd': 'examplescheme://',
46+
'linkIos': 'examplescheme://'
47+
},
48+
{
49+
'buttonType': 'BK', # 봇키워드(챗봇에게 키워드를 전달합니다. 버튼이름의 키워드가 그대로 전달됩니다.)
50+
'buttonName': '봇키워드'
51+
},
52+
{
53+
'buttonType': 'MD', # 상담요청하기 (상담요청하기 버튼을 누르면 메시지 내용이 상담원에게 그대로 전달됩니다.)
54+
'buttonName': '상담요청하기'
55+
},
56+
{
57+
'buttonType': 'BC', # 상담톡 서비스 사용 시에만 가능합니다.
58+
'buttonName': '상담요청하기'
59+
},
60+
{
61+
'buttonType': 'BT', # 챗봇 사용 시 가능
62+
'buttonName': '챗본 문의'
63+
}
64+
]
65+
}
66+
}
67+
# ...
68+
# 1만건까지 추가 가능
69+
]
70+
}
71+
res = message.sendMany(data)
72+
print(json.dumps(res.json(), indent=2, ensure_ascii=False))
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import json
22
import sys
33

4-
sys.path.append('../lib')
4+
sys.path.append('../../lib')
55

66
import message
77

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import json
22
import sys
3-
sys.path.append('../lib')
3+
sys.path.append('../../lib')
44
import message
55

66
# 한번 요청으로 1만건의 친구톡 발송이 가능합니다.

examples/rcs/send_rcs_lms.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import json
2+
import sys
3+
sys.path.append('../../lib')
4+
import message
5+
6+
# 한번 요청으로 1만건의 메시지 발송이 가능합니다.
7+
if __name__ == '__main__':
8+
data = {
9+
'messages': [
10+
{
11+
'to': '01000000001',
12+
'from': '029302266',
13+
'type': 'RCS_LMS',
14+
'subject': 'LMS 제목',
15+
'text': 'RCS LMS를 발송합니다.',
16+
'rcsOptions': {
17+
'brandId': 'RC01BR210526093952685ArBrUMyeOTy', # RCSBizCenter(https://www.rcsbizcenter.com/)에서 발급받은 브랜드ID 입력
18+
}
19+
},
20+
# 버튼이 포함된 RCS LMS를 발송합니다. 버튼은 최대 3개까지 추가 가능합니다.
21+
{
22+
'to': [ '01000000002', '01000000003' ], # 신번호를 array로 입력하면 같은 내용을 여러명에게 보낼 수 있습니다.
23+
'from': '029302266',
24+
'type' => 'RCS_LMS',
25+
'subject': 'LMS 제목',
26+
'text': '버튼이 포함된 RCS LMS를 발송합니다. 버튼은 최대 3개까지 추가 가능합니다.',
27+
'rcsOptions': {
28+
'brandId': 'RC01BR210526093952685ArBrUMyeOTy', # RCSBizCenter(https://www.rcsbizcenter.com/)에서 발급받은 브랜드ID 입력
29+
'buttons': [
30+
{ 'buttonType': 'WL', 'buttonName': '홈페이지 바로가기', 'link': 'https://nurigo.net' }
31+
, { 'buttonType': 'ML', 'buttonName': '지도 위치 표시', 'latitude': '37.280342669603684', 'longitude': '127.11824209721874', 'label': '누리고', 'link': 'https://nurigo.net' }
32+
, { 'buttonType': 'MQ', 'buttonName': '지도 검색', 'link': 'https://nurigo.net', 'query': '(주)누리고' }
33+
# , { 'buttonType': 'MR', 'buttonName': '나의 현재 위치' }
34+
# , { 'buttonType': 'CA', 'buttonName': '캘린더 일정 생성', 'title': '제목', 'startTime': '2021-06-19T00:00:00.000Z', 'endTime': '2021-06-19T09:00:00.000Z', 'text': '메모' }
35+
# , { 'buttonType': 'CL', 'buttonName': '텍스트 복사', 'text': '복사할 텍스트 내용' }
36+
# , { 'buttonType': 'DL', 'buttonName': '전화 걸기', 'phone': '01012345678' }
37+
# , { 'buttonType': 'MS', 'buttonName': '메시지 보내기', 'phone': '01012345678', 'text': '보낼 메시지 내용' }
38+
]
39+
}
40+
}
41+
# ...
42+
# 1만건까지 추가 가능
43+
]
44+
}
45+
res = message.sendMany(data)
46+
print(json.dumps(res.json(), indent=2, ensure_ascii=False))

examples/rcs/send_rcs_sms.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import json
2+
import sys
3+
sys.path.append('../../lib')
4+
import message
5+
6+
# 한번 요청으로 1만건의 메시지 발송이 가능합니다.
7+
if __name__ == '__main__':
8+
data = {
9+
'messages': [
10+
{
11+
'to': '01000000001',
12+
'from': '029302266',
13+
'type': 'RCS_SMS',
14+
'text': 'RCS SMS를 발송합니다.',
15+
'rcsOptions': {
16+
'brandId': 'RC01BR210526093952685ArBrUMyeOTy', # RCSBizCenter(https://www.rcsbizcenter.com/)에서 발급받은 브랜드ID 입력
17+
}
18+
},
19+
{
20+
'to': [ '01000000002', '01000000003' ], # 신번호를 array로 입력하면 같은 내용을 여러명에게 보낼 수 있습니다.
21+
'from': '029302266',
22+
'type' => 'RCS_SMS',
23+
'text': 'RCS SMS를 발송합니다.',
24+
'rcsOptions': {
25+
'brandId': 'RC01BR210526093952685ArBrUMyeOTy', # RCSBizCenter(https://www.rcsbizcenter.com/)에서 발급받은 브랜드ID 입력
26+
'buttons': [
27+
{ 'buttonType': 'WL', 'buttonName': '홈페이지 바로가기', 'link': 'https://nurigo.net' }
28+
#, { 'buttonType': 'ML', 'buttonName': '지도 위치 표시', 'latitude': '37.280342669603684', 'longitude': '127.11824209721874', 'label': '누리고', 'link': 'https://nurigo.net' }
29+
#, { 'buttonType': 'MQ', 'buttonName': '지도 검색', 'link': 'https://nurigo.net', 'query': '(주)누리고' }
30+
# , { 'buttonType': 'MR', 'buttonName': '나의 현재 위치' }
31+
# , { 'buttonType': 'CA', 'buttonName': '캘린더 일정 생성', 'title': '제목', 'startTime': '2021-06-19T00:00:00.000Z', 'endTime': '2021-06-19T09:00:00.000Z', 'text': '메모' }
32+
# , { 'buttonType': 'CL', 'buttonName': '텍스트 복사', 'text': '복사할 텍스트 내용' }
33+
# , { 'buttonType': 'DL', 'buttonName': '전화 걸기', 'phone': '01012345678' }
34+
# , { 'buttonType': 'MS', 'buttonName': '메시지 보내기', 'phone': '01012345678', 'text': '보낼 메시지 내용' }
35+
]
36+
}
37+
}
38+
# ...
39+
# 1만건까지 추가 가능
40+
]
41+
}
42+
res = message.sendMany(data)
43+
print(json.dumps(res.json(), indent=2, ensure_ascii=False))

examples/senderid/README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
## 발신번호 등록
2+
3+
Step 1) 발신번호를 등록(생성)합니다.
4+
create_number.py 파일의 phoneNumber 변수값을 발신번호로 사용할 전화번호로 입력해 주세요.
5+
6+
```
7+
> vi create_number.py (phoneNumber 수정)
8+
> python create_number.py
9+
```
10+
11+
## 발신번호 인증
12+
13+
Step 2) 전화번호 인증
14+
* 해당 전화번호로 전화를 걸어 인증번호를 알려줍니다.
15+
* 리턴되는 Transaction ID와 인증번호(Token)를 기록해두어 다음 Step에서 사용합니다.
16+
17+
```
18+
> vi request_voicecall.py (phoneNumber 수정)
19+
> python request_voicecall.py
20+
```
21+
22+
Step 3) 인증번호 확인
23+
Trasaction ID 와 인증번호로 인증을 확인합니다.
24+
25+
```
26+
> vi verify_token.py (phoneNumber, transactionId, token 수정)
27+
> python verify_token.py
28+
```
29+
30+
## 활성화된 발신번호 조회
31+
Step 3 까지 진행했을 때 특별한 오류가 없었다면 활성화된 발신번호 목록에서 확인 가능합니다.
32+
```
33+
> python active_numbers.py
34+
```
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import json
2+
import sys
3+
sys.path.append('../../lib')
4+
import message
5+
6+
# 활성화된 발신번호 목록 조회
7+
8+
if __name__ == '__main__':
9+
res = message.get("/senderid/v1/numbers/active")
10+
print(json.dumps(res.json(), indent=2, ensure_ascii=False))

0 commit comments

Comments
 (0)