Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
각각의 계정에 속해있는 멤버들은 정해진 권한에 따라 계정을 사용할 수 있는 범위가 달라집니다. 멤버의 권한은 'OWNER', 'DEVELOPER', 'MEMBER'로 정해져있으며 'OWNER'의 경우 계정의 모든 것을 사용할 수 있으며 계정 삭제 또한 가능하니 멤버에게 권한을 줄때 유의해주시길 바랍니다.
아래 표에 있는 'role-'로 작하는 권한 목록은 각각 멤버가 계정을 통해 사용할 수 있는 API 의 사용 권한을 의미하며 'write'의 경우 생성, 수정, 삭제 'read'의 경우 읽기 즉 정보 조회의 뜻을 담고 있습니다.
예를 들어 'role-senderid:read'의 경우 'role'은 멤버전용 권한 'senderid'는 발신번호 'read'는 정보보기이므로 해당 권한을 가진 멤버는 계정의 발신번호 정보를 볼 수 있다는 것을 나타냅니다.
멤버 권한 명
사용할 수 있는 권한 목록
설
OWNER
role-senderid:read,
role-senderid:write,
role-message:write,
role-message:read,
role-cash:read,
role-cash:write,
role-appstore:read,
role-appstore:write,
role-pricing:read,
role-oauth2:read,
role-oauth2:write,
role-notification:read,
role-notification:write,
role-coolog:read,
role-storage:read,
role-storage:write,
role-iam:read,
role-iam:write,
role-credentials:read,
role-credentials:write
해당 계정을 통한 모든 활동 가능
DEVELOPER
role-senderid:read,
role-message:write,
role-message:read,
role-images:read,
role-images:write,
role-cash:read,
role-appstore:read,
role-appstore:write,
role-pricing:read,
role-oauth2:read,
role-oauth2:write,
role-notification:read,
role-coolog:read,
role-iam:read,
role-credentials:read,
role-credentials:write
발신번호 정보 조회,
메시지 발송 및 내역 조회,
이미지 업로드 및 조회,
잔액 정보 조회,
앱 스토어 등록 및 조회, 단가 정보 조회,
OAuth2 사용 및 조회,
계정 알림내역 조회,
계정 활동내역 조회,
인증 현황 조회,
API Key 등록 및 조회
MEMBER
role-senderid:read,
role-message:write,
role-message:read,
role-images:read,
role-images:write,
role-cash:read,
role-appstore:read,
role-pricing:read,
role-notification:read
발신번호 정보 조회,
메시지 발송 및 내역 조회,
이미지 업로드 및 조회,
잔액 정보 조회,
앱 스토어 정보 조회,
단가 정보 조회,
계정 알림내역 조회
REST API를 요청(Request)할 때 HTTP 헤더에 Authorization 정보를 추가하여 인증 받을 수 있습니다. API를 요청한 계정의 소유자를 확인하는데 필수적인 절차입니다.
참고
Authorization: <AuthenticationMethod> apiKey=<API Key>, date=<Date Time>, salt=<Salt>, signature=<Signature>
curl -X GET https://api.coolsms.co.kr/messages/v4/list --header "Authorization: HMAC-SHA256 apiKey=NCSAYU7YDBXYORXC, date=2019-07-01T00:41:48Z, salt=jqsba2jxjnrjor, signature=1779eac71a24cbeeadfa7263cb84b7ea0af1714f5c0270aa30ffd34600e363b4"
<AuthenticationMethod> Signature 생성 알고리즘으로 HMAC-SHA256, HMAC-MD5 중에 하나를 선택할 수 있습니다.
<API Key> 발급받은 API Key를 입력합니다.
<Date Time> ISO 8601 규격의 날짜와 시간을 입력합니다.
<Salt> 12 ~ 64바이트의 불규칙적이고 랜덤한 문자열을 생성하여 사용합니다.
<Signature> <Date Time>과 <Salt>를 하나로 연결한 문자열을 데이터로 하고 API Secret을 Key로 만들어진 HMAC 해시코드
Signature의 재사용을 막기위해서 입력된 <Date Time>의 표준시간을 기준으로 ±15분 차이가 날 경우 RequestTimeTooSkewed 오류를 리턴합니다. 또한 15분 내에 한번 사용된 Signature는 중복사용이 불가능하므로 원천적으로 재사용을 차단하고 있습니다.
참고
클라이언트에서 <Date Time> + <Salt> 를 데이터로, API Secret을 Key로 사용하여 HMAC(Hash-based Message Authentication Code)을 만들어진 Signature를 서버로 보내면, 서버 쪽에서도 동일한 방식으로 만들어 비교하게 됩니다. API Secret은 Signature를 생성할 때만 사용하고 외부에 노출되지 않도록 주의해야 합니다.
참고
Signature는 중복사용이 불가하며 15분 안에 전송되는 요청(Request)의 Signature 값은 항상 달라야 합니다. 그래서 Salt는 매번 요청때마다 다른 문자열로 변경하여 요청 시간대가 같아도 항상 Signature가 다른 값으로 생성되도록 합니다.
InvalidAPIKey
유효한 API Key가 아님
HTTP Status Code: 403
SignatureDoesNotMatch
생성한 Signature가 일치하지 않음
HTTP Status Code: 403
RequestTimeTooSkewed
시간 값이 서버 시간을 15분 이상 벗어남
HTTP Status Code: 403
DuplicatedSignature
15분 안에 동일한 signature 값
HTTP Status Code: 403
메시지 API v4.0 부터 OAuth2 를 통한 인증을 제공합니다.
Authorization 헤더정보를 전달하는 방식은 HTTP에서 인증을 위한 수단으로 널리 사용되고 있습니다. 을 참고하세요.
쿨에스엠에스 페이지에서 API Key와 API Secret을 생성하여 REST API 호출에 사용합니다.
날짜와 시간을 표현하는데 있어서 시차와 표기법이 틀릴 수 있으므로 혼돈이 없도록 국제규격 ISO 8601을 따릅니다. 을 참고하세요.
메시지의 무결성 검증(인증)을 위한 용도로 Signature 생성 및 검증에 Hash기반의 MAC 알고리즘을 사용하고 있습니다. 을 참고하세요.
2008년을 시작으로 12년간의 서비스 개발 및 운영 경험을 담은 메시지 발송 API에 대한 문서입니다.
인증을 통해 COOLSMS가 제공하는 API를 사용하는 경우 서버는 5가지의 조건을 따지게 됩니다. 조건은 아래와 같습니다.
COOLSMS의 계정은 여러 가지의 상태를 가질 수 있습니다. 상태는 ACTIVE
, INACTIVE
, DELETED
가 존재합니다.
ACTIVE
: 사용 가능 상태. 대부분의 계정은 ACTIVE
상태를 유지합니다.
INACTIVE
: 휴면 계정 상태. 1년 동안 사용 기록이 없는 계정은 이용약관에 따라 휴면 상태가 됩니다. 이때는 계정에 속한 회원이 인증을 통해 다시 ACTIVE
상태로 돌릴 수 있습니다.
DELETED
: 삭제된 계정. 계정의 OWNER
혹은 관리자에 의해서 삭제된 계정입니다. 복구가 불가능하며 모든 서비스를 이용할 수 없습니다.
계정에 속한 회원은 여러 가지의 상태를 가질 수 있습니다. 상태는 UNVERIFIED
, ACTIVE
, INACTIVE
, DELETED
가 존재합니다.
UNVERIFIED
: 아직 EMAIL 인증이 안된 회원입니다.
ACTIVE
: 사용 가능 상태. 대부분의 회원 ACTIVE
상태를 유지합니다.
INACTIVE
: 휴면 회원 상태. 1년 동안 사용 기록이 없는 회원은 이용약관에 따라 휴면 상태가 됩니다. 인증을 통해 다시 ACTIVE
상태로 돌릴 수 있습니다.
DELETED
: 삭제된 회원. 본인 혹은 관리자에 의해서 삭제된 계정입니다. 복구가 불가능하며 모든 서비스를 이용할 수 없습니다.
회원은 계정을 사용하기 전 계정을 누가 사용하는지 증명해야 됩니다. 인증은 개인 인증
, 사업자 인증
총 2가지가 존재합니다. 계정 인증을 마치지 않은 회원은 API 사용에 제한이 있을 수 있습니다.
Github Repository
Github Repository
COOLSMS에서는 공식 사이트() 이외에도 사용자(혹은 개발자)가 서비스를 이용할 수 있도록 API를 제공하고 있습니다. 제공된 API를 사용하기 위해서는 자신이 누구인지(COOLSMS 앱의 경우에는 앱 사용자를 대신해서) 알리기 위해서 몇 가지 인증 방식을 사용하여 정보를 제공해야 됩니다. 그 과정을 Authorization이라고 합니다.
Authorization은 인증 방식을 통합적으로 나타내는 말이기도 합니다. COOLSMS에서는 직접연동인 과 , 총 두 가지 인증 방식을 제공합니다.
OAuth2를 사용하려고 하는 앱 개발자에게만 해당되는 내용입니다.
COOLSMS는 정식 서비스 이외에도 문자 서비스를 제공하는 앱(이하 서드파티 앱)을 만들 수 있도록 설계되어 있습니다. 서드파티앱은 하며 개발자가 원한다면 할 수 있습니다. 또한 개발자는 COOLSMS와 수익을 공유하게 됩니다.
서드파티앱을 만들 경우 개발자는 앱 사용자로부터 사용자 대신 사용자의 정보(예: 캐쉬 정보)를 얻을 수 있는 권한이나 계정을 활용(예: 문자 보내기) 할 수 있는 권한을 요청할 수 있습니다. 각각의 API는 필요로 하는 권한이 있으며 앱 개발자가 사용자에게 요청을 하지 않은 경우 혹은 요청을 했지만 허용하지 않은 경우 사용이 불가합니다. 권한을 많이 요청할 수록 COOLSMS가 제공하는 많은 기능과 API들을 활용할 수 있지만 무분별한 권한 요청은 오히러 사용자가 앱 사용을 꺼려할 수 있습니다. 자세한 내용은 을 참고 해주세요.
COOLSMS 서비스는 계정과 회원이 존재하며 계정은 마치 그룹과 같아 여러 회원들이 속해 있을 수 있습니다. 그리고 계정에 속한 회원들은 각자의 역할을 가지며 그 역할에 따라 계정에 영향을 미칠 수 있는 정도가 나뉩니다. 역할은 크게 OWNER
, DEVELOPER
, MEMBER
총 3개로 나뉩니다. 만약 사용자가 계정을 사용할 때 충분한 권한이 없다면 사용이 제한됩니다. 자세한 내용은 을 참고 해주세요.
Github Repository
Github Repository
Scope 명
Scope 설명
접근 가능 APIs
앱에서 사용가능 여부
users:read
캐쉬 정보를 포함한 사용자의 정보를 가져옵니다.
userinfo
O
senderid:read
발신번호 조회
senderid
O
role-senderid:read
발신번호 조회(멤버권한)
senderid
senderid:write
발신번호 등록 / 갱신 / 삭제
senderid
O
role-senderid:write
발신번호 등록 / 갱신 / 삭제(멤버권한)
message:write
메시지 발송
messages
O
role-message:write
메시지 발송(멤버권한)
message:read
메시지 상태 및 통계 조회
messages
O
role-message:read
메시지 상태 및 통계 조회(멤버 권한)
messages
cash:read
신용카드 정보, 출금 계좌, 잔액 조회
cash
O
role-cash:read
신용카드 정보, 출금 계좌, 잔액 조회(멤버권한)
cash
cash:write
신용카드 등록, 출금 계좌 등록, 충전
cash
O
role-cash:write
신용카드 등록, 출금 계좌 등록, 충전(멤버)
cash
role-appstore:read
앱 조회(멤버권한)
appstore
role-appstore:write
앱 등록 / 수정 / 삭제(멤버권한)
appstore
pricing:read
계정 단가 조회
pricing
O
role-pricing:read
계정 단가 조회(멤버권한)
pricing
role-oauth2:read
Client 정보 조회(멤버권한)
oauth2
role-oauth2:write
Redirect URI 등 Client 정보 업데이트(멤버권한)
oauth2
role-credentials:read
API Key 조회(멤버권한)
credentials
role-credentials:write
API Key 발급(멤버권한)
credentials
notification:read
알림 내역 조회
notification
O
role-notification:read
알림 내역 조회(멤버권한)
notification
role-notification:write
알림 차단(멤버권한)
notification
coolog:read
계정 로그 조회
coolog
O
role-coolog:read
계정 로그 조회(멤버권한)
coolog
storage:read
계정 파일 조회
storage
O
role-storage:read
계정 파일 조회(멤버권한)
storage
storage:write
계정 파일 업로드
storage
O
role-storage:write
계정 파일 업로드(멤버권한)
storage
iam:read
계정 인증정보 조회
iam
O
role-iam:read
계정 인증정보 조회(멤버권한)
iam
iam:write
계정 인증정보 추가
iam
O
role-iam:write
계정 인증정보 추가(멤버권한)
iam
accounts:read
계정 정보 조회
users
O
images:read
이미지 조회
images
O
role-images:read
이미지 조회(멤버권한)
images
images:write
이미지 업로드
images
O
role-images:write
이미지 업로드(멤버권한)
images
kakao:read
카카오톡 정보 조회
kakao
O
kakao:write
카카오톡 정보 추가 및 수정
kakao
O
role-kakao:read
카카오톡 정보 조회(멤버권한)
kakao
role-kakao:write
카카오톡 정보 추가 및 수정(멤버권한)
kakao
Github Repository
Github Repository
Java, Python, Ruby는 예제 코드로 제공되고 있습니다.
Github Repository
NPM Package
Github Repository
OAuth 2는 개발자가 새롭게 만든 어플리케이션 이나 웹 사이트에서 사용자의 비밀번호와 같은 민감한 정보를 넘기지 않고 사용자가 허용한 권한 만큼의 기능만을 접근할 수 있는 인증 방식입니다.
실제로 쿨에스엠에스의 OAuth2를 사용하여 웹 어플리케이션을 개발한 예가 있으니 아래 링크를 참고하시면 보다 쉽게 OAuth2를 적용하실 수 있으실 겁니다.
개발하신 웹 사이트 또는 어플리케이션 에서 쿨에스엠에스 로그인을 호출하기 위해 아래의 링크와 쿼리 파라미터 값을 추가하여 호출해주셔야 합니다.
필요한 GET 쿼리 파라미터는 아래와 같으며 필드에 따라서 필수항목과 옵션 항목들이 있습니다.
Name
Type
Required
Desc
client_id
String
true
앱 생성시 발급받은 Client ID
response_type
String
true
Access Token 값을 바로 발급받을 수 있는 'token'
Authorization Code 값을 발급받을 수 있는 'code'
state
String
true
OAuth2 서버에서 각각의 요청을 구분짓는 구별 키
// rseponse_type이 token일 경우 { access_token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ZwUymzWAUiTxQ...', refresh_token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ZwUymzWAUiTxQ...' }
필요한 POST body 파라미터는 아래와 같으며 필드에 따라서 필수항목과 옵션항목들이 있습니다.
Name
Type
Required
Desc
grant_type
String
true
'authorization_code', 'refresh_token' 값이 있으며
토큰을 발급받을 방법에 맞게 설정가능
code
String
false
grant_type이 'authorization_code'일 때 필수값으로
Step 1에서 발급받은 authorization_code 값
client_id
String
false
grant_type이 'authorization_code'일 때 필수값으로
앱 생성시 발급받은 Client ID 값
client_secret
String
false
grant_type이 'authorization_code'일 때 필수값으로
앱 생성시 발급받은 Client Secret 값
redirect_uri
String
false
grant_type이 'authorization_code'일 때 필수값으로
앱 생성시 입력하였던 Redirect URI 값
refresh_token
String
false
grant_type이 'refresh_token'일 경우 필수값으로
첫 Access Token 발급 시 받았던 값
위에서 발급받은 엑세스 토큰을 사용하여 아래와 같이 쿨에스엠에스의 API를 이용할 수 있습니다.
위의 예제처럼 요청하려는 HTTP Request 의 Header 에 Authorization 값을 넣어주면 됩니다. 예를 들어 요청하려는 API 가 간단한 유저정보를 가져오는 API 라고 한다면 아래와 같이 할 수 있습니다.
개발한 서비스나 앱을 등록하여 클라이언트의 아이디와 비밀번호를 발급받습니다.
개발한 서비스에 Step1 사용자 인증을 하도록 연동합니다.
로그인을 통한 쿨에스엠에스 계정 인증을 합니다.
개발한 서비스에서 필요한 권한에 대한 사용자의 인가를 받습니다.
인가된 권한이 포함된 액세스 토큰을 발급받습니다.
발급받은 액세스 토큰을 Request Header에 넣어 쿨에스엠에스 API 를 호출합니다.
이미 발급받은 엑세스 토큰에 대한 유효시간이 만료된 경우, 액세스 토큰과 같이 발급받았던 재사용 토큰을 사용하여 다시액세스 토큰을 발급받을 수 있습니다. 재사용 토큰을 사용하여 /oauth2/v1/access_token
에 아래와 같이 http request 요청합니다.
OAuth2 인증시 어플리케이션에서 요구하는 권한과 실제로 사용자가 인가한 권한이 다른경우에 액세스 토큰을 사용할 경우 권한에 대한 에러가 나올수 있습니다. 이에 대한 적절한 에러 처리를 해주셔야 어플리케이션에서 문제없이 서비스 운영이 가능합니다.
예를 들어서, 어플리케이션에서 필요한 권한이 accounts:read users:read
이라고 가정하고, 인증을 하였는데 사용자가 인가한 권한이 accounts:read
일때 클라이언트에서 users:read
에 대한 API 를 접근하려고 하면 Unauthorized
에러가 발생하여 문제가 발생합니다.
이런 문제가 발생하지 않도록 어플리케이션에서는 이에 대한 에러 처리를 하거나 사용자로 하여금 권한 부족으로 서비스 사용에 문제가 있을수 있다는 메시지를 적절히 알려주어야 합니다.
우선 시작하기에 앞서, 이미 개발된 서비스나 을 하셔야 합니다. 등록이 정상적으로 완료된다면, 클라이언트의 아이디와 클라이언트의 시크릿 코드를 사용하여 인증 절차를 시작하실수 있습니다. 클라이언트 시크릿 코드는 처음 생성시에만 보이니 보관 및 노출에 유의하여 주세요.
보다 자세한 API References는 를 참고 부탁드립니다.
정상적으로 결과가 온다면 해당 멤버 정보 데이터를 가져왔을것입니다. 를 통해 사용가능한 API 를 확인할 수 있습니다.
사용자 인증시 입력하는 state
는 에 대해 방지할수 있습니다.
state
값은 인증과정에서 nonce
역할을 합니다.
nonce
란 어떤 요청 중에 일시적인 key
역할을 하는 단어를 말합니다.
아래의 이미지에서는 state
값에 대한 역할을 보여주고 있습니다.
그룹메시지는 대량메시지 뿐만 아니라 소량의 메시지도 안전하게 발송할 수 있는 메커니즘을 제공합니다.
대량의 메시지를 발송 요청하는 프로그램 내에서 루프를 돌며 서버에 발송 요청을 합니다. 이 과정에서 프로그램의 오류 혹은 일시적인 네트워크 오류로 메시지의 누락이 발생할 수 있습니다.
일반적으로 아래의 단계를 거치면서 안전하게 발송 할 수 있습니다. : 그룹생성 > 메시지추가 > 리뷰 > 발송
그룹생성 단계에서는 메시지를 담을 바구니를 하나 생성한다고 생각하시면 됩니다.
그 바구니(그룹)에 메시지를 추가하고 제대로 담겼는지 확인(리뷰) 후 발송하는 순서입니다. 발송 단계에서는 발송 스위치만 켜는 역할로 이미 발송하려는 메시지 내용이 모두 서버에 전송되고 리뷰가 완료된 상태입니다.
GitHub Repository
간단한 웹 문자 발송 어플리케이션을 만들어보도록 하겠습니다.
다양한 서비스들에서 네이버 로그인, 구글 로그인, 페이스북 로그인, 카카오 로그인 등등 SNS나 다른 서비스를 이용한 소셜 로그인을 하는 것을 보셨을겁니다.
이러한 소셜 로그인을 지원하는 이유는 서비스 운영면에서 보았을 때 계정 관리를 신뢰할 수 있는 외부 서비스에 맡길 수 있다는 점에서 관리가 줄어들고 보안적으로도 더 안전해집니다.
제가 사용하려는 쿨에스엠에스 또한 이러한 OAuth 2 서비스를 제공하고 있습니다.
index.js 파일을 만들고 간단하게 서버를 구현해봅니다.
서버의 port는 8080으로 하였습니다.
이제 서버를 직접 실행해봐야 합니다.
npm init을 통해 생성된 package.json에서 npm start 명령을 설정하고
터미널에서 실행해봅니다.
성공적으로 실행이 되었다면 console에 다음과 같이 출력됩니다.
앱 등록을 먼저 완료해야 합니다.
EJS를 설치합니다.
먼저 views/index.ejs 파일을 하나 만들고
index.js에서 view engine을 설정하고 라우팅을 잡아줍니다.
현재 상태에서 버튼을 누르면 아직 form action에 해당되는 /login 라우트를 잡아주지 않았기 때문에 오류가 발생할 것 입니다.
이제 /login 라우트를 잡아줍니다.
이때 넘겨주는 파라미터 값은 앱 생성 시 발급받은 값들로 넣어주시면 됩니다.
저희의 경우 메시지 발송만 할 것이기 때문에 scope는 message:write 만 사용할 것 입니다.
저장 후 다시 쿨에스엠에스 로그인 버튼을 누르면 이렇게 로그인 페이지가 나옵니다. 만약 이미 로그인이 되어 있다면 로그인은 생략됩니다.
로그인에 성공하면 다음과 같이 권한 요청 페이지가 나옵니다.
이 페이지에서는 해당 앱이 사용자들에게 어떤 권한들을 요청하는지 볼 수 있으며 승인을 하게 되면 앱 개발자가 해당 사용자의 허용된 권한에 한해서 정보를 사용할 수 있습니다.
아까 말한 것처럼 메시지 발송만 하는 앱 이기에 scope는 message:write 만 사용할 것 입니다.
승인을 하면 설정한 redirectUri로 code가 발급됩니다.
하지만 마찬가지로 아직 라우트를 잡아주지 않았기 때문에 아래와 같은 에러가 발생합니다.
accessToken을 발급 받기 위해 아래와 같은 파라미터를 이용해 HTTP Request를 보냅니다.
grant_tyep의 경우 authorizationCode를 사용하기 때문에 값을 authorization_code로 고정시켜 둡니다.
code의 경우는 redirect 될 시에 query 값으로 넘어오기 때문에 req.query로 받아줍니다.
마찬가지로 client_id, client_secret, redirect_uri는 앱 생성 시 발급받은 값들로 넣어주시면 됩니다.
result를 console.log 로 값을 확인해봅니다.
성공 시 result 값은 다음과 같습니다.
이제 이 access_token을 저장하여(쿠키나 SessionStorage 등) 후에 쿨에스엠에스 API들에 요청을 보낼 때에 토큰을 헤더에 실어서 보내면 정상적으로 API 인증처리가 완료됩니다.
설치 후에 사용은 다음과 같이 합니다.
이제 받아온 access_token을 쿠키에 저장합시다.
쿠키 이름은 APP_COOKIE로 하였으나 원하는 이름으로 지정할 수 있습니다.
이제 토큰을 받았으니 토큰을 이용해서 발송을 하는 페이지로 이동해 줍니다.
send 라우트에서는 문자 발송 기능을 담당합니다.
post의 /send에서는 문자를 발송하는 요청을 할 것입니다.
from, to, text는 form에서 보내주어 req.boby에서 가져오고,
header에 토큰 정보가 들어가야 하기 때문에 req.cookies에서 토큰 정보인 APP_COOKIE를 가져옵니다.
특히 앱 아이디를 넣은 경우는 발송 내역에도 앱 아이디가 나오므로 정상적으로 들어갔는지 확인하시면 됩니다.
이렇게 쿨에스엠에스 OAuth2 연동 Node & Express를 이용하여 앱 만들기가 완료되었습니다.
지금부터 발송 건마다 쌓여가는 수익금을 확인해보세요.
정산은 매달 10일 오전 11시에 이루어지며, 정산된 금액은 언제든지 계좌로 출금이 가능합니다.
계좌 등록 후 출금할 금액을 입력하고 예상 출금 금액을 확인한 뒤 출금 요청 버튼을 누릅니다.
요청이 완료 되었으면 이렇게 대기중으로 표시됩니다.
몇일 후 메일을 확인해보니 이렇게 출금 처리 알림 메일이 도착하였습니다.
실제로 은행 어플에서 확인해보니 수수료를 제외한 금액이 입금 된 것을 확인할 수 있었습니다.
로그인은 의 OAuth2를, 개발 언어는 NodeJS를 사용하였습니다.
OAuth 2의 내부 흐름은 에서도 확인할 수 있습니다.
먼저 로 OAuth 2 및 문자 전송 등 앱의 전반적인 기능을 담당할 서버를 구현합니다.
작업 폴더를 하나 만들고 셋팅을 합니다.
서버로는 Node의 대표 서버 모듈인 를 사용합니다.
코드가 수정될 때마다 서버를 재시작 해야하는 귀찮은 점을 방지하고자 도 사용해줍니다.
웹 페이지를 띄워주기 위해 템플릿 엔진을 사용하였습니다. 템플릿 엔진은 , 등 아무거나 사용해도 무관합니다.
저장 후 성공적으로 반영 되었다면 로 접속 시 다음과 같은 페이지가 출력됩니다.
/login에서는 accessToken을 발급 받기 위한 authorizationCode를 발급 받기 위해 들을 로 넘겨줘야 합니다.
더 많은 기능을 사용하기 위해서는 를 참고하여 추가로 입력해 주시기 바랍니다.
/authorize 에서는 넘겨받은 authorizationCode로 accessToken을 발급 받는 작업을 합니다.
먼저 API Request를 하기 위해 와 를 설치합니다
이 예제에서는 를 사용하도록 하겠습니다.
express의 post 요청에서 body 값을 가져오려면 미들웨어를 설치하고 적용해야 합니다.
이제 로 가서 순서대로 로그인부터 발송까지 진행해 보시면 아래와 같은 결과값을 보실 수 있습니다.
쿨에스엠에스 에서도 확인이 가능합니다.
발송에 성공하면 페이지에서 아래와 같이 정산 받을 금액을 확인할 수 있습니다.
실제로 한달 뒤 10일에 메일로 정산 알림이 와서 쿨에스엠에스 사이트의 으로 들어가보니 수익금이 들어온 것을 확인할 수 있었습니다.
정산된 수익금은 위에서 언급한대로 자유롭게 출금이 가능하기 때문에 으로 가서 제 계좌로 출금을 해보았습니다.
인증문자와 같은 한 건의 메시지 발송은 심플 메시지 를 사용하고 두 건 이상의 대량 메시지를 안전하고 빠르게 발송 하려면 그룹 메시지 를 사용합니다.
쿨에스엠에스의 REST API Reference 내용을 담고 있습니다.
https://api.coolsms.co.kr/<ServiceName>/<Version>/<ResourcePath>
<ServiceName>
서비스 이름(messages, kakao, cash, senderid, ...)
<Version>
서비스 버전
<ResourcePath>
필요시 특정 리소스 경로를 나타냅니다
API Request 시 파라메터 값과 Response 의 데이터 값은 JSON 형식으로 합니다. 모든 Request 에 Content-type 을 application/json 으로 설정하여 주세요.
Operator(이하 오퍼레이터)는 COOLSMS에서 제공하는 고급 기능으로써 특정 정보를 검색하고자 URL Query Parameter를 사용할 때 자세하고 질 높은 Query를 작성할 수 있도록 도와줍니다. 또한 API를 통해 COOLSMS 서비스를 이용하고자 할 경우 숙지해야 될 기능입니다.
오퍼레이터는 eq
, ne
, like
, gte
, lte
, gt
, lt
총 7가지 종류가 있습니다.
이름
설명
어떤 오퍼레이터도 사용하지 않았다면 eq를 사용했을 때와 같은 일을 수행합니다.
eq
Eqaul의 약자입니다. 값과 동일한 대상을 찾을 때 사용됩니다.
ne
Not Eqaul의 약자입니다. 값과 동일하지 않은 대상을 찾을 때 사용됩니다.
like
값을 포함하는 대상을 찾을 때 사용됩니다.
gte
값을 포함하거나 높은 대상을 찾을 때 사용됩니다. 대부분은 날짜를 검색할 때 사용됩니다.
lte
값을 포함하거나 낮은 대상을 찾을 사용됩니다. 대부분은 날짜를 검색할 때 사용됩니다.
gt
값보다 높은 대상을 찾을 사용됩니다. 대부분은 날짜를 검색할 때 사용됩니다.
lt
값보다 낮은 대상을 찾을 사용됩니다. 대부분은 날짜를 검색할 때 사용됩니다.
eq 오퍼레이터가 사용 불가능 하다면 아무 오퍼레이터를 쓰지 않는 것도 불가능합니다.
위의 내용을 요약하자면 아래와 같습니다.
URL & Query
Operator
설명
특정 목록을 불러온다
title[like]=걸리버
like
'title'은 '걸리버'를 포함한다
title[ne]=걸리버여행기
ne
'title'은 '걸리버여행기'가 아니다
author=스위프트
eq
'author'는 '스위프트'이다.
dateCreated[gte]=2017-06-24
gte
'dateCreated'는 2017년 6월 24일 이후 (당일 포함)
dateCreated[lt]=2017-07-12
lt
'dateCreated'는 2017년 7월 12일 이전 (당일 미포함)
dateUpdated[gt]=2018-02-19
gt
'dateUpdated'는 2018년 2월 19일 이후 (당일 미포함)
dateUpdated[lte]=2018-03-20
lte
'dateUpdated'는 2018년 3월 20일 이전 (당일 포함)
Response 의 HTTP Status Code 값이 200 일 때 API 는 정상적으로 호출되었고 Response 의 Body 에 적절한 데이터가 리턴됩니다.
참고 REST는 Representational State Transfer의 약자로 API 연동 규격을 명확하게 정의되고 쉽게 구현 할 수 있습니다.
쿨에스엠에스 SMS REST API 서버로 Request를 보내기 위해서 인증을 거쳐야 합니다. 과 소셜로그인으로 불리우는 을 지원하고 있습니다.
HTTP Status Code 200 이외의 값의 경우 오류로써 보통의 경우 errorCode 와 errorMessage 이 함께 리턴됩니다. 각 API 마다 정의된 오류코드는 다르지만 공통적으로 리턴될 수 있는 코드는 를 참고하세요.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
message:read
role-message:read
ACTIVE
ACTIVE
Name
Description
:groupId
메시지 그룹 아이디
Name
Type
Required
Description
startKey
string
eq
현재 목록을 불러올 기준이 되는 키
limit
number
eq
한 페이지에 불러옥 목록 개수
Allowed Operator
하나의 메시지를 발송합니다. 2개 이상의 메시지는 그룹 메시지를 사용하세요.
전송 내역(메시지 그룹, 메시지 목록)의 보관기간은 생성일 기준 6개월 입니다. 6개월이 지난 내역은 조회가 불가능합니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
message:write
role-message:write
ACTIVE
ACTIVE
Name
Type
Required
Description
object
O
메시지에 대한 정보
strict
boolean
설명 없음
object
에이전트
Name
Type
Required
Description
to
string
O
수신번호
from
string
O
발신번호 사전 등록된 전화번호만 사용 가능
text
string
메시지 내용 한글 1,000자, 영문 2,000자 제한
type
string
메시지 타입
country
string
국가번호 (기본: 82, 미국(캐나다):1, 중국: 86, 일본: 81)
subject
string
메시지 제목 한글 20자, 영문 40자 제한
imageId
string
object
친구톡, 알림톡을 보내기 위한 옵션
object
네이버 스마트 알림을 보내기 위한 옵션
object
설명 없음
object
확장 필드로 사용. 키는 30자, 값은 100자 제한
autoTypeDetect
boolean
타입 설정이 없을 경우 자동으로 설정함. 기본 값은 true
Name
Type
Required
Description
pfId
string
테스트에서 발급된 카카오톡 채널의 연동 아이디
pfGroupId
string
설명 없음
title
string
설명 없음
adFlag
boolean
설명 없음
templateId
string
알림톡 템플릿 아이디
disableSms
boolean
대체 발송 여부
imageId
string
object
설명 없음
array
알림톡 템플릿 버튼 목록
Name
Type
Required
Description
Name
Type
Required
Description
buttonName
string
O
버튼 이름
buttonType
string
O
버튼 종류(AL: 앱링크, WL: 웹링크, DS: 배송조회, BK: 키워드, MD: 전달, BC: 상담톡 전환, BT: 봇 전환, AC: 채널 추가
linkMo
string
모바일 링크(WL 웹링크)
linkPc
string
웹 링크(WL 웹링크)
linkAnd
string
안드로이드 링크(AL 앱링크)
linkIos
string
IOS 링크(AL 앱링크)
Name
Type
Required
Description
talkId
string
설명 없음
templateId
string
알림톡 템플릿 아이디
disableSms
boolean
대체 발송 여부
object
설명 없음
array
네이버 스마트 알림 템플릿 버튼 목록
Name
Type
Required
Description
Name
Type
Required
Description
buttonType
string
O
설명 없음
linkMo
string
모바일 링크
linkPc
string
웹 링크
linkAnd
string
설명 없음
linkIos
string
설명 없음
Name
Type
Required
Description
brandId
string
설명 없음
templateId
string
알림톡 템플릿 아이디
copyAllowed
boolean
설명 없음
object
설명 없음
mmsType
string
설명 없음
commercialType
boolean
설명 없음
disableSms
boolean
대체 발송 여부
array
설명 없음
array
설명 없음
Name
Type
Required
Description
Name
Type
Required
Description
title
string
O
설명 없음
description
string
O
설명 없음
imageId
string
array
설명 없음
Name
Type
Required
Description
buttonType
string
O
설명 없음
link
string
설명 없음
latitude
string
설명 없음
longitude
string
설명 없음
label
string
설명 없음
query
string
설명 없음
title
string
설명 없음
startTime
date
설명 없음
endTime
date
설명 없음
text
string
메시지 내용 한글 1,000자, 영문 2,000자 제한
phone
string
설명 없음
Name
Type
Required
Description
buttonType
string
O
설명 없음
link
string
설명 없음
latitude
string
설명 없음
longitude
string
설명 없음
label
string
설명 없음
query
string
설명 없음
title
string
설명 없음
startTime
date
설명 없음
endTime
date
설명 없음
text
string
메시지 내용 한글 1,000자, 영문 2,000자 제한
phone
string
설명 없음
Name
Type
Required
Description
Name
Type
Required
Description
appId
string
앱 아이디
osPlatform
string
OS 플렛폼
sdkVersion
string
SDK 버전
Name
Type
Should Return
Description
groupId
string
O
그룹 아이디
messageId
string
O
메시지 아이디
accountId
string
O
계정 고유 번호
statusMessage
string
O
statusCode
string
O
to
string
O
수신번호
from
string
O
발신번호 사전 등록된 전화번호만 사용 가능
type
string
O
메시지 타입
country
string
O
국가번호 (기본: 82, 미국(캐나다):1, 중국: 86, 일본: 81)
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
문서 생성일 : 2021-07-14
홈페이지의 에서 전송결과 내역을 확인하실 수 있습니다. (로그인 필요)
Storage API에 등록된 이미지 아이디
Storage API에 등록된 이미지 아이디
Storage API에 등록된 이미지 아이디
상태 메시지
상태 코드
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
message:write
role-message:write
ACTIVE
ACTIVE
Name
Type
Required
Description
Name
Type
Required
Description
잔액 조회 및 충전 관련 API를 제공합니다.
Name
Type
Required
Description
appId
string
앱 아이디
strict
boolean
설명 없음
sdkVersion
string
SDK 버전
osPlatform
string
OS 플렛폼
object
확장 필드로 사용. 키는 30자, 값은 100자 제한
object
설명 없음
allowDuplicates
boolean
설명 없음
메시지의 목록을 조회합니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
message:read
role-message:read
ACTIVE
ACTIVE
Name
Type
Required
Description
criteria
string
eq
검색 조건에 사용되는 필드명 criteria 의 값은 'key1,key2,key3' 과 같이 ,(콤마) 로 구분되며 cond, value 와 함께 사용됩니다. - messageId - 메시지 아이디 입니다. - groupId - 그룹 아이디 입니다. - to - 수신 번호 입니다. - from - 발신 번호 입니다. - type - 문자 메시지의 타입 입니다. (SMS, LMS, MMS, ATA, CTA, CTI) - dateCreated - 그룹 생성일 입니다. - dateUpdated - 그룹 정보를 변경한 마지막 시각 입니다. - replacement - 대체 발송 여부 입니다. (true, false) - statusCode - 문자 메시지의 상태 코드 입니다.
cond
string
eq
검색 조건에 사용되는 연산자 criteria 와 같이 'cond1,cond2' 와 같이 ,(콤마)로 구분되며, criteria,value 와 함께 사용됩니다. - eq - 같음 (=) - ne - 같지 않음 (!=) - gt - 보다 큼 (>) - gte - 보다 크거나 같음 (>=) - lt - 보다 작음 (<) - lte - 보다 작거나 같음 (<=)
value
string
eq
검색 값 criteria , cond 값에 대응하는 value 입니다. criteria='messageId,statusCode' cond='eq,eq' 일 경우 groupId 에 대응하는 value 값을 찾고 status 에 대응하는 값을 찾는 조건 입니다. e.g - value='메시지아이디,2000'
startKey
string
eq
현재 목록을 불러올 기준이 되는 키
limit
number
eq
한 페이지에 불러옥 목록 개수
dateType
string
eq
설명 없음
startDate
date
eq
검색 시작 날짜
endDate
date
eq
검색 끝 날짜
messageId
string
eq
메시지 아이디
messageIds
array
eq, in
메시지 아이디 목록
groupId
string
eq
메시지 그룹 아이디
to
string
eq
수신번호
from
string
eq
발신번호 사전 등록된 전화번호만 사용 가능
type
string
eq, in
메시지 타입
statusCode
string
eq, in
dateCreated
date
eq
최초 생성 날짜
dateUpdated
date
eq
최근 수정 날짜
Sample Request
Sample Response
Sample Code
문서 생성일 : 2021-07-14
Maven Repository
Github Repository
그룹에 속한 메시지 일부분을 삭제합니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
message:write
role-message:write
ACTIVE
ACTIVE
Name
Description
:groupId
메시지 그룹 아이디
Name
Type
Required
Description
messageIds
array
O
메시지 아이디 목록
Sample Request
Sample Response
Sample Code
문서 생성일 : 2021-07-14
메시지 그룹의 정보를 조회합니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
message:read
role-message:read
ACTIVE
ACTIVE
Name
Description
:groupId
메시지 그룹 아이디
Name
Type
Should Return
Description
object
카운트
number
잔액
number
포인트
object
앱 정보
sdkVersion
string
SDK 버전
osPlatform
string
OS / Platform
Array
로그
status
any
그룹 상태 PENDING - 대기중 SENDING - 이미 발송 요청된 그룹 DELETED - 삭제 처리된 그룹 FAILED - 실패 처리된 그룹 COMPLETE - 발송 완료된 그룹 SCHEDULED - 발송 예약된 그룹
scheduledDate
date
설명 없음
dateSent
date
발송 일시
dateCompleted
date
완료 일시
isRefunded
boolean
환급 여부
flagUpdated
boolean
업데이트 여부
groupId
string
그룹 아이디
accountId
string
계정 고유 번호
apiVersion
string
API 버전
object
차감 카운트
any
단가
dateCreated
date
생성 일시
dateUpdated
date
업데이트 일시
Name
Type
Should Return
Description
total
number
토탈
sentTotal
number
전체 발송 건수
sentFailed
number
발송 실패 건수
sentSuccess
number
발송 성공 건수
sentPending
number
대기 건수
sentReplacement
number
대체 발송 건수
refund
number
환급 건수
registeredFailed
number
접수 실패 건수
registeredSuccess
number
접수 성공 건수
Name
Type
Should Return
Description
requested
number
차감 금액
replacement
number
대체 발송 금액
refund
number
환급 금액
sum
number
합계 금액
Name
Type
Should Return
Description
requested
number
차감 포인트
replacement
number
대체 발송 포인트
refund
number
환급 포인트
sum
number
합계 포인트
Name
Type
Should Return
Description
object
앱 사용 요금
appId
string
앱 아이디
version
string
앱 버전
Name
Type
Should Return
Description
sms
number
SMS 사용 요금
lms
number
LMS 사용 요금
mms
number
MMS 사용 요금
ata
number
알림톡 사용 요금
cta
number
친구톡 사용 요금
cti
number
친구톡 이미지 사용 요금
nsa
number
네이버 스마트 알림 사용 요금
rcs_sms
number
RCS SMS 사용 요금
rcs_lms
number
RCS LMS 사용 요금
rcs_mms
number
RCS MMS 사용 요금
rcs_tpl
number
RCS 템플릿 사용 요금
Name
Type
Should Return
Description
message
object
로그 메시지
createAt
date
로그 기록 일시
Name
Type
Should Return
Description
object
SMS 차감 건수
object
LMS 차감 건수
object
MMS 차감 건수
object
알림톡 차감 건수
object
친구톡 차감 건수
object
친구톡 이미지 차감 건수
object
네이버 스마트 알림 차감 건수
object
RCS SMS 차감 건수
object
RCS LMS 차감 건수
object
RCS MMS 차감 건수
object
RCS 템플릿 차감 건수
Name
Type
Should Return
Description
country
number
국가별 SMS 차감 건수
Name
Type
Should Return
Description
country
number
국가별 LMS 차감 건수
Name
Type
Should Return
Description
country
number
국가별 MMS 차감 건수
Name
Type
Should Return
Description
country
number
국가별 알림톡 차감 건수
Name
Type
Should Return
Description
country
number
국가별 친구톡 차감 건수
Name
Type
Should Return
Description
country
number
국가별 친구톡 이미지 차감 건수
Name
Type
Should Return
Description
country
number
국가별 네이버 스마트 알림 차감 건수
Name
Type
Should Return
Description
country
number
국가별 RCS SMS 차감 건수
Name
Type
Should Return
Description
country
number
국가별 RCS LMS 차감 건수
Name
Type
Should Return
Description
country
number
국가별 RCS MMS 차감 건수
Name
Type
Should Return
Description
country
number
국가별 RCS 템플릿 차감 건수
Name
Type
Should Return
Description
Sample Request
Sample Response
Sample Code
문서 생성일 : 2021-07-14
카카오톡채널의 목록을 조회합니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
kakao:read
role-kakao:read
Name
Type
Required
Description
pfId
string
eq
카카오톡채널 고유 아이디
searchId
string
eq, ne, like
카카오톡채널 검색용 아이디
phoneNumber
string
eq, ne, like
핸드폰 번호
categoryCode
string
eq
카카오톡채널 카테고리 코드
dateCreated
date
eq, gte, lte, gt, lt
최초 생성 날짜
dateUpdated
date
eq, gte, lte, gt, lt
최근 수정 날짜
startKey
string
eq
현재 목록을 불러올 기준이 되는 키
limit
number
eq
한 페이지에 불러옥 목록 개수
Sample Request
Sample Response
Sample Code
문서 생성일 : 2021-01-29
메시지 그룹 목록을 조회합니다.
Sample Request
Sample Response
Sample Code
문서 생성일 : 2021-07-14
하나 이상의 메시지를 발송합니다. 대량 발송은 그룹 메시지를 사용하세요.
전송 내역(메시지 그룹, 메시지 목록)의 보관기간은 생성일 기준 6개월 입니다. 6개월이 지난 내역은 조회가 불가능합니다.
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
문서 생성일 : 2021-07-14
Allowed Operator
상태 코드
Allowed Operator
홈페이지의 에서 전송결과 내역을 확인하실 수 있습니다. (로그인 필요)
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
message:read
role-message:read
ACTIVE
ACTIVE
Name
Type
Should Return
Description
total
number
토탈
sentTotal
number
전체 발송 건수
sentFailed
number
발송 실패 건수
sentSuccess
number
발송 성공 건수
sentPending
number
대기 건수
sentReplacement
number
대체 발송 건수
refund
number
환급 건수
registeredFailed
number
접수 실패 건수
registeredSuccess
number
접수 성공 건수
Name
Type
Should Return
Description
requested
number
차감 금액
replacement
number
대체 발송 금액
refund
number
환급 금액
sum
number
합계 금액
Name
Type
Should Return
Description
requested
number
차감 포인트
replacement
number
대체 발송 포인트
refund
number
환급 포인트
sum
number
합계 포인트
Name
Type
Should Return
Description
sms
number
SMS 사용 요금
lms
number
LMS 사용 요금
mms
number
MMS 사용 요금
ata
number
알림톡 사용 요금
cta
number
친구톡 사용 요금
cti
number
친구톡 이미지 사용 요금
nsa
number
네이버 스마트 알림 사용 요금
rcs_sms
number
RCS SMS 사용 요금
rcs_lms
number
RCS LMS 사용 요금
rcs_mms
number
RCS MMS 사용 요금
rcs_tpl
number
RCS 템플릿 사용 요금
Name
Type
Should Return
Description
message
object
로그 메시지
createAt
date
로그 기록 일시
Name
Type
Should Return
Description
country
number
국가별 SMS 차감 건수
Name
Type
Should Return
Description
country
number
국가별 LMS 차감 건수
Name
Type
Should Return
Description
country
number
국가별 MMS 차감 건수
Name
Type
Should Return
Description
country
number
국가별 알림톡 차감 건수
Name
Type
Should Return
Description
country
number
국가별 친구톡 차감 건수
Name
Type
Should Return
Description
country
number
국가별 친구톡 이미지 차감 건수
Name
Type
Should Return
Description
country
number
국가별 네이버 스마트 알림 차감 건수
Name
Type
Should Return
Description
country
number
국가별 RCS SMS 차감 건수
Name
Type
Should Return
Description
country
number
국가별 RCS LMS 차감 건수
Name
Type
Should Return
Description
country
number
국가별 RCS MMS 차감 건수
Name
Type
Should Return
Description
country
number
국가별 RCS 템플릿 차감 건수
Name
Type
Should Return
Description
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
kakao:write
role-kakao:write
ACTIVE
ACTIVE
O
Name
Description
:templateId
템플릿 고유 아이디
Name
Type
Required
Description
isHidden
boolean
O
설명 없음
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
kakao:write
role-kakao:write
ACTIVE
ACTIVE
O
Name
Type
Required
Description
searchId
string
O
카카오톡채널 검색용 아이디
phoneNumber
string
O
핸드폰 번호
categoryCode
string
O
카카오톡채널 카테고리 코드
token
string
O
연동 시 카카오톡으로 사용자에게 오는 토큰
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
kakao:write
role-kakao:write
ACTIVE
ACTIVE
O
Name
Type
Required
Description
searchId
string
O
카카오톡채널 검색용 아이디
phoneNumber
string
O
핸드폰 번호
categoryCode
string
O
카카오톡채널 카테고리 코드
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
message:write
role-message:write
ACTIVE
ACTIVE
Name
Type
Required
Description
appId
string
앱 아이디
osPlatform
string
OS 플렛폼
sdkVersion
string
SDK 버전
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
message:write
role-message:write
ACTIVE
ACTIVE
Name
Description
:groupId
메시지 그룹 아이디
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
kakao:write
role-kakao:write
ACTIVE
ACTIVE
O
Name
Type
Required
Description
buttonType
string
O
설명 없음
buttonName
string
O
설명 없음
linkMo
string
Mobile 주소
linkPc
string
PC 주소
linkAnd
string
Android 주소
linkIos
string
IOS 주소
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
kakao:write
role-kakao:write
ACTIVE
ACTIVE
O
Name
Description
:templateId
템플릿 고유 아이디
카카오톡채널 연동 및 템플릿 관리에 대한 API를 제공합니다.
Name
Type
Required
Description
criteria
string
eq
검색 조건에 사용되는 필드명 criteria 의 값은 'key1,key2,key3' 과 같이 ,(콤마) 로 구분되며 cond, value 와 함께 사용됩니다. - messageId - 메시지 아이디 입니다. - groupId - 그룹 아이디 입니다. - to - 수신 번호 입니다. - from - 발신 번호 입니다. - type - 문자 메시지의 타입 입니다. (SMS, LMS, MMS, ATA, CTA, CTI) - dateCreated - 그룹 생성일 입니다. - dateUpdated - 그룹 정보를 변경한 마지막 시각 입니다. - replacement - 대체 발송 여부 입니다. (true, false) - statusCode - 문자 메시지의 상태 코드 입니다.
cond
string
eq
검색 조건에 사용되는 연산자 criteria 와 같이 'cond1,cond2' 와 같이 ,(콤마)로 구분되며, criteria,value 와 함께 사용됩니다. - eq - 같음 (=) - ne - 같지 않음 (!=) - gt - 보다 큼 (>) - gte - 보다 크거나 같음 (>=) - lt - 보다 작음 (<) - lte - 보다 작거나 같음 (<=)
value
string
eq
검색 값 criteria , cond 값에 대응하는 value 입니다. criteria='messageId,statusCode' cond='eq,eq' 일 경우 groupId 에 대응하는 value 값을 찾고 status 에 대응하는 값을 찾는 조건 입니다. e.g - value='메시지아이디,2000'
startKey
string
eq
현재 목록을 불러올 기준이 되는 키
limit
number
eq
한 페이지에 불러옥 목록 개수
dateType
string
eq
설명 없음
startDate
date
eq
검색 시작 날짜
endDate
date
eq
검색 끝 날짜
Name
Type
Should Return
Description
startKey
string
현재 목록을 불러올 기준이 되는 키
limit
number
한 페이지에 불러옥 목록 개수
nextKey
string
다음 목록을 불러올 수 있는 키
object
그룹 목록
Name
Type
Should Return
Description
string
그룹 아이디
Name
Type
Should Return
Description
object
카운트
number
잔액
number
포인트
object
앱 정보
sdkVersion
string
SDK 버전
osPlatform
string
OS / Platform
Array
로그
status
any
그룹 상태 PENDING - 대기중 SENDING - 이미 발송 요청된 그룹 DELETED - 삭제 처리된 그룹 FAILED - 실패 처리된 그룹 COMPLETE - 발송 완료된 그룹 SCHEDULED - 발송 예약된 그룹
scheduledDate
date
설명 없음
dateSent
date
발송 일시
dateCompleted
date
완료 일시
isRefunded
boolean
환급 여부
flagUpdated
boolean
업데이트 여부
groupId
string
그룹 아이디
accountId
string
계정 고유 번호
apiVersion
string
API 버전
object
차감 카운트
any
단가
dateCreated
date
생성 일시
dateUpdated
date
업데이트 일시
Name
Type
Should Return
Description
object
앱 사용 요금
appId
string
앱 아이디
version
string
앱 버전
Name
Type
Should Return
Description
object
SMS 차감 건수
object
LMS 차감 건수
object
MMS 차감 건수
object
알림톡 차감 건수
object
친구톡 차감 건수
object
친구톡 이미지 차감 건수
object
네이버 스마트 알림 차감 건수
object
RCS SMS 차감 건수
object
RCS LMS 차감 건수
object
RCS MMS 차감 건수
object
RCS 템플릿 차감 건수
Name
Type
Required
Description
messages
Array
O
발송할 메시지 내용
strict
boolean
설명 없음
object
에이전트
Name
Type
Should Return
Description
groupId
string
O
그룹 아이디
messageId
string
O
메시지 아이디
accountId
string
O
계정 고유 번호
statusMessage
string
O
statusCode
string
O
to
string
O
수신번호
from
string
O
발신번호 사전 등록된 전화번호만 사용 가능
type
string
O
메시지 타입
country
string
O
국가번호 (기본: 82, 미국(캐나다):1, 중국: 86, 일본: 81)
Name
Type
Required
Description
pfId
string
O
카카오톡채널 고유 아이디
name
string
O
이름
content
string
O
템플릿 내용
array
템플릿에 들어가는 버튼들
템플릿의 정보를 수정합니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
kakao:write
role-kakao:write
ACTIVE
ACTIVE
O
Name
Description
:templateId
템플릿 고유 아이디
Name
Type
Required
Description
name
string
이름
content
string
템플릿 내용
array
템플릿에 들어가는 버튼들
Name
Type
Required
Description
buttonType
string
O
설명 없음
buttonName
string
O
설명 없음
linkMo
string
Mobile 주소
linkPc
string
PC 주소
linkAnd
string
Android 주소
linkIos
string
IOS 주소
Sample Request
Sample Response
Sample Code
문서 생성일 : 2021-01-29
결제수단을 등록합니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
cash:write
role-cash:write
ACTIVE
ACTIVE
O
ARS 전화 인증
이메일 OTP
Name
Type
Required
Description
cardNumber
string
O
카드 번호
cvc
string
O
CVC
expYear
number
O
유효기간(년)
expMonth
number
O
유효기간(월)
description
string
설명
Sample Request
Sample Response
Sample Code
문서 생성일 : 2019-10-28
메시지 발송, 출금등으로 변동 된 잔액 내역을 조회합니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
cash:read
role-cash:read
Name
Type
Required
Description
offset
number
eq
검색 시작 지점
limit
number
eq
한 페이지에 불러옥 목록 개수
startDate
string
eq
검색 날짜 시작 범위
endDate
string
eq
검색 날짜 끝 범위
type
string
eq
충전 및 차감 타입
groupId
string
eq
메시지 그룹 ID
rechargeMethod
string
eq
결제 수단 (STRIPE
ACCOUNT-TRANSFER)
serviceMethod
string
eq
사용 서비스 (MT)
balanceAmount
number
eq
사용 금액
balanceRecharge
boolean
eq
잔액 충전 여부
balanceDeduct
boolean
eq
잔액 차감 여부
pointRecharge
boolean
eq
포인트 충전 여부
pointDeduct
boolean
eq
포인트 차감 여부
Sample Request
Sample Response
Sample Code
문서 생성일 : 2019-10-28
출금 신청을 합니다. 출금 신청한 금액에서 5%가 수수료로 차감됩니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
cash:write
role-cash:write
ACTIVE
ACTIVE
O
ARS 전화 인증
이메일 OTP
Name
Type
Required
Description
amount
number
O
합계 금액
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
문서 생성일 : 2019-10-28
쿨에스엠에스에서 제공하는 앱스토어 서비스에 앱을 등록 후 문자나 알림톡을 발송하면 발송 성공 건 마다 최대 50원의 수익을 얻을 수 있는 쿨에스엠에스만의 특별한 수익 플랫폼 입니다.
대표적으로 아래와 같은 비즈니스 모델들이 현재 운영중이며, 문자 발송이 자주 이루어지는 서비스에 적합합니다.
앱 등록하기를 클릭하여 이동한 페이지의 오른쪽 상단 앱 생성 버튼을 누릅니다.
간단하게 앱 이름만 입력하면 앱이 생성됩니다.
앱이 생성되면 해당 앱의 설정 페이지가 나오고 이때 수익 정산에 쓰일 앱 아이디와 OAuth 2에 사용할 수 있는Client ID, Client Secret이 발급됩니다.
Scope는 해당 앱에서 필요한 권한들을 체크하시면 됩니다.
Client Secret의 경우 최초 한번만 공개되고 그 뒤에는 재발급을 통해서만 알 수 있으니 꼭 안전한 곳에 저장을 해놓으시기 바랍니다.
앱 수익정보에서는 이 앱을 통해 문자를 발송할 시 앱 개발자가 얻을 수 있는 수익을 책정할 수 있습니다.
문자 타입별로 각각 다르게 수익을 설정할 수 있으며, 최대 50원까지 설정이 가능합니다.
저의 앱은 주로 SMS를 발송하는 용도로 사용할 것 이기에 SMS 수익만 2원을 책정하겠습니다.
확인을 누르면 성공적으로 변경이 됩니다.
앱 기본정보에서는 앱 이름, 소개, 설명, 버전, 카테고리를 설정해주시면 됩니다.
앱 소개란에는 간단한 소개말을 적고, 앱 설명은 최대한 상세하게 적어 사용자들이 불편함이 없도록 해야합니다.
앱 스토어에 보여질 이미지를 설정합니다.
마지막으로 연락처 정보를 작성해주면 앱을 배포할 준비가 완료됩니다.
이때 맨 밑에 앱 업데이트를 꼭 누르셔야 저장이 됩니다.
LIVE 상태가 아닐 때에는 수익금 설정이 자유로우나 LIVE 전환 후에는 수익금 변경이 불가능하니 꼭 배포 준비가 완료 되었을 때 전환하는 것을 추천 드립니다.
앱 업데이트가 성공적으로 되면 아래와 같은 메시지가 나오고 앱 등록 절차가 마무리됩니다.
앱을 등록하고 등록한 앱과 연동하여 수익을 발생 시키려면 위에서 발급받은 앱 아이디를 입력해주세요.
출금 요청 상태를 조회합니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
cash:read
role-cash:read
Name
Type
Required
Description
withdrawId
string
eq
출금 ID
status
string
eq
상태값
startKey
string
eq
현재 목록을 불러올 기준이 되는 키
limit
number
eq
한 페이지에 불러옥 목록 개수
startDate
string
eq
검색 날짜 시작 범위
endDate
string
eq
검색 날짜 끝 범위
Sample Request
Sample Response
Sample Code
문서 생성일 : 2019-10-28
Allowed Operator
상태 메시지
상태 코드
Allowed Operator
에 접속하여 하단에 앱 등록하기 버튼을 클릭합니다.
Redirect URI란 OAuth 2 로그인 시에 token을 얻기 위해 code를 발급받아올 주소를 의미합니다. OAuth 2을 사용하지 않으시는 분들은 운영중이신 사이트 주소를 입력하시면 됩니다. (없다면 를 입력해주세요.)
OAuth 2에 대한 자세한 설명은 를 참고해주시기 바랍니다.
쿨에스엠에스에서 제공하는 NodeJS 를 통해 발송 시 어떻게 앱을 적용하는지 알아보겠습니다.
Allowed Operator
Allowed Operator
Allowed Operator
Allowed Operator
Allowed Operator
Allowed Operator
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
pricing:read
role-pricing:read
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
cash:write
role-cash:write
ACTIVE
ACTIVE
O
Name
Type
Required
Description
paymentIds
array
O
결제 ID
minimumCash
number
O
충전 기준 금액
rechargeTo
number
O
충전 목표 금액
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
cash:write
role-cash:write
ACTIVE
ACTIVE
O
ARS 전화 인증
이메일 OTP
Name
Type
Required
Description
enabled
boolean
O
잔액 소진 알림 여부
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
kakao:read
role-kakao:read
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
kakao:read
role-kakao:read
Name
Description
:pfId
카카오톡채널 고유 아이디
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
kakao:read
role-kakao:read
Name
Description
:templateId
템플릿 고유 아이디
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
kakao:write
role-kakao:write
ACTIVE
ACTIVE
O
Name
Description
:templateId
템플릿 고유 아이디
Name
Type
Required
Description
comment
string
O
템플릿에 다는 댓글
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
kakao:read
role-kakao:read
숫자 4자리로 구성된 메시지의 상태를 나타내는 코드입니다. 코드 첫번째 자리 숫자의 의미는 아래와 같습니다.
코드
내용
1xxx
접수 중 오류
2000
정상 접수
2xxx
플랫폼 내부 처리 중 오류
3000
이통사로 접수 완료(정상)
3xxx
통신사에서 처리 중 오류
4000
수신자가 메시지를 수신함
코드
내용
1010
필수 입력 값 미입력
1011
Format Error
1013
제목은 문자 타입이 'SMS'일 경우 사용이 불가능합니다.
1014
제목은 40byte까지 사용 가능합니다.
1020
등록된 계정이 아니거나 패스워드가 틀림
1021
해당 메시지가 없음
1022
해당 그룹이 없음
1023
해당 이미지가 없음
1024
서버 오류
1025
잘못된 메시지 타입 ['SMS','LMS','MMS','ATA','CTA']중에서 사용 가능하며 대소문자는 구분하지 않습니다.
1026
중복 수신번호
1027
인코딩 방식은 UTF8 형식만 사용 가능합니다.
1028
Non Printable Characters는 사용할 수 없습니다.
1029
문자메시지의 경우 EUC-KR(완성형 한글) 범위 안에 있는 문자만 사용 합니다.
1030
잔액 부족
1031
SMS는 90byte LMS, MMS는 2000byte ATA, CTA는 한/영포함 1000자 CTI는 한/영포함 400자까지 사용 가능 합니다.
1032
유효한 커스텀 필드 값이 아닙니다. 필드명은 30자 설정값은 100자까지 가능하며 'String'형식만 지원 합니다.
1033
kakaoOptions은 메시지가 ATA 나 CTA인 경우에만 사용가능합니다.
1034
imageId가 존재하지 않습니다.
1041
유효한 플러스 친구 값이 아닙니다.
1042
유효한 템플릿 아이디가 아닙니다.
1043
등록한 템플릿과 내용이 다릅니다.
1044
유효한 버튼 값이 아닙니다.
1045
유효한 버튼 URL 값이 아닙니다.
1046
버튼이 있는 템플릿입니다. 'buttons'에 값을 넣어주세요.
1047
버튼이 없는 템플릿입니다. 'buttons', 'buttonName', 'buttonUrl'값을 제거해주세요.
1048
버튼 URL 값은 최대 100자까지 사용 가능합니다.
1049
버튼 명은 최대 14자까지 사용 가능합니다.
1050
버튼은 최대 5개까지 사용 가능합니다.
1051
등록되지 않은 친구톡 이미지 아이디입니다.
1052
버튼은 템플릿에 등록된 순서대로 입력해주셔야 합니다.
1053
친구톡의 경우 버튼 타입 'DS'(배송조회)는 사용할 수 없습니다.
1058
전송경로 없음
1060
차단된 수신번호
1061
사용자에 의해 수신거부 됨(080무료수신거부)
1062
발신번호 미등록
1064
KISA 신고로 인한 차단
2000
정상 접수(이통사로 접수 예정)
2011
Format Error
2024
서버 오류
2060
차단된 수신번호
2061
사용자에 의해 수신거부 됨(080무료수신거부)
2062
발신번호 미등록
2063
차단된 계정
2064
KISA 신고로 인한 차단
2230
잔액 부족
2254
플랫폼 내부 스팸처리
3000
이통사로 접수(리포트를 기다리는 중)
3010
수신번호 형식 오류
3011
Format Error
3012
연동처 서버 오류
3013
발신번호 형식 오류(세칙 위반)
3014
알 수 없는 메시지 상태
3024
서버 오류
3031
전송할 수 없음
3032
미가입자
3040
전송시간 초과
3041
단말기 busy
3042
음영지역
3043
단말기 Power off
3044
단말기 메시지 저장갯수 초과
3045
단말기 일시 서비스 정지
3046
기타 단말기 문제
3047
착신거절
3048
Unknown Code
3050
SMS서비스 불가 단말기
3051
착신측의 호불가 상태
3052
이통사 서버 운영자 삭제
3053
서버 메시지 Que Full
3054
SPAM
3055
SPAM, nospam.or.kr 에 등록된 번호
3056
전송실패(무선망단)
3057
전송실패(무선망->단말기단)
3058
전송경로 없음
3059
변작된 발신번호.
3060
성인 인증 실패
3101
발신 프로필 키가 유효하지 않음
3102
친구 관계가 아닌 경우
3103
메시지와 템플릿 불일치
3104
카카오톡 미사용자
3105
미등록 템플릿
3106
유효하지 않은 옐로아이디
3107
72시간 이내 카카오톡 미사용자, 알림톡 차단한 사용자
3108
메시지 발송 가능 시간이 아님(오전 8시 ~ 오후 8시 가능)
4000
수신 완료
솔라피에서 사용하는 파일 저장소를 위한 API 입니다.
타입별 제한 사이즈
KAKAO : 500KB
MMS : 60KB
DOCUMENT : 2MB
Name
Type
Required
Description
countryId
string
eq
국가 코드
Name
Type
Required
Description
countryId
string
eq
국가 코드
offset
number
eq
시작점
limit
number
eq
조회할 개수
Name
Type
Required
Description
name
string
eq, ne, like
이름
pfId
string
eq
카카오톡채널 고유 아이디
templateId
string
eq
템플릿 고유 아이디
isHidden
boolean
eq
설명 없음
status
string
eq
상태값
startKey
string
eq
현재 목록을 불러올 기준이 되는 키
limit
number
eq
한 페이지에 불러옥 목록 개수
dateCreated
date
eq, gte, lte, gt, lt
최초 생성 날짜
dateUpdated
date
eq, gte, lte, gt, lt
최근 수정 날짜
그룹에 메시지를 추가합니다. 접수 실패건은 저장되지만 발송은 되지 않습니다.
그룹메시지 추가 API에 다음 3가지 제한사항이 있습니다.
하나의 요청의 총 데이터 크기는 15MB를 넘을 수 없습니다.
하나의 요청에 수신번호는 10,000 개를 넘을 수 없습니다.
하나의 그룹에 담을 수 있는 메시지는 1,000,000 개 제한입니다.
전송 내역(메시지 그룹, 메시지 목록)의 보관기간은 생성일 기준 6개월 입니다. 6개월이 지난 내역은 조회가 불가능합니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
message:write
role-message:write
ACTIVE
ACTIVE
Name
Description
:groupId
메시지 그룹 아이디
Name
Type
Required
Description
Array
O
발송할 메시지 내용
Name
Type
Required
Description
to
string
O
수신번호
from
string
O
발신번호 사전 등록된 전화번호만 사용 가능
text
string
O
메시지 내용 한글 1,000자, 영문 2,000자 제한
type
string
메시지 타입
country
string
국가번호 (기본: 82, 미국(캐나다):1, 중국: 86, 일본: 81)
subject
string
메시지 제목 한글 20자, 영문 40자 제한
imageId
string
object
친구톡, 알림톡을 보내기 위한 옵션
object
네이버 스마트 알림을 보내기 위한 옵션
object
설명 없음
object
확장 필드로 사용. 키는 30자, 값은 100자 제한
autoTypeDetect
boolean
타입 설정이 없을 경우 자동으로 설정함. 기본 값은 true
Name
Type
Required
Description
pfId
string
테스트에서 발급된 카카오톡 채널의 연동 아이디
pfGroupId
string
설명 없음
templateId
string
알림톡 템플릿 아이디
disableSms
boolean
대체 발송 여부
imageId
string
array
알림톡 템플릿 버튼 목록
title
string
설명 없음
Name
Type
Required
Description
buttonName
string
O
버튼 이름
buttonType
string
O
버튼 종류(AL: 앱링크, WL: 웹링크, DS: 배송조회, BK: 키워드, MD: 전달
linkMo
string
모바일 링크(WL 웹링크)
linkPc
string
웹 링크(WL 웹링크)
linkAnd
string
안드로이드 링크(AL 앱링크)
linkIos
string
IOS 링크(AL 앱링크)
Name
Type
Required
Description
talkId
string
설명 없음
templateId
string
알림톡 템플릿 아이디
disableSms
boolean
대체 발송 여부
array
네이버 스마트 알림 템플릿 버튼 목록
Name
Type
Required
Description
buttonType
string
O
설명 없음
linkMo
string
모바일 링크
linkPc
string
웹 링크
Name
Type
Required
Description
brandId
string
설명 없음
templateId
string
알림톡 템플릿 아이디
copyAllowed
boolean
설명 없음
object
설명 없음
commercialType
boolean
설명 없음
mmsType
string
설명 없음
disableSms
boolean
대체 발송 여부
array
설명 없음
array
설명 없음
Name
Type
Required
Description
Name
Type
Required
Description
title
string
O
설명 없음
description
string
O
설명 없음
imageId
string
array
설명 없음
Name
Type
Required
Description
buttonType
string
O
설명 없음
link
string
설명 없음
latitude
string
설명 없음
longitude
string
설명 없음
label
string
설명 없음
query
string
설명 없음
title
string
설명 없음
startTime
date
설명 없음
endTime
date
설명 없음
text
string
메시지 내용 한글 1,000자, 영문 2,000자 제한
phone
string
설명 없음
Name
Type
Required
Description
buttonType
string
O
설명 없음
link
string
설명 없음
latitude
string
설명 없음
longitude
string
설명 없음
label
string
설명 없음
query
string
설명 없음
title
string
설명 없음
startTime
date
설명 없음
endTime
date
설명 없음
text
string
메시지 내용 한글 1,000자, 영문 2,000자 제한
phone
string
설명 없음
Name
Type
Required
Description
Name
Type
Should Return
Description
errorCount
number
접수 실패 카운트
array
모든 메시지의 접수 결과 목록
Name
Type
Should Return
Description
to
string
O
수신번호
from
string
O
발신번호 사전 등록된 전화번호만 사용 가능
type
string
O
메시지 타입
country
string
O
국가번호 (기본: 82, 미국(캐나다):1, 중국: 86, 일본: 81)
messageId
string
O
메시지 아이디
statusCode
string
O
statusMessage
string
O
accountId
string
O
계정 고유 아이디
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
문서 생성일 : 2021-07-14
잔액을 다른 계정에 이전합니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
cash:write
role-cash:write
ACTIVE
ACTIVE
O
ARS 전화 인증
이메일 OTP
Name
Type
Required
Description
targetAccountId
string
O
잔액 이전을 받을 계정 ID
amount
number
O
합계 금액
accountId
string
계정 고유 아이디
Sample Request
Sample Response
Sample Code
문서 생성일 : 2019-10-28
수익금 및 잔액을 출금 받기 위한 계좌를 등록 합니다.
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
cash:write
role-cash:write
ACTIVE
ACTIVE
O
ARS 전화 인증
이메일 OTP
Name
Type
Required
Description
accountNumber
number
계좌번호
authenticationCode
string
인증번호
bankCode
string
은행코드
holderName
string
예금주
transactionId
string
트렌잭션 ID
Sample Request
Sample Response
Sample Code
문서 생성일 : 2019-10-28
파일을 업로드합니다.
타입별 제한 사이즈
[KAKAO] : 500KB
[MMS] : 200KB
[DOCUMENT] : 2MB
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
storage:write
ACTIVE
ACTIVE
Name
Type
Required
Description
file
string
O
파일 (base64 encoded)
name
string
파일 이름
type
string
문서 타입(DOCUMENT, KAKAO, MMS)
link
string
이미지를 눌렀을 때 이동할 링크
Name
Type
Should Return
Description
object
카카오 채널 발송(알림톡, 친구톡)에 사용되는 정보
type
string
O
문서 타입(DOCUMENT, KAKAO, MMS)
originalName
string
O
원본 파일 이름
link
string
이미지를 눌렀을 때 이동할 링크
fileId
string
O
파일 고유 아이디
name
string
O
파일 이름
url
string
O
파일 주소
accountId
string
O
계정 고유 아이디
references
array
해당 파일 사용처 목록
dateCreated
date
O
최초 생성 날짜
dateUpdated
date
O
최근 수정 날짜
Name
Type
Should Return
Description
daou
string
다우기술에 등록되어있는지 여부
biztalk
string
비즈톡에 등록되어있는지 여부
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
Sample Request
Sample Response
Sample Code
문서 생성일 : 2020-09-23
문자관련 Api Reference를 설명합니다.
Parameters :
to - 받는사람 번호
from - 보내는사람 번호
text - 문자내용
type - 문자 타입
app_version - 어플리케이션 버젼 예) Purplebook 4.1
to - 받는사람 번호 여러개 입력시
image_path - image file path 이미지 파일 경로 설정 (기본 "./")
image - image file (지원형식 : 200KB 이하의 JPEG)
refname - 참조내용
country - 국가코드 한국:KR 일본:JP 미국:US 중국:CN
datetime - 예약전송시 날짜 설정
subject - LMS, MMS 일때 제목
charset - 인코딩 방식
srk - 솔루션 제공 수수료를 정산받을 솔루션 등록키
mode - test모드 수신번호를 반드시 01000000000 으로 테스트하세요. 예약필드 datetime는 무시됨. 결과값은 60. 잔액에서 실제 차감되며 다음날 새벽에 재충전됨
extension - 개별문자 보내기
Return : 아래와 같이 JSONObject 형태로 return
Parameters :
mid - message_id
gid - group_id
count - count
page - page
s_rcpt - 수신번호
s_start - 검색 시작 날짜
s_end - 검색 종료 날짜
Return : 아래와 같은 구조로 return
Parameters :
없음
Return : 아래와 같이 JSONObject 형태로 return
Parameters :
mid - message_id
gid - group_id
Return : Return값이 없습니다.
* 보안상 문제로 현재는 제공하지 않습니다. 쿨에스엠에스 사이트에서 발신번호를 등록해 주세요
Parameters :
site_user - 사이트 유저 아이디 입력, 미입력시 __private__ 으로 설정됩니다. 예) admin
phone - 발신번호 예) 021234567
Return : 아래와 같이 JSONObject 형태로 return
* 보안상 문제로 현재는 제공하지 않습니다. 쿨에스엠에스 사이트에서 발신번호를 등록해 주세요
Parameters :
handle_key - register 호출 후 리턴받은 핸들값
Return : Return값이 없습니다.
Parameters :
handle_key - register 호출 후 리턴받은 핸들값
Return : Return값이 없습니다.
Parameters :
site_user - 사이트 유저 아이디 입력, 미입력시 __private__ 으로 설정됩니다. 예) admin
Return : 아래와 같이 JSONObject 형태로 return
Parameters :
site_user - 사이트 유저 아이디 입력, 미입력시 __private__ 으로 설정됩니다. 예) admin
handle_key - 발신번호 핸들값을 입력
Return : Return값이 없습니다.
Parameters :
site_user - 사이트 유저 아이디 입력, 미입력시 __private__ 으로 설정됩니다. 예) admin
phone - 발신번호 예) 021234567
Return : 아래와 같이 JSONObject 형태로 return
수신번호 입력시 국가번호를 제외한 현지 전화번호를 대시(-) 등 기호를 제외한 번호만 입력합니다. 예) 010123456789 국가번호 입력은 country 파라메터를 참고해 주세요.
발신번호는 (-) 등 기호를 제외한 번호만 입력합니다.
예) 0212345678
주의!
해외 문자 발송시 발신번호는 해당 국가에 할당된 번호로 발송될 수 있습니다.
발신번호 사전 등록제란?
2015년 10월 16일 이후부터 전기통신사업법 제 84조2에 의거 거짓으로 표시된 전화번호로 인한 이용자 피해를 막고자 인증이 완료된 발신번호로만 문자메시지를 보낼 수 있도록 등록한 제도.
미래부가 지정한 세칙 내용을위반하는 발신번호 전송 제한
8자리~11자리이내의 숫자만 허용
특수번호(112, 119 등) 소유자 외에는 사용 불가(사전 등록 필수)
주의 사항 예시
발신번호는 실제로 수신자와 통화 가능한 번호만 허용 ㆍ 1544-0000 (O) ㆍ 0000 (X) 일반번호의 경우, 지역번호(02, 031등)를 앞자리에 포함한 번호만 허용 ㆍ 02-111-1111 (O) ㆍ 031-111-1111 (O) ㆍ 111-1111 (X) 대표번호는 8자리만 허용, 내선번호는 포함 불가 ㆍ 1544-0001(O) ㆍ 1544-0001-001 (X) 030번호는 12자리까지 허용 ㆍ 030-0000-00001(O) ㆍ 030-0000-000001(X)
총 길이 32 자로 구성된 메시지 아이디
메시지 아이디의 형식은 아래와 같습니다.
MMS에 이미지를 포함한 메시지를 발송할 수 있는데 이미지의 규격은 아래와 같습니다.
이미지 파일 크기 300KB 이하
가로 2048 픽셀, 세로 2048 픽셀 이하의 JPEG, PNG, GIF 형식의 파일
핸드폰 전화번호를 기반으로 친구추가 없이 고객에게 바로 보낼 수 있는 정보성 카카오톡 알림 메시지
알림톡으로 보낼 수 없는 광고, 일반공지, 업무알림등의 내용을 카카오 친구로 등록된 고객들에게 보낼 수 있는 카카오톡 알림 메시지
아래는 각 Resource의 역할을 테이블로 정리하였습니다. 상세한 설명을 보시려면 해당 Resource를 클릭하여 주세요.
대용량의 메시지를 안전하고 빠르게 전송하도록 그룹메시지를 위한 API를 제공합니다. 아래의 API 호출 흐름으로 대량의 그룹메시지를 보낼 수 있습니다.
new_group 호출로 메시지를 담을 그룹을 생성하고 리턴된 그룹아이디를 키로 add_messages 호출로 메시지를 접수하고 send 호출로 접수된 메시지를 서버단에 전송을 수행합니다. 이로 인해 한번 접수된 메시지는 유실 없이 안정적으로 발송이 보장됩니다.
메시지를 담을 그룹을 생성하여 그룹아이디를 리턴합니다.
JSON 포맷으로 리턴 됩니다.
생성된 그룹 목록을 리턴합니다.
JSON 포맷으로 리턴 됩니다.
그룹을 삭제합니다. 담겨 있는 메시지도 함께 삭제됩니다.
JSON 포맷으로 리턴 됩니다.
그룹 정보를 리턴합니다.
JSON 포맷으로 리턴 됩니다.
그룹에 발송할 문자메시지를 추가합니다.
제한 사항
to 필드의 전화번호 수는 최대 1,000개이며 넘을 경우 오류를 발생 (RecipientsTooMany)
한번의 Request의 총 데이터 크기는 2MB를 넘을 수 없습니다 (HTTP ERROR 413 발생)
발송형태별 제한사항
이동통신사 내부적으로 완성형한글로 변환되므로 영어 1바이트, 한글 2바이트로 취급됩니다.
JSON 포맷으로 리턴 됩니다.
그룹에 발송할 문자메시지를 JSON 형식으로 접수합니다. 대량의 문자를 각각 다른 내용과 타입으로 보내고 싶을 때 용이 합니다.
JSON Fields
[ ] 안에 { } 가 여러 개 들어 갈 수 있는 구조로 되어있으며 각각의 { } 안에는 to, from, text 필드가 필수요소입니다.
제한 사항
수신받을 전화번호 총 수(to 필드 전화번호 합계)는 최대 1,000개이며 넘을 경우 오류 발생. (RecipientsTooMany)
한번의 Request의 총 데이터 크기는 2MB를 넘을 수 없습니다 (HTTP ERROR 413 발생)
발송형태에 따른 제한사항
이동통신사 내부적으로 완성형한글로 변환되므로 영어 1바이트, 한글 2바이트로 취급됩니다.
문자메시지 목록을 리턴합니다.
JSON 포맷으로 리턴 됩니다.
그룹에 추가된 메시지를 삭제합니다.
JSON 포맷으로 리턴 됩니다.
서버는 json 포맷으로 삭제된 갯수를 리턴합니다.
그룹메시지를 전송 요청합니다.
JSON 포맷으로 리턴 됩니다.
이미지를 서버에 안전하게 미리 업로드하여 문자발송 때 사용할 수 있어 더욱 안정적인 발송을 보장합니다.
MMS 발송에 필요한 이미지 파일을 업로드 합니다.
MMS 발송 때 미리 업로드 된 이미지 파일을 사용하므로 발송과정에서 발생하는 오류률 현저히 줄어듭니다.
이미지 보관 기간은 7일입니다.
JSON 포맷으로 리턴 됩니다. 리턴되는 image_id를 MMS 발송 시 {group_id}/add_messages 파라메터로 입력하셔야 합니다.
서버에 업로드 되어 있는 이미지 목록을 리턴합니다.
JSON 포맷으로 리턴 됩니다.
업로드된 이미지 정보를 리턴합니다.
해당 이미지의 정보가 JSON 포맷으로 리턴 됩니다.
이미지 파일을 삭제합니다.
JSON 포맷으로 리턴 됩니다.
문자메시지를 전송 요청합니다. 전송 요청에 대한 Response는 휴대전화까지 전송된 결과가 아닙니다.
Mandatory가 Ο 인 필드는 반드시 입력하여야 합니다.
한번의 Request에 extension을 포함하여 총 받는사람(to) 수는 1000개 까지가 제한이며 1000개가 넘을 경우 오류를 발생시킵니다. (RecipientsTooMany)
한번의 Request의 총 크기는 2MB를 넘을 수 없습니다. (HTTP ERROR 413 발생)
이동통신사 내부적으로 완성형한글로 변환되므로 영어 1바이트, 한글 2바이트로 취급됩니다.
메시지그룹ID(group_id)는 Request된 메시지들의대표하는 아이디값으로 메시지상태 및 예약취소할 때 키값으로 사용될 수 있습니다. 10건의 문자메시지를 발송할 경우 그 10건의 문자메시지를 대표하는 group_id 가 리턴되며 sent 리소스를 통해서 10건에 대한 전송상태를 조회할 수 있습니다.
서버는 json 포맷으로 접수결과를 리턴합니다.
발송된 문자메시지의 목록을 가져옵니다.
검색 옵션이 없는 경우 가장 최신의 발송건부터 20일 전까지 내림차순으로 페이지 단위의 목록을 리턴합니다.
JSON 포맷으로 리턴 됩니다.
Response Format은 json을 사용합니다.
예약된 문자메시지를 취소합니다. 예약되지 않았거나, 예약되었으나 이미 발송된 문자메시지는 취소 할 수 없습니다.
message_id 혹은 group_id 중 하나는 반드시 입력하세요.
JSON 포맷으로 리턴 됩니다.
잔액을 확인합니다.
Response Format은 json을 사용합니다.
전송채널의 상태를 조회합니다.
JSON 포맷으로 리턴 됩니다.
모든 항목의 값은 초단위(seconds)값입니다. sms_average와 mms_average는 각각 SMS채널과 MMS채널의 문자가 접수된 때부터 실제 수신되기까지 걸린 시간으로 계산된 평균값으로 리포트가 오지않은 대기중인 메시지를 합산한 값이므로 다소 높게 나와도 정상입니다. sk, kt, lg 의 경우 수신시각이 분단위로만 제공되어서 약간의 차이가 날 수 있습니다.
숫자 4자리로 구성된 메시지의 상태를 나타내는 코드입니다. 코드 첫번째 자리 숫자의 의미는 아래와 같습니다.
Message API 호출시에는 앞에 두자리와 뒤 두자리가 구분되어 리턴됩니다.
예) 1010 -> status = '1', result_code = '10'
Allowed Operator
Allowed Operator
Allowed Operator
홈페이지의 에서 전송결과 내역을 확인하실 수 있습니다. (로그인 필요)
Storage API에 등록된 이미지 아이디
Storage API에 등록된 이미지 아이디
Storage API에 등록된 이미지 아이디
상태 코드
상태 메시지
SMS API와 SMS API v2 의 차이점은 에서 확인 할 수 있으며 C SDK v2.0은 보다 최신의 기술을 사용하여 만들어져 있습니다.
-
-
-
1. 로 가셔서 회원가입해주세요.
2. 로 가셔서 api_key와 api_secret를 생성해주세요.
Git :
Coolsms Download Page :
2015년 10월 16일부터 시행된 에 의해 반드시 등록된 번호만 허용됩니다.
이 문서는 REST기반의 문자메시지(국내,해외문자,알림톡,친구톡) API로 예약 문자를 포함한 문자전송, 전송된 문자의 상태 확인, 잔액정보 및 예약취소 등의 작업을 요청하는 방법을 기술하고 있습니다. PHP, Java, Python, Delphi, C 등 다양한 언어로 구현된 샘플을 페이지에서 제공하고 있습니다..
모든 Request 호출에는 API Key를 비롯한 인증정보를 포함하여 서버의 인증을 거쳐야 합니다. 인증에 대한 상세한 내용은 을 확인하세요.
인증을 위한 API Key 및 API Secret 코드는 메뉴에서 발급 및 관리가 가능합니다. 문서를 참고하세요.
요청에 대한 응답의 상세는 를 확인하세요.
REST API 관련 질의 응답 및 정보 공유는 을 이용해주세요.
추가하신 메시지의 전체 개수가 success_count로 리턴되면 정상적으로 서버에 접수 완료된 것이며, 에러가 발생한 메시지는 error count 와 error_list 가 리턴됩니다. 리턴된 error_code의 정보는 을 참고하시면 됩니다. 여기서 리턴되는 Response의 내용은 서버에 전송 요청한 것에 대한 정보이며 실제 휴대전화로 전송한 것에 대한 정보가 아닙니다. sent 조회로 실제 전송된 결과를 확인하실 수 있습니다.
추가하신 메시지의 전체 개수가 success_count로 리턴되면 정상적으로 서버에 접수 완료된 것이며, 에러가 발생한 메시지는 error count 와 error_list 가 리턴됩니다. 리턴된 error_code의 정보는 을 참고하시면 됩니다. 여기서 리턴되는 Response의 내용은 서버에 전송 요청한 것에 대한 정보이며 실제 휴대전화로 전송한 것에 대한 정보가 아닙니다. sent 조회로 실제 전송된 결과를 확인하실 수 있습니다.
srk 는 앱아이디를 말하는 것으로 을 참고하세요.
result_code 가 00 이면 정상적인 접수이며 이 외의 코드는 을 참고하세요. 여기서 리턴되는 Response의 내용은 서버에게 전송을 요청한 것에 대한 정보이지 실제 휴대전화로 전송한 것에 대한 정보가 아닙니다. 예를 들어 요청 건수 중 success_count가 10개라면 서버의 DB에 안전하게 INSERT된 건이 10개라는 의미이며, 나중 sent 리소스를 통해 조회시 이통사를 통해 실제 전송성공된 건수는 8개이고 올바르지 못한 수신번호로 2개로 실패라는 결과가 나올 수 있습니다.
result_code 는 페이지를 참고 하세요.
구분
제한사항
SMS
90바이트 까지 전송가능
LMS
2,000바이트 까지 전송가능
MMS
2,000바이트 텍스트, 1개의 이미지 전송
Version
Description
1.1
Android 누리고 푸시 지원 1만건 전송을 40초 이하로 단축
후불제 회원 지원
1.2
iOS 누리고 푸시 지원 1만건 전송을 20초 이하로 단축
1.3
쿨서포터즈 정책 지원 반영
1.4
status 리소스에 시간별, 일별 전송현황을 위한 date, unit 필드 추가
1.5
Agent 정보 전송
1.6
카카오 알림톡 기능 추가
2.0
그룹 메시징 추가
Mandatory
Field
Description
O
group_id
그룹 아이디
Mandatory
Field
Description
O
-
array 형식의 그룹아이디 목록 리턴
Mandatory
Field
Description
O
success_count
삭제된 그룹 갯수
O
error_count
오류 처리된 그룹 갯수
O
error_list
오류 내역 ["{인덱스}": "{오류코드}", ...] 형식
Mandatory
Field
Description
O
group_id
그룹 아이디
O
message_count
그룹에 담긴 메시지 갯수
구분
제한사항
SMS
90바이트 까지 전송가능 (한글 45자)
LMS
2,000바이트 까지 전송가능 (한글 1,000자)
MMS
2,000바이트 텍스트 (한글 1,000자)
1개의 이미지 전송 (300KB. 2048x2048픽셀 이하인 JPEG, PNG, GIF 형식 파일)
ATA
카카오톡 알림톡으로 1,000자까지 발송, 친구등록이 안되어있는 계정에게도 발송가능
CTA
카카오톡 찬구톡으로 1,000자까지 발송, 친구등록이 되어있어야 발송가능
Mandatory
Field
Description
O
success_count
접수 성공 갯수
O
error_count
접수 오류 갯수
error_list
오류 발생 문자메시지 아이디 목록 ["{인덱스}": "{오류코드}", ...] 형식 인덱스값은 0부터 시작
구분
제한사항
SMS
90바이트 까지 전송가능 (한글 45자)
LMS
2,000바이트 까지 전송가능 (한글 1,000자)
MMS
2,000바이트 텍스트 (한글 1,000자)
1개의 이미지 전송 (300KB. 2048x2048픽셀 이하인 JPEG, PNG, GIF 형식 파일)
ATA
카카오톡 알림톡으로 1,000자까지 발송, 친구등록이 안되어있는 계정에게도 발송가능
CTA
카카오톡 찬구톡으로 1,000자까지 발송, 친구등록이 되어있어야 발송가능
Mandatory
Field
Description
O
success_count
접수 성공 갯수
O
error_count
접수 오류 갯수
error_list
오류 발생 문자메시지 아이디 목록 ["{인덱스}": "{오류코드}", ...] 형식 인덱스값은 0부터 시작
Mandatory
Field
Description
O
total_count
전체 메시지 갯수
O
offset
조회 목록의 시작 위치
O
limit
가져올 메시지의 갯수
O
list
Array 형식의 메시지 목록
Mandatory
Field
Description
O
success_count
삭제 성공 갯수
O
error_count
오류 갯수
error_list
오류 발생 코드 목록 ["{인덱스}": "{오류코드}", ...] 형식 인덱스값은 0부터 시작
Mandatory
Field
Description
O
group_id
전송 요청된 그룹 아이디
Mandatory
Field
Description
O
image_id
이미지 아이디
Mandatory
Field
Description
O
total_count
전체 메시지 갯수
O
offset
조회 목록의 시작 위치
O
limit
가져올 이미지 아이디의 갯수
O
list
Array 형식의 이미지 아이디 목록
Mandatory
Field
Description
O
image_id
이미지 아이디
O
file_name
파일 명
O
original_name
원본 파일 명
O
file_size
파일 크기 (Byte 단위)
O
width
이미지 가로 픽셀
O
height
이미지 세로 픽셀
Mandatory
Field
Description
O
success_count
삭제 성공 갯수
O
error_count
삭제 오류 갯수
error_list
오류 발생 문자메시지 아이디 목록 ["{인덱스}": "{오류코드}", ...] 형식 인덱스값은 0부터 시작
구분
제한사항
SMS
90바이트 까지 전송가능 (한글 45자)
LMS
2,000바이트 까지 전송가능 (한글 1,000자)
MMS
2,000바이트 텍스트(한글 1,000자)
1개의 이미지 전송(300KB 이하의 JPEG, PNG, GIF 형식의 파일 2048x2048 픽셀이하)
ATA
카카오톡 알림톡으로 1,000자까지 발송, 친구등록이 안되어 있어도 발송가능
CTA
카카오톡 친구톡으로 1,000자까지 발송, 친구등록된 계정에게만 발송가능
Mandatory
Field
Description
O
group_id
그룹아이디
O
success_count
성공 건수
O
error_count
오류 건수
O
result_code
마지막 오류 코드
O
result_message
마지막 오류 메시지
Mandatory
Field
Description
O
total_count
전체 카운트
O
list_count
...
Status Code
Description
0
대기중
1
이통사로 전송중
2
이통사로부터 리포트 도착
Mandatory
Field
Description
O
total_count
전체 카운트
O
list_count
...
Mandatory
Field
Description
O
registdate
입력일
O
sms_average
...
코드
내용
1xxx
접수(전) 상태 코드
2xxx
쿨에스엠에스 게이트웨이 내에서 발송중 상태 코드
3xxx
연동망에서 발송 상태 코드
4xxx
발송완료 상태 코드
코드
내용
1010
필수 입력 값 미입력
1013
필수 입력 값 미입력(2)
1020
등록된 계정이 아니거나 패스워드가 틀림
1021
해당 메시지가 없음
1022
해당 그룹이 없음
1023
해당 이미지가 없음
1024
서버 오류
1025
이미지 입력되었으나 타입이 MMS가 아님
1026
중복 수신번호
1030
잔액 부족
1061
사용자에 의해 수신거부 됨(080무료수신거부)
1062
발신번호 미등록
2000
정상 접수
2100
(예약) 대기중
2160
예약 취소
2230
잔액 부족
2254
스팸처리(쿨에스엠에스 게이트웨이)
3000
이통사로 접수 완료(정상)
3054
스팸처리(이통사)
3032
미가입자
3040
전송시간 초과
3041
단말기 busy
3042
음영지역
3043
단말기 Power off
3044
단말기 메시지 저장갯수 초과
3045
단말기 일시 서비스 정지
3046
기타 단말기 문제
3047
착신거절
3049
Format Error
3050
SMS서비스 불가 단말기
3051
착신측의 호불가 상태
3052
이통사 서버 운영자 삭제
3053
서버 메시지 Que Full
3054
SPAM
3055
SPAM, nospam.or.kr 에 등록된 번호
3056
전송실패(무선망단)
3057
전송실패(무선망->단말기단)
3058
전송경로 없음
3059
변작된 발신번호.
4000
수신완료
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
storage:write
ACTIVE
ACTIVE
Name
Description
:fileId
파일 고유 아이디
계정 권한
회원 권한
계정 상태
회원 상태
계정 인증
storage:read
ACTIVE
ACTIVE
Part
Resource
Description
그룹메시지
그룹 생성
그룹 목록
그룹 삭제
그룹 정보 리턴
메시지 추가
JSON형식으로 메시지 추가
추가된 메시지 목록
메시지 삭제
메시지 발송
이미지
이미지 업로드
이미지 목록
이미지 정보
이미지
기타
문자발송 요청
발송된 문자정보 조회
예약문자 취소
전액정보 조회
전송채널 상태 조회
Mandatory
Field
Description
Ο
인증정보
charset
한글 인코딩 방식을 지정합니다. 유니코드 UTF-8 일 경우 utf8, 완성형 한글(EUC-KR) 일 경우 euckr 으로 입력, 입력 없으면 utf8가 기본
srk
mode (현재 미지원)
test로 입력할 경우 CARRIER 시뮬레이터로 시뮬레이션됩니다.
** 수신번호를 반드시 01000000000 으로 테스트 ** 예약필드 datetime는 무시됩니다.
결과값은 60 잔액에서 실제 차감되며 다음날 새벽에 재충전됩니다.
force_sms (현재 미지원)
누리고푸시를 사용하더라도 강제로 문자 발송.
true 혹은 false(기본)
only_
알림톡이 실패해도 문자메시지로 대체하여 발송하지 않습니다. true 혹은 false(기본)
site_user
API를 호출하는 사이트에서 관리하는 유저 아이디 입력.
os_platform
클라이언트의 OS 및 플랫폼 버전
예) CentOS 6.6
(v1.5에서 추가됨)
dev_lang
개발 프로그래밍 언어
예) PHP 5.3.3
(v1.5에서 추가됨)
sdk_version
SDK 버전
예) PHP SDK 1.5
(v1.5에서 추가됨)
app_version
어플리케이션 버전
예) Purplebook 4.1
(v1.5에서 추가됨)
Mandatory
Field
Description
Ο
인증정보
Mandatory
Field
Description
Ο
인증정보
O
group_ids
삭제할 그룹 아이디
콤마(,)로 구분된 아이디 목록 입력 가능
Mandatory
Field
Description
Ο
인증정보
O
group_id
그룹 아이디
Mandatory
Field
Description
Ο
인증정보
O
to
수신번호 입력 콤마(,)로 구분된 수신번호 입력가능 예) 01012345678,01023456789,01034567890
O
from
발신번호 입력 2015/10/16 발신번호 사전등록제에 의해 반드시 등록된 번호만 허용됩니다. (해외문자 제외) 예) 0212345678
O
text
문자내용
type
CTA(친구톡), ATA(알림톡), SMS(90바이트), LMS(장문 2,000바이트), MMS(장문+이미지) 미입력시 SMS 해외문자인 경우 SMS만 가능
image_id
발송할 이미지의 아이디
type이 MMS일 때 필수
refname
참조내용(이름)
country
한국: 82, 일본: 81, 중국: 86, 미국: 1, 기타 등등 (기본 한국)
datetime
예약시간을 YYYYMMDDHHMISS 포맷으로 입력 (입력 없거나 지난날짜를 입력하면 바로 전송) 예) 20131216090510 (2013년 12월 16일 9시 5분 10초에 발송되도록 예약)
subject
LMS, MMS 일때 제목 (40바이트)
template_code
알림톡 Template Code
sender_key
알림톡 Sender Key
button_name
알림톡&친구톡 버튼이름
button_url
알림톡&친구톡 버튼URL
Mandatory
Field
Description
Ο
인증정보
O
messages
JSON 형식의 메시지 데이터
Mandatory
Field
Description
O
to
수신번호 입력 콤마(,)로 구분된 수신번호 입력가능 예) 01012345678,01023456789,01034567890
O
from
발신번호 입력 2015/10/16 발신번호 사전등록제에 의해 반드시 등록된 번호만 허용됩니다. (해외문자 제외) 예) 0212345678
O
text
문자내용
type
ATA(알림톡), CTA(친구톡), SMS(90바이트), LMS(장문 2,000바이트), MMS(장문+이미지) 미입력시 SMS 해외문자인 경우 SMS만 가능
image_id
발송할 이미지의 아이디
type이 MMS일 때 필수
refname
참조내용(이름)
country
한국: 82, 일본: 81, 중국: 86, 미국: 1, 기타 등등 (기본 한국)
datetime
예약시간을 YYYYMMDDHHMISS 포맷으로 입력 (입력 없거나 지난날짜를 입력하면 바로 전송) 예) 20131216090510 (2013년 12월 16일 9시 5분 10초에 발송되도록 예약)
subject
LMS, MMS 일때 제목 (40바이트)
template_code
알림톡 Template Code
sender_key
알림톡 Sender Key
Mandatory
Field
Description
Ο
인증정보
offset
조회할 목록의 시작 위치
Default) 0
limit
가져올 메시지의 갯수
Default) 20
Mandatory
Field
Description
Ο
인증정보
O
message_ids
콤마로 구분된 삭제할 메시지 아이디 목록
ex) MID565BA6D7E325C,MID565433E7D233A
Mandatory
Field
Description
Ο
인증정보
Mandatory
Field
Description
Ο
인증정보
O
image
이미지 내용 (파일명이 아니라 내용입니다.) Form Submit 옵션 : method=POST enc-type=multipart/form 제한사항) 300KB, 2048x2048 이하, JPEG, PNG, GIF
image_encoding
이미지 인코딩 방식 binary(Default), base64
Mandatory
Field
Description
Ο
인증정보
offset
조회할 목록의 시작 위치 Default) 0
limit
가져올 이미지 아이디의 갯수 Default) 20
Mandatory
Field
Description
Ο
인증정보
Mandatory
Field
Description
Ο
인증정보
O
image_ids
콤마로 구분된 삭제 할 이미지 ID 목록 예) IMG565BA6D7E325C,IMG565433E7D233A
Mandatory
Field
Description
Ο
인증정보
O
to
수신번호 입력 콤마(,)로 구분된 수신번호 입력가능 예) 01012345678,01023456789,01034567890
O
from
발신번호 예) 0212345678 2015/10/16 발신번호 사전등록제에 의해 반드시 등록된 번호만 허용됩니다. (해외문자 제외)
O
text
문자내용
type
CTA(친구톡), ATA(알림톡), SMS(80바이트), LMS(장문 2,000바이트), MMS(장문+이미지) 입력 없으면 SMS가 기본 국가코드가 KR이 아니면 SMS로 강제
template_code
알림톡 Template Code
sender_key
알림톡 Sender Key
image
지원형식 : 300KB 이하의 JPEG, PNG, GIF 형식의 파일 2048x2048 픽셀이하
image_encoding
이미지 인코딩 방식 binary(Default), base64
refname
참조내용(이름)
country
한국: 82, 일본: 81, 중국: 86, 미국: 1, 기타 등등 (기본 한국)
datetime
예약시간을 YYYYMMDDHHMISS 포맷으로 입력 (입력 없거나 지난날짜를 입력하면 바로 전송) 예) 20131216090510 (2013년 12월 16일 9시 5분 10초에 발송되도록 예약)
subject
LMS, MMS 일때 제목 (40바이트)
charset
한글 인코딩 방식 지정 유니코드 UTF-8 일 경우 utf8 완성형 한글(EUC-KR) 일 경우 euckr 으로 입력 입력 없으면 utf8가 기본
srk
솔루션 제공 수수료를 정산받을 솔루션 등록키
mode (현재 미지원)
test로 입력할 경우 CARRIER 시뮬레이터로 시뮬레이션됨 수신번호를 반드시 01000000000 으로 테스트하세요. 예약필드 datetime는 무시됨 결과값은 60 잔액에서 실제 차감되며 다음날 새벽에 재충전됨
force_sms (현재 미지원)
누리고푸시를 사용하더라도 SMS로 발송되도록 강제
true 혹은 false(기본)
only_ata
알림톡이 실패해도 문자메시지로 대체하여 발송하지 않습니다.
true 혹은 false(기본)
os_platform
클라이언트의 OS 및 플랫폼 버전) CentOS 6.6
(v1.5에서 추가됨)
dev_lang
개발 프로그래밍 언어 예) PHP 5.3.3
(v1.5에서 추가됨)
sdk_version
SDK 버전 예) PHP SDK 1.5
(v1.5에서 추가됨)
app_version
어플리케이션 버전 예) Purplebook 4.1
(v1.5에서 추가됨)
button_name
알림톡&친구톡 버튼이름
button_url
알림톡&친구톡 버튼URL
Mandatory
Field
Description
Ο
인증정보
offset
가져올 목록의 시작 위치
limit
기본값 20이며 20개의 목록을 받을 수 있음. 40입력시 40개의 목록이 리턴
rcpt
수신번호로 검색
start
검색 시작일시 접수 날짜와 시간으로 검색 YYYY-MM-DD HH:MI:SS 포맷의 날짜와 시간
end
검색 종료일시 접수 날짜와 시간으로 검색 YYYY-MM-DD HH:MI:SS 포맷의 날짜와 시간
status
메시지 상태 값으로 검색
resultcode
전송결과 값으로 검색
notin_resultcode
입력된 전송결과 값 이외의 건들만 조회
message_id
메시지ID
group_id
ID
Mandatory
Field
Description
Ο
인증정보
message_id
메시지ID
group_id
그룹ID
Mandatory
Field
Description
Ο
인증정보
Mandatory
Field
Description
Ο
인증정보
count
기본값 1이며 1개의 최신의 레코드를 받을 수 있음, 10입력시 10분 동안의 레코드 목록을 리턴
unit
minute(default), hour, day 중 하나 minute : 분 단위의 현황 hour : 시간 단위의 평균 day : 일 단위의 평균 (v1.4에서 추가)
date
데이터를 읽어오는 기준 시각으로 YYYYMMDDHHMISS 형식의 14자리 값 예) 20150331095101 (2015년 3월 31일 오전 9시 51분 1초) 기본값 : 현재시각
(v1.4에서 추가)
channel
1: 1건 발송 채널 (기본 값)
2: 대량 발송 채널 (v1.4에서 추가)
Name
Type
Required
Description
fileId
string
eq
파일 고유 아이디
name
string
eq
파일 이름
url
string
eq
파일 주소
originalName
string
eq
원본 파일 이름
handleKey
string
eq
참조의 핸들키
category
string
eq
참조 이름
refId
string
eq
참조 대상의 리소스 아이디
dateCreated
date
eq
최초 생성 날짜
dateUpdated
date
eq
최근 수정 날짜
startKey
string
eq
현재 목록을 불러올 기준이 되는 키
limit
number
eq
한 페이지에 불러옥 목록 개수
type
string
eq
문서 타입(DOCUMENT, KAKAO, MMS)
useDaou
boolean
eq
[카카오 채널] 다우기술 이미지 연동 여부
useBiztalk
boolean
eq
[카카오 채널] 비즈톡 이미지 연동 여부
누리고 푸시 앱 전송을 지원합니다.
1만건 메시지 전송을 2분에서 20초 이하로 단축.
후불제 회원 지원.
알림톡 지원.
아래는 Resource Url과 간단한 설명을 테이블로 정리하였습니다. 상세한 설명을 보시려면 해당 Resource Url을 클릭하여 주세요.
Resource
Description
문자전송 요청
발송된 문자정보 읽어오기
예약문자 취소
잔액정보 읽어오기
전송채널 상태 조회
※ Request Parameters 입력시 JSON 포맷의 데이터가 아니라 폼데이터임을 유의해 주세요. Response Body의 데이터가 JSON 형식입니다.
Version
Description
1.1
Android 누리고 푸시 지원 1만건 전송을 40초 이하로 단축
후불제 회원 지원
1.2
iOS 누리고 푸시 지원 1만건 전송을 20초 이하로 단축
1.3
쿨서포터즈 정책 지원 반영
1.4
status 리소스에 시간별, 일별 전송현황을 위한 date, unit 필드 추가
1.5
Agent 정보 전송
1.6
카카오톡 알림톡 추가(beta)
문자메시지를 전송 요청합니다. 전송 요청에 대한 Response는 휴대전화까지 전송된 결과가 아닙니다.
Mandatory
Field
Description
Ο
인증정보
to
수신번호 입력 콤마(,)로 구분된 수신번호 입력가능 예) 01012345678,01023456789,01034567890
from
발신번호 예) 0212345678 2015/10/16 발신번호 사전등록제에 의해 반드시 등록된 번호만 허용됩니다. (해외문자 제외)
text
문자내용
type
SMS(90바이트), LMS(장문 2,000바이트), MMS(장문+이미지), ATA(알림톡) 입력 없으면 SMS가 기본 국가코드가 82가 아니면 SMS로 강제
image
지원형식 : 300KB 이하의 JPEG, PNG, GIF 형식의 파일 2048x2048 픽셀이하
image_encoding
이미지 인코딩 방식 binary(Default), base64
refname
참조내용(이름)
country
한국: 82, 일본: 81, 중국: 86, 미국: 1, 기타 등등 (기본 한국)
datetime
예약시간을 YYYYMMDDHHMISS 포맷으로 입력
입력 없거나 지난날짜를 입력하면 바로 전송 예) 20131216090510 (2013년 12월 16일 9시 5분 10초에 발송되도록 예약)
( 알림톡, 친구톡은 지원이 안, API v2이상에서 사용 가능합니다. )
subject
LMS, MMS 일때 제목 (40바이트)
charset
한글 인코딩 방식 지정 유니코드 UTF-8 일 경우 utf8 완성형 한글(EUC-KR) 일 경우 euckr 으로 입력 입력 없으면 utf8가 기본
srk
솔루션 제공 수수료를 정산받을 솔루션 등록키
mode
test로 입력할 경우 CARRIER 시뮬레이터로 시뮬레이션됨 수신번호를 반드시 01000000000 으로 테스트하세요. 예약필드 datetime는 무시됨 결과값은 60 잔액에서 실제 차감되며 다음날 새벽에 재충전됨
extension
JSON 포맷의 개별 메시지를 담을 수 있음
delay
0~20 사이의 값으로 전송지연 시간을 줄 수 있음, 1은 약 1초 (기본값은 0)
force_sms
누리고푸시를 사용하더라도 SMS로 발송되도록 강제
true 혹은 false(기본)
os_platform
클라이언트의 OS 및 플랫폼 버전) CentOS 6.6
(v1.5에서 추가됨)
dev_lang
개발 프로그래밍 언어 예) PHP 5.3.3
(v1.5에서 추가됨)
sdk_version
SDK 버전 예) PHP SDK 1.5
(v1.5에서 추가됨)
app_version
어플리케이션 버전 예) Purplebook 4.1
(v1.5에서 추가됨)
sender_key
알림톡 Sender Key 입력
template_code
알림톡 템플릿 코드 입력
Mandatory가 Ο 인 필드는 반드시 입력하여야 합니다.
type, to, from, text, subject 등의 필드값을 개별적으로 다른 값으로 발송하고자 할 때 JSON형식으로 extension 포맷을 사용할 수 있습니다.
한번의 Request에 extension을 포함하여 총 받는사람(to) 수는 1000개 까지가 제한이며 1000개가 넘을 경우 오류를 발생시킵니다. (RecipientsTooMany)
한번의 Request의 총 크기는 2MB를 넘을 수 없습니다. (오류코드 미정)
type, country, to, from, datetime, text, subject, delay 가 올 수 있고 입력하지 않는 필드는 상위(기본 필드) 값을 상속 받아 사용됩니다. 단, to는 상속받지 아니하고 필수 입력 사항입니다.
이동통신사 내부적으로 완성형한글로 변환되므로 영어 1바이트, 한글 2바이트로 취급됩니다.
구분
제한사항
SMS
90바이트 까지 전송가능 (한글 45자)
LMS
2,000바이트 까지 전송가능 (한글 1,000자)
MMS
2,000바이트 텍스트 (한글 1,000자)
1개의 이미지 전송 (300KB. 2048x2048픽셀 이하인 JPEG, PNG, GIF 형식 파일)
ATA
카카오톡 알림톡으로 1,000자까지 발송 이미지 첨부 불가
서버는 json 포맷으로 접수결과를 리턴합니다.
메시지그룹ID(group_id)는 Request된 메시지들의대표하는 아이디값으로 메시지상태 및 예약취소할 때 키값으로 사용될 수 있습니다. 10건의 문자메시지를 발송할 경우 그 10건의 문자메시지를 대표하는 group_id 가 리턴되며 sent 리소스를 통해서 10건에 대한 전송상태를 조회할 수 있습니다.
발송된 문자메시지의 목록을 가져옵니다.
Mandatory
Field
Description
Ο
인증정보
count
기본값 20이며 20개의 목록을 받을 수 있음. 40입력시 40개의 목록이 리턴
page
1부터 시작하는 페이지값
rcpt
수신번호로 검색
start
검색 시작일시 접수 날짜와 시간으로 검색 YYYY-MM-DD HH:MI:SS 포맷의 날짜와 시간
end
검색 종료일시 접수 날짜와 시간으로 검색 YYYY-MM-DD HH:MI:SS 포맷의 날짜와 시간
status
메시지 상태 값으로 검색
resultcode
전송결과 값으로 검색
notin_resultcode
입력된 전송결과 값 이외의 건들만 조회
mid
메시지ID
gid
그룹ID
검색 옵션이 없는 경우 가장 최신의 발송건부터 20일 전까지 내림차순으로 페이지 단위의 목록을 리턴합니다.
Response Format은 json을 사용합니다.
Status Code
Description
0
대기중
1
이통사로 전송중
2
이통사로부터 리포트 도착
예약된 문자메시지를 취소합니다. 예약되지 않았거나, 예약되었으나 이미 발송된 문자메시지는 취소 할 수 없습니다.
Mandatory
Field
Description
Ο
인증정보
mid
메시지ID
gid
그룹ID
mid 혹은 gid 중 하나는 반드시 입력하세요.
잔액을 확인합니다.
Mandatory
Field
Description
Ο
인증정보
Response Format은 json을 사용합니다.
전송채널의 상태를 조회합니다.
Mandatory
Field
Description
Ο
인증정보
count
기본값 1이며 1개의 최신의 레코드를 받을 수 있음, 10입력시 10분 동안의 레코드 목록을 리턴
unit
minute(default), hour, day 중 하나 minute : 분 단위의 현황 hour : 시간 단위의 평균 day : 일 단위의 평균 (v1.4에서 추가)
date
데이터를 읽어오는 기준 시각으로 YYYYMMDDHHMISS 형식의 14자리 값 예) 20150331095101 (2015년 3월 31일 오전 9시 51분 1초) 기본값 : 현재시각
(v1.4에서 추가)
channel
1: 1건 발송 채널 (기본 값)
2: 대량 발송 채널 (v1.4에서 추가)
모든 항목의 값은 초단위(seconds)값입니다. sms_average와 mms_average는 각각 SMS채널과 MMS채널의 문자가 접수된 때부터 실제 수신되기까지 걸린 시간으로 계산된 평균값으로 리포트가 오지않은 대기중인 메시지를 합산한 값이므로 다소 높게 나와도 정상입니다. sk, kt, lg 의 경우 수신시각이 분단위로만 제공되어서 약간의 차이가 날 수 있습니다.
CODE
설 명
00
정상(전송완료)
10
잘못된 번호
11
상위 서비스망 스팸 인식됨
12
상위 서버 오류
13
잘못된 필드값
20
등록된 계정이 아니거나 패스워드가 틀림
21
존재하지 않는 메시지 ID
30
가능한 전송 잔량이 없음
31
전송할 수 없음
32
가입자 없음
40
전송시간 초과
41
단말기 busy
42
음영지역
43
단말기 Power off
44
단말기 메시지 저장갯수 초과
45
단말기 일시 서비스 정지
46
기타 단말기 문제
47
착신거절
48
Unkown error
49
Format Error
50
SMS서비스 불가 단말기
51
착신측의 호불가 상태
52
이통사 서버 운영자 삭제
53
서버 메시지 Que Full
54
SPAM
55
SPAM, nospam.or.kr 에 등록된 번호
56
전송실패(무선망단)
57
전송실패(무선망->단말기단)
58
전송경로 없음
60
예약취소
70
허가되지 않은 IP주소
81
게이트웨이 연결 실패
82
이미지 미입력
83
수신번호 미입력
84
발신번호 미입력
85
메시지 내용 미입력
86
미지원 이미지 타입
99
전송대기
REST_API를 이용하여 문자를 보내고 전송결과를 받으며 발신번호 및 문자에 사용 될 이미지를 등록할 수 있습니다.
PHP SDK 에서는 크게 네가지 분류로 나뉘며 각각의 기능에 대해서는 아래 설명을 참고 해주세요.
Coolsms PHP SDK v2.0 PSR-4에 준수하여 코딩 되어있습니다.
이 의미는 namespace 와 autoload를 이용하여 만들어져 있다는 이야기입니다.
아래 방법중 한 가지를 선택해 다운로드 해주세요.
Composer를 이용해 다운로드 가능 합니다.
10월 16일 이후로 발신번호 사전등록제로 인해 등록된 발신번호로만 문자를 보내실 수 있습니다. 아래 관련링크를 참고 해주세요.
PHP 5.5 or greater
The curl extension
Composer (optional)
Coolsms REST-API SDK Delphi 예제파일은 다운받으신 delphi-sdk example 폴더에 들어있습니다.
uses에 coolsms.pas를 적용 시켜준뒤 setApiKey를 통해 api_key와 api_secret를 설정해 준 뒤 data에 전송정보들을 넣어서 postRequest('send', data, 'sms')로 전송요청을 합니다.
uses
System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var
coolsms: resource;
jsonObject: TJSONObject;
data: TStringList;
begin
try
// api_key, api_secret 설정
coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// parameters
data := TStringList.create;
data.Values['to'] := '01000000000'; // 수신번호
data.Values['from'] := '029302266'; // 발신번호
data.Values['text'] := 'test'; // 문자내용
data.Values['type'] := 'mms'; // 문자타입 sms, mms, lms
data.Values['image'] := '..\..\test.jpg'; // IMAGE 파일 (MMS일경우)
{
data.Values['image_encoding']
이미지 인코딩 방식 binary(Default), base64
data.Values['refname']
참조내용(이름)
data.Values['country']
한국: 82, 일본: 81, 중국: 86, 미국: 1, 기타 등등 (기본 한국)
data.Values['datetime']
예약시간을 YYYYMMDDHHMISS 포맷으로 입력 (입력 없거나 지난날짜를 입력하면 바로 전송) 예) 20131216090510 (2013년 12월 16일 9시 5분 10초에 발송되도록 예약)
data.Values['subject']
LMS, MMS 일때 제목 (40바이트)
data.Values['charset']
한글 인코딩 방식 지정 유니코드 UTF-8 일 경우 utf8 완성형 한글(EUC-KR) 일 경우 euckr 으로 입력 입력 없으면 utf8가 기본
data.Values['srk']
솔루션 제공 수수료를 정산받을 솔루션 등록키
data.Values['mode']
test로 입력할 경우 CARRIER 시뮬레이터로 시뮬레이션됨 수신번호를 반드시 01000000000 으로 테스트하세요. 예약필드 datetime는 무시됨 결과값은 60 잔액에서 실제 차감되며 다음날 새벽에 재충전됨
data.Values['delay']
0~20 사이의 값으로 전송지연 시간을 줄 수 있음, 1은 약 1초 (기본값은 0)
data.Values['force_sms']
누리고푸시를 사용하더라도 SMS로 발송되도록 강제
true 혹은 false(기본)
data.Values['os_platform']
클라이언트의 OS 및 플랫폼 버전) CentOS 6.6
(v1.5에서 추가됨)
data.Values['dev_lang']
개발 프로그래밍 언어 예) PHP 5.3.3
(v1.5에서 추가됨)
data.Values['sdk_version']
SDK 버전 예) PHP SDK 1.5
(v1.5에서 추가됨)
data.Values['app_version']
어플리케이션 버전 예) Purplebook 4.1
(v1.5에서 추가됨)
data.Values['extension']
JSON 포맷의 개별 메시지를 담을 수 있음
}
// send Messages
jsonObject := coolsms.send(data);
if strToBool(jsonObject.GetValue('status').ToString) = TRUE then
begin
Writeln('성공');
Writeln('group_id : ' + jsonObject.Get('group_id').JsonValue.ToString);
Writeln('success_count : ' + jsonObject.Get('success_count').JsonValue.ToString);
Writeln('error_count : ' + jsonObject.Get('error_count').JsonValue.ToString);
Writeln('result_code : ' + jsonObject.Get('result_code').JsonValue.ToString);
Writeln('result_message : ' + jsonObject.Get('result_message').JsonValue.ToString);
end
else
begin
Writeln('실패');
if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString);
if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString);
end;
jsonObject.Free;
Writeln('-----------------------------------------');
Writeln('Press <enter> to quit...');
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
SMS발송(개별)은 여러명의 사용자에게 각가 다른 내용이 들어간 문자를 보내고 싶을때 사용합니다.
TStringlist data에 각각의 TJSONObject들이 들어간 TJSONArray를 ToString으로 parameter extension에 넣어주시면됩니다.
uses System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var coolsms: resource; jsonObject: TJSONObject; extensionObject: TJSONObject; extensionArray: TJSONArray; data: TStringList;
begin try // api_key, api_secret 설정 coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// 개별 메시지 보내기 extensionObject := TJSONObject.Create; extensionArray := TJSONArray.Create;
// message 1 parameters extensionObject.AddPair('type', 'sms'); extensionObject.AddPair('to', '01000000003'); extensionObject.AddPair('text', 'sms_test'); extensionArray.Add(extensionObject);
// message 2 parameters extensionObject := TJSONObject.Create; extensionObject.AddPair('type', 'sms'); extensionObject.AddPair('to', '01000000000, 010000000001'); extensionObject.AddPair('text', 'sms_test2'); extensionArray.Add(extensionObject);
// input extension_data into string_list data := TStringList.create; data.Values['extension'] := extensionArray.ToString;
data.Values['from'] := '029302266'; // 발신번호
// send Messages jsonObject := coolsms.send(data); if strToBool(jsonObject.GetValue('status').ToString) = TRUE then begin Writeln('성공'); Writeln('group_id : ' + jsonObject.Get('group_id').JsonValue.ToString); Writeln('success_count : ' + jsonObject.Get('success_count').JsonValue.ToString); Writeln('error_count : ' + jsonObject.Get('error_count').JsonValue.ToString); Writeln('result_code : ' + jsonObject.Get('result_code').JsonValue.ToString); Writeln('result_message : ' + jsonObject.Get('result_message').JsonValue.ToString); end else begin Writeln('실패'); if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString); if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString); end;
jsonObject.Free;
Writeln('-----------------------------------------'); Writeln('Press <enter> to quit...'); Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
type 을 lms로 바꿔주시기만하면됩니다.
uses
System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var
coolsms: resource;
jsonObject: TJSONObject;
data: TStringList;
begin
try
// api_key, api_secret 설정
coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// parameters
data := TStringList.create;
data.Values['from'] := '029302266'; // 발신번호
data.Values['text'] := 'test'; // 문자내용
data.Values['type'] := 'lms'; // 문자타입 sms, mms, lms
// send Messages
jsonObject := coolsms.send(data);
if strToBool(jsonObject.GetValue('status').ToString) = TRUE then
begin
Writeln('성공');
Writeln('group_id : ' + jsonObject.Get('group_id').JsonValue.ToString);
Writeln('success_count : ' + jsonObject.Get('success_count').JsonValue.ToString);
Writeln('error_count : ' + jsonObject.Get('error_count').JsonValue.ToString);
Writeln('result_code : ' + jsonObject.Get('result_code').JsonValue.ToString);
Writeln('result_message : ' + jsonObject.Get('result_message').JsonValue.ToString);
end
else
begin
Writeln('실패');
if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString);
if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString);
end;
jsonObject.Free;
Writeln('-----------------------------------------');
Writeln('Press <enter> to quit...');
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
type을 mms로 바꿔준뒤 전송할 이미지 파일 정보를 입력합니다.
uses
System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var
coolsms: resource;
jsonObject: TJSONObject;
data: TStringList;
begin
try
// api_key, api_secret 설정
coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// parameters
data := TStringList.create;
data.Values['from'] := '029302266'; // 발신번호
data.Values['text'] := 'test'; // 문자내용
data.Values['type'] := 'mms'; // 문자타입 sms, mms, lms
data.Values['image'] := '..\..\test.jpg'; // IMAGE 파일 (MMS일경우)
// send Messages
jsonObject := coolsms.send(data);
if strToBool(jsonObject.GetValue('status').ToString) = TRUE then
begin
Writeln('성공');
Writeln('group_id : ' + jsonObject.Get('group_id').JsonValue.ToString);
Writeln('success_count : ' + jsonObject.Get('success_count').JsonValue.ToString);
Writeln('error_count : ' + jsonObject.Get('error_count').JsonValue.ToString);
Writeln('result_code : ' + jsonObject.Get('result_code').JsonValue.ToString);
Writeln('result_message : ' + jsonObject.Get('result_message').JsonValue.ToString);
end
else
begin
Writeln('실패');
if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString);
if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString);
end;
jsonObject.Free;
Writeln('-----------------------------------------');
Writeln('Press <enter> to quit...');
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
data에 datetime을 추가해주시면 됩니다.
uses
System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var
coolsms: resource;
jsonObject: TJSONObject;
data: TStringList;
begin
try
// api_key, api_secret 설정
coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// parameters
data := TStringList.create;
data.Values['from'] := '029302266'; // 발신번호
data.Values['text'] := 'test'; // 문자내용
data.Values['datetime'] := '20131216090510'; // 예약시간을 YYYYMMDDHHMISS 포맷으로 입력 (입력 없거나 지난날짜를 입력하면 바로 전송) 예) 20131216090510 (2013년 12월 16일 9시 5분 10초에 발송되도록 예약)
// send Messages
jsonObject := coolsms.send(data);
if strToBool(jsonObject.GetValue('status').ToString) = TRUE then
begin
Writeln('성공');
Writeln('group_id : ' + jsonObject.Get('group_id').JsonValue.ToString);
Writeln('success_count : ' + jsonObject.Get('success_count').JsonValue.ToString);
Writeln('error_count : ' + jsonObject.Get('error_count').JsonValue.ToString);
Writeln('result_code : ' + jsonObject.Get('result_code').JsonValue.ToString);
Writeln('result_message : ' + jsonObject.Get('result_message').JsonValue.ToString);
end
else
begin
Writeln('실패');
if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString);
if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString);
end;
jsonObject.Free;
Writeln('-----------------------------------------');
Writeln('Press <enter> to quit...');
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
data에 mid나 gid를 입력하신뒤 postRequest('cancel', data, 'sms')를 호출합니다.
uses System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var coolsms: resource; jsonObject: TJSONObject; data: TStringList;
begin try // api_key, api_secret 설정 coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// 예약취소 요청 jsonObject := coolsms.cancel(data); if strToBool(jsonObject.GetValue('status').ToString) = TRUE then begin Writeln('성공'); end else begin Writeln('실패'); if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString); if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString); end;
jsonObject.Free;
Writeln('-----------------------------------------'); Writeln('Press <enter> to quit...'); Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
data에 mid나 gid를 입력하신후 request('sent', data, 'sms')를 통해 발송내역을 가져옵니다.
Return 값은 jsonObject 안에 jsonArray로 받습니다.
uses System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var coolsms: resource; data: TStringList; jsonObject: TJSONObject; jsonArray: TJSONArray; jsonObjectData: TJSONObject; i: integer;
begin try // api_key, api_secret 설정 coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74'); //https.create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// parameters, data 설정 mid나 gid 둘 중 하나는 들어가야 합니다. data := TStringList.create; data.Values['mid'] := 'R1M55B1FFB27E5308'; // 메시지ID
// sent Messages jsonObject := coolsms.sent(data); if strToBool(jsonObject.GetValue('status').ToString) = TRUE then begin Writeln('성공'); jsonArray := JsonObject.Get('data').JsonValue as TJSONArray;
Writeln('total_count : ' + jsonObject.Get('total_count').JsonValue.ToString); Writeln('list_count : ' + jsonObject.Get('list_count').JsonValue.ToString); Writeln('page : ' + jsonObject.Get('page').JsonValue.ToString);
for i := 0 to jsonArray.Size - 1 do begin jsonObjectData := TJSONObject.Create; jsonObjectData := jsonArray.Get(i) as TJSONObject;
Writeln('-----------------------------------------'); Writeln('type : ' + jsonObjectData.Get('type').JsonValue.ToString); Writeln('recipient_number : ' + jsonObjectData.Get('recipient_number').JsonValue.ToString); Writeln('text : ' + jsonObjectData.Get('text').JsonValue.ToString); Writeln('carrier : ' + jsonObjectData.Get('carrier').JsonValue.ToString); Writeln('status : ' + jsonObjectData.Get('status').JsonValue.ToString); Writeln('result_code : ' + jsonObjectData.Get('result_code').JsonValue.ToString); Writeln('result_message : ' + jsonObjectData.Get('result_message').JsonValue.ToString); Writeln('message_id : ' + jsonObjectData.Get('message_id').JsonValue.ToString); Writeln('group_id : ' + jsonObjectData.Get('group_id').JsonValue.ToString); Writeln('sent_time : ' + jsonObjectData.Get('sent_time').JsonValue.ToString); Writeln('accepted_time : ' + jsonObjectData.Get('accepted_time').JsonValue.ToString); end; end else begin Writeln('실패'); if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString); if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString); end;
jsonObject.Free;
Writeln('-----------------------------------------'); Writeln('Press <enter> to quit...'); Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
request('balance', Nil, 'sms')를 통해 잔액정보를 가져옵니다.
uses System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils;
var coolsms: resource; jsonObject: TJSONObject;
begin try // api_key, api_secret 설정 coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
jsonObject.Free;
Writeln('-----------------------------------------'); Writeln('Press <enter> to quit...'); Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
* 보안상 문제로 현재는 제공하지 않습니다. 쿨에스엠에스 사이트에서 발신번호를 등록해 주세요
postRequest('register', data, 'senderid')로 요청을 해서 넘어오는 ars_number로 전화를 걸어주시면 됩니다.
uses System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var coolsms: resource; data: TStringList; jsonObject: TJSONObject;
// api_key, api_secret 설정 coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// parameters data := TStringList.create; data.Values['phone'] := '01090683469'; // 발신번호로 등록할 전화번호를 입력해주세요.
// 발신번호등록 요청 jsonObject := coolsms.register(data); if strToBool(jsonObject.GetValue('status').ToString) = TRUE then begin Writeln('성공'); Writeln('handle_key : ' + jsonObject.Get('handle_key').JsonValue.ToString); Writeln('ars_number : ' + jsonObject.Get('ars_number').JsonValue.ToString); end else begin Writeln('실패'); if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString); if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString); end;
jsonObject.Free;
Writeln('-----------------------------------------'); Writeln('Press <enter> to quit...'); Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
* 보안상 문제로 현재는 제공하지 않습니다. 쿨에스엠에스 사이트에서 발신번호를 등록해 주세요
register에서 받은 ars_number로 전화를 거신후 handle_key로 postRequest('verify', data, 'senderid')를 호출하시면 발신번호 등록이 완료됩니다.
uses System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var coolsms: resource; data: TStringList; jsonObject: TJSONObject;
// api_key, api_secret 설정 coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// parameters data := TStringList.create; data.Values['handle_key'] := 'SID5FFFF7614ED3'; // register 호출 후 리턴받은 핸들값
// 발신번호등록확인 요청 jsonObject := coolsms.verify(data); if strToBool(jsonObject.GetValue('status').ToString) = TRUE then begin Writeln('성공'); end else begin Writeln('실패'); if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString); if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString); end;
jsonObject.Free;
Writeln('-----------------------------------------'); Writeln('Press <enter> to quit...'); Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
data에 해당 발신번호릐 handle_key를 입력하시고 postRequest('delete', data, 'sendid')를 호출하시면 됩니다.
uses System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var coolsms: resource; data: TStringList; jsonObject: TJSONObject;
// api_key, api_secret 설정 coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// parameters data := TStringList.create; data.Values['handle_key'] := 'SFFFFFFF7E1D7'; // 삭제할 발신번호의 handle_key
// 발신번호삭제 요청 jsonObject := coolsms.delete(data); if strToBool(jsonObject.GetValue('status').ToString) = TRUE then begin Writeln('성공'); end else begin Writeln('실패'); if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString); if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString); end;
jsonObject.Free;
Writeln('-----------------------------------------'); Writeln('Press <enter> to quit...'); Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
request('list', Nil, 'senderid')를 요청하시면 됩니다.
Return값은 jsonObject안에 jsonArray로 처리해주세요.
uses System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var coolsms: resource; data: TStringList; jsonObject: TJSONObject; jsonArray: TJSONArray; jsonObjectData: TJSONObject; i: integer;
// api_key, api_secret 설정 coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// 발신번호 리스트 요청 jsonObject := coolsms.list();
if strToBool(jsonObject.GetValue('status').ToString) = TRUE then begin Writeln('성공'); jsonArray := JsonObject.Get('data').JsonValue as TJSONArray; for i := 0 to jsonArray.Size - 1 do begin jsonObjectData := TJSONObject.Create; jsonObjectData := jsonArray.Get(i) as TJSONObject;
Writeln('-----------------------------------------'); Writeln('idno : ' + jsonObjectData.Get('idno').JsonValue.ToString); Writeln('phone_number : ' + jsonObjectData.Get('phone_number').JsonValue.ToString); Writeln('flag_default : ' + jsonObjectData.Get('flag_default').JsonValue.ToString); Writeln('updatetime : ' + jsonObjectData.Get('updatetime').JsonValue.ToString); Writeln('regdate : ' + jsonObjectData.Get('regdate').JsonValue.ToString); end; end else begin Writeln('실패'); if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString); if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString); end;
jsonObject.Free;
Writeln('-----------------------------------------'); Writeln('Press <enter> to quit...'); Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
해당 발신번호의 handle_key를 data에 넣으신후 postRequest('set_default', data, 'senderid')를 요청하시면 됩니다.
uses System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var coolsms: resource; data: TStringList; jsonObject: TJSONObject;
// api_key, api_secret 설정 coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// parameters data := TStringList.create; data.Values['handle_key'] := 'SIDFFFFF614ED3'; // register 호출 후 리턴받은 핸들값
// default 발신번호등록 요청 jsonObject := coolsms.setDefault(data); if strToBool(jsonObject.GetValue('status').ToString) = TRUE then begin Writeln('성공'); end else begin Writeln('실패'); if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString); if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString); end;
jsonObject.Free;
Writeln('-----------------------------------------'); Writeln('Press <enter> to quit...'); Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
request('get_default', Nil, 'senderid')로 요청하시면 됩니다.
uses System.Json, coolsms in '..\..\coolsms.pas', https in '..\..\https.pas', System.SysUtils, Classes;
var coolsms: resource; data: TStringList; jsonObject: TJSONObject;
// api_key, api_secret 설정 coolsms := resource.Create('NCS55882FB7DE511A', '4FB5FF82B9AB7D0E0AEB840D403DE0F74');
// default 발신번호 요청 jsonObject := coolsms.getDefault(); if strToBool(jsonObject.GetValue('status').ToString) = TRUE then begin Writeln('성공'); Writeln('handle_key : ' + jsonObject.Get('handle_key').JsonValue.ToString); Writeln('phone_number : ' + jsonObject.Get('phone_number').JsonValue.ToString); end else begin Writeln('실패'); if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString); if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString); end;
jsonObject.Free;
Writeln('-----------------------------------------'); Writeln('Press <enter> to quit...'); Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
인증데이터는 필수입니다. 참고
솔루션 제공 수수료를 정산받을 솔루션 등록키 자세한 안내는 을 참고하세요.
미입력시 __private__ 으로 입력됩니다. 해당 아이디 앞으로 등록된 발신번호를 확인합니다. 발신번호 등록 API를 참고하세요.
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
참고
인증데이터는 필수입니다. 참고
참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
Allowed Operator
에 비해 달라진 점은 아래와 같습니다.
이 문서는 쿨에스엠에스의 REST API를 통하여 문자전송에서부터 전송된 문자의 상태값을 비롯하여 잔액정보 및 예약취소 등의 작업을 요청하는 방법을 기술하고 있습니다. REST API를 기반으로 PHP, Java, Python, Delphi, C 등 다양한 언어로 구현된 SDK 및 예제를 에서 확인하세요.
모든 Request 호출에는 API Key를 비롯한 인증정보를 포함하여 서버의 인증을 거쳐야 합니다. 인증에 대한 상세한 내용은 을 확인하세요.
인증을 위한 API Key 및 API Secret 코드는 메뉴에서 발급 및 관리가 가능합니다. 문서를 참고하세요.
요청에 대한 응답의 상세는 를 확인하세요.
REST API 관련 질의 응답 및 정보 공유는 을 이용해주세요.
인증데이터는 필수입니다. 참고
참고
srk 는 앱아이디를 말하는 것으로 을 참고하세요.
result_code 가 00 이면 정상적인 접수이며 이 외의 코드는 을 참고하세요. 여기서 리턴되는 Response의 내용은 서버에게 전송을 요청한 것에 대한 정보이지 실제 휴대전화로 전송한 것에 대한 정보가 아닙니다. 예를 들어 요청 건수 중 success_count가 10개라면 서버의 DB에 안전하게 INSERT된 건이 10개라는 의미이며, 나중 sent 리소스를 통해 조회시 이통사를 통해 실제 전송성공된 건수는 8개이고 올바르지 못한 수신번호로 2개로 실패라는 결과가 나올 수 있습니다.
인증데이터는 필수입니다. 참고
result_code 는 페이지를 참고 하세요.
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
인증데이터는 필수입니다. 참고
분류
설명
각 타입별 문자발송, 전송내역 확인, 예악문자 취소 등을 담당합니다.
REST 2 에서 새롭게 추가된 그룹문자 발송을 담당합니다. ( 대량문자 측면에서 'Message'보다 빠르고 유실 없는 메시지 전송이 가능합니다. )
MMS( 포토문자 )에 사용 될 이미지를 미리 등록, 삭제 등을 담당합니다.
2015년 10월 16일부터 필수가 된 발신번호 등록제를 위한 API로 발신번호 등록, 삭제를 담당합니다.
SMS API와 SMS API v2 의 차이점은 에서 확인 할 수 있으며 PHP SDK v2.0은 Composer 등을 이용하여 보다 최신의 기술을 사용하여 만들어져 있습니다.
SMS API와 SMS API v2 의 차이점은 에서 확인 할 수 있으며 Python SDK v2.0은 pip install이 가능하며 보다 최신의 기술을
해당 SDK는 SMS API v2를 이용하여 만들어 졌습니다. 반드시 메뉴얼을 보시고 사용 부탁드립니다. ->
과 의 개념을 이해하시는 것이 개발 하는데에 있어서 더 도움이 될 것 입니다.
Coolsms 사이트에서도 다운로드 받으실 수 있습니다. 해당 압축파일에는 Coolsms PHP SDK, 코드 샘플이 포함되어 있습니다. ->
Github를 통해 소스를 가져올 수 있습니다. ->
로 가서 회원가입을 해주세요.
페이지로 가서 생성 버튼을 눌러 API_KEY와 API_SECRET을 발급 받아주세요.
이제 PHP SDK를 사용할 준비가 되었습니다! 을 통해 사용 방법을 알아보세요.
SMS API와 SMS API v2 의 차이점은 에서 확인 할 수 있으며 JAVA SDK v2.0은 Maven등을 이용하여 보다 최신의 기술을
* 10월 16일 이후로 발신번호 사전등록제로 인해 등록된 발신번호로만 문자를 보내실 수 있습니다.
// 그외 parameters, 참조
참고
* 10월 16일 이후로 발신번호 사전등록제로 인해 등록된 발신번호로만 문자를 보내실 수 있습니다.
data.Values['to'] := '01000000000'; // 수신번호 * 10월 16일 이후로 발신번호 사전등록제로 인해 등록된 발신번호로만 문자를 보내실 수 있습니다.
data.Values['to'] := '01000000000'; // 수신번호 * 10월 16일 이후로 발신번호 사전등록제로 인해 등록된 발신번호로만 문자를 보내실 수 있습니다.
data.Values['to'] := '01000000000'; // 수신번호 * 10월 16일 이후로 발신번호 사전등록제로 인해 등록된 발신번호로만 문자를 보내실 수 있습니다.
// parameters, 참조 data := TStringList.create; data.Values['mid'] := 'R1M55D585C2CE9E9'; // 메시지ID // data.Values['gid'] := ''; // 그룹ID
// 그외 parameters, 참조 { data.Values['count'] 기본값 20이며 20개의 목록을 받을 수 있음. 40입력시 40개의 목록이 리턴 data.Values['page'] 1부터 시작하는 페이지값 data.Values['rcpt'] 수신번호로 검색 data.Values['start'] 검색 시작일시 접수 날짜와 시간으로 검색 YYYY-MM-DD HH:MI:SS 포맷의 날짜와 시간 data.Values['end'] 검색 종료일시 접수 날짜와 시간으로 검색 YYYY-MM-DD HH:MI:SS 포맷의 날짜와 시간 data.Values['status'] 메시지 상태 값으로 검색 data.Values['resultcode'] 전송결과 값으로 검색 data.Values['notin_resultcode'] 입력된 전송결과 값 이외의 건들만 조회 data.Values['gid'] 그룹ID }
// 남은잔액 요청, 참조 jsonObject := coolsms.balance(); if strToBool(jsonObject.GetValue('status').ToString) = TRUE then begin Writeln('성공'); Writeln('cash : ' + jsonObject.Get('cash').JsonValue.ToString); Writeln('point : ' + jsonObject.Get('point').JsonValue.ToString); end else begin Writeln('실패'); if jsonObject.Get('code').Equals(Nil) = FALSE then Writeln('code : ' + jsonObject.Get('code').JsonValue.ToString); if jsonObject.Get('message').Equals(Nil) = FALSE then Writeln('message : ' + jsonObject.Get('message').JsonValue.ToString); end;
관련 정보는 를 참고해주세요.
begin try // 참조
begin try // 참조
begin try // 참조
begin try // 참조
begin try // 참조
begin try // 참조