문자
관리툴, 엑셀 대량 발송, API 연동 등 다양한 방법으로 발송 가능한 문자 서비스입니다.
API 를 연동하기 전, 관리툴에서 발송 IP,
발신번호등록, API Key를 먼저 설정하세요.
관리툴(sms.gabia.com) 설정 단계
1 .발송 IP 등록기본 설정 -> API 발송 IP 설정
2. 발신 번호 등록환경 설정 -> 발신 번호
3. API Key 발급 관리자 -> 서비스 정보 -> 관리 중인 서비스 -> API 인증키 정보
가비아 문자 서비스는
REST API 연동 방식을 지원합니다.
REST API
단문, 장문, 포토, 국제 문자(단문) 발송 가능
제공 언어: PHP, JAVA, PYTHON,
NODE, RUBY, GO, cURL
사용자 인증
SMS ID와 API Key로 토큰을 발행해 사용자를 인증합니다.
POSThttps://sms.gabia.com/oauth/token
HEADERS
Content-Type | application/x-www-form-urlencoded |
---|---|
Authorization |
Basic base64encode(SMS_ID:API_KEY) (예) Basic c1hY3JvY2sZDAwNzA2YzJlMTdjZjlkMz1234hlM2U5YjQ= |
BODY
grant_type | client_credentials |
---|
RESPONSE
성공케이스 | {
access_token": "your_access_token", } |
---|---|
실패케이스 |
{"message": "SMS ID나 API KEY가 잘못되었습니다."} {"message": "unsupported_grant_type (grant_type 값을 확인해주세요.)"}
* Authorization 값 확인이 안 되는 경우, {"message": "client_id empty"} 또는 {"message": "client_secret
empty"}가 출력됩니다. |
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://sms.gabia.com/oauth/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "grant_type=client_credentials",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/x-www-form-urlencoded",
"Authorization: Basic c1hY3JvY2sZDAwNzA2YzJlMTdjZjlkMz1234hlM2U5YjQ="
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
import com.google.gson.Gson;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.HashMap;
import java.util.Objects;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
// 외부 라이브러리 다운로드가 필요합니다. (gradle 기준)
// implementation 'com.squareup.okhttp3:okhttp:4.9.3'
https://mvnrepository.com/artifact/com.squareup.okhttp/okhttp
// implementation 'com.google.code.gson:gson:2.9.0' https://github.com/google/gson
public class userAuth {
public static final String SMS_OAUTH_TOKEN_URL = "https://sms.gabia.com/oauth/token"; // ACCESS
TOKEN 발급 API URL 입니다.
public static void main(String[] args) throws IOException {
String smsId = "YOUR_SMS_ID"; // SMS ID 를 입력해 주세요.
String apiKey = "YOUR_API_KEY"; // SMS 관리툴에서 발급받은 API KEY 를 입력해 주세요.
String authValue =
Base64.getEncoder().encodeToString(String.format("%s:%s", smsId,
apiKey).getBytes(StandardCharsets.UTF_8)); // Authorization Header 에 입력할 값입니다.
// 사용자 인증 API 를 호출합니다.
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("grant_type", "client_credentials")
.build();
Request request = new Request.Builder()
.url(SMS_OAUTH_TOKEN_URL)
.post(requestBody)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("Authorization", "Basic " + authValue)
.addHeader("cache-control", "no-cache")
.build();
// Response 를 key, value 로 확인하실 수 있습니다.
Response response = client.newCall(request).execute();
HashMap<String, String> result = new
Gson().fromJson(Objects.requireNonNull(response.body()).string(), HashMap.class);
for(String key : result.keySet()) {
System.out.printf("%s: %s%n", key, result.get(key));
}
}
}
import requests
url = 'https://sms.gabia.com/oauth/token'
payload = 'grant_type=client_credentials'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic c1hY3JvY2sZDAwNzA2YzJlMTdjZjlkMz1234hlM2U5YjQ='
}
response = requests.request('POST', url, headers = headers, data = payload, allow_redirects=False,
timeout=undefined)
print(response.text)
// Node.js에서 fetch 사용: Node.js 18 버전 이상에서는 fetch가 기본적으로 내장되어 있습니다.
// 하지만 그 이하 버전에서는 node-fetch 패키지를 설치해야 합니다.
// npm install node-fetch
// 그런 다음 코드 상단에 다음과 같이 fetch와 Headers를 가져와야 합니다.
// const fetch = require('node-fetch');
// const { Headers } = require('node-fetch');
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
myHeaders.append("Authorization", "Basic YOUR_TOKEN_HERE"); // 실제 토큰으로 대체하세요.
const urlencoded = new URLSearchParams();
urlencoded.append("grant_type", "client_credentials");
const requestOptions = {
method: 'POST',
headers: myHeaders,
body: urlencoded,
redirect: 'follow'
};
fetch("https://sms.gabia.com/oauth/token", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.error('error', error));
require "uri"
require "net/http"
url = URI("https://sms.gabia.com/oauth/token")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/x-www-form-urlencoded"
request["Authorization"] = "Basic c1hY3JvY2sZDAwNzA2YzJlMTdjZjlkMz1234hlM2U5YjQ="
request.body = "grant_type=client_credentials"
response = https.request(request)
puts response.read_body
curl --location --request POST
"https://sms.gabia.com/oauth/token" \
--header "Content-Type: application/x-www-form-urlencoded" \
--header "Authorization: Basic c1hY3JvY2sZDAwNzA2YzJlMTdjZjlkMz1234hlM2U5YjQ=" \
--data "grant_type=client_credentials"
package main
import (
"fmt"
"strings"
"os"
"path/filepath"
"net/http"
"io/ioutil"
)
func main() {
url := "https://sms.gabia.com/oauth/token"
method := "POST"
payload := strings.NewReader("grant_type=client_credentials")
client := &http.Client {
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
},
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
req.Header.Add("Authorization", "Basic c1hY3JvY2sZDAwNzA2YzJlMTdjZjlkMz1234hlM2U5YjQ=")
res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
단문(SMS) 발송 하기
단문으로 문자를 발송할 수 있습니다. 90byte까지 단문으로 발송되며, 90byte가 넘는 경우에는 단문으로 잘려 발송됩니다.
POSThttps://sms.gabia.com/api/send/sms
HEADERS
Content-Type | application/x-www-form-urlencoded |
---|---|
Authorization |
Basic base64encode(SMS_ID:ACCESS_TOKEN) (예) Basic DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc= |
BODY
phone | 01000000000 |
---|---|
callback | 15444370 |
message | SMS TEST MESSAGE |
refkey |
RESTAPITEST1549847130 Any unique string to find your result of send after |
is_foreign (국제 문자 발송 시) |
Y 국제 번호로 문자 발송을 원하는 경우, 해당 값을 Y로 넣어 주세요. 국제 문자 발송은 80byte의 단문(SMS)만 지원하며, 발송 시 6건이 차감됩니다. |
RESPONSE
성공케이스 | {
"code": "200",
"BEFORE_SMS_QTY": "발송 전 메시지 잔여량", } } |
---|---|
실패케이스 | {
"code": false, } {
"code": "token_verification_failed", } ... |
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://sms.gabia.com/api/send/sms",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS =>
"phone=01000000000&callback=15444370&message=SMS TEST MESSAGE&refkey=[[RESTAPITEST1549847130]]",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/x-www-form-urlencoded",
"Authorization: Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
import com.google.gson.Gson;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.HashMap;
import java.util.Objects;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
// 외부 라이브러리 다운로드가 필요합니다. (gradle 기준)
// implementation 'com.squareup.okhttp3:okhttp:4.9.3'
https://mvnrepository.com/artifact/com.squareup.okhttp/okhttp
// implementation 'com.google.code.gson:gson:2.9.0' https://github.com/google/gson
public class sendSMS {
public static final String SMS_SEND_URL = "https://sms.gabia.com/api/send/sms"; // SMS 발송 API URL 입니다.
public static void main(String[] args) throws IOException {
String smsId = "YOUR_SMS_ID"; // SMS ID 를 입력해 주세요.
String accessToken = "YOUR_ACCESS_TOKEN"; // ACCESS TOKEN 을 입력해 주세요.
String authValue =
Base64.getEncoder().encodeToString(String.format("%s:%s", smsId,
accessToken).getBytes(StandardCharsets.UTF_8)); // Authorization Header 에 입력할 값입니다.
// SMS 발송 API 를 호출합니다.
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("phone", "RECEIPT_PHONE_NUMBER") // 수신번호를 입력해 주세요. (수신번호가 두 개 이상인 경우 ',' 를 이용하여 입력합니다. ex) 01011112222,01033334444)
.addFormDataPart("callback", "CALLING_PHONE_NUMBER") // 발신번호를 입력해 주세요.
.addFormDataPart("message", "SMS_CONTENT") // SMS 내용을 입력해 주세요.
.addFormDataPart("refkey", "YOUR_REF_KEY") // 발송 결과 조회를 위한 임의의 랜덤 키 값을 입력해 주세요.
.build();
Request request = new Request.Builder()
.url(SMS_SEND_URL)
.post(requestBody)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("Authorization", "Basic " + authValue)
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Response 를 key, value 로 확인하실 수 있습니다.
HashMap<String, String> result = new
Gson().fromJson(Objects.requireNonNull(response.body()).string(), HashMap.class);
for(String key : result.keySet()) {
System.out.printf("%s: %s%n", key, result.get(key));
}
}
}
import requests
url = 'https://sms.gabia.com/api/send/sms'
payload =
'phone=01000000000&callback=15444370&message=SMS TEST MESSAGE&refkey=[[RESTAPITEST1549847130]]'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc='
}
response = requests.request('POST', url, headers = headers, data = payload, allow_redirects=False,
timeout=undefined)
print(response.text)
// Node.js에서 fetch 사용: Node.js 18 버전 이상에서는 fetch가 기본적으로 내장되어 있습니다.
// 하지만 그 이하 버전에서는 node-fetch 패키지를 설치해야 합니다.
// npm install node-fetch
// 그런 다음 코드 상단에 다음과 같이 fetch와 Headers를 가져와야 합니다.
// const fetch = require('node-fetch');
// const { Headers } = require('node-fetch');
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
myHeaders.append("Authorization", "Basic YOUR_TOKEN_HERE"); // 실제 토큰으로 대체하세요.
const urlencoded = new URLSearchParams();
urlencoded.append("phone", "01000000000");
urlencoded.append("callback", "15444370");
urlencoded.append("message", "SMS TEST MESSAGE");
urlencoded.append("refkey", "RESTAPITEST1547771538");
const requestOptions = {
method: "POST",
headers: myHeaders,
body: urlencoded,
redirect: "follow"
};
fetch("https://sms.gabia.com/api/send/sms", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));
require "uri"
require "net/http"
url = URI("https://sms.gabia.com/api/send/sms")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/x-www-form-urlencoded"
request["Authorization"] = "Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
request.body =
"phone=01000000000&callback=15444370&message=SMS TEST MESSAGE&refkey=[[RESTAPITEST1549847130]]"
response = https.request(request)
puts response.read_body
curl --location --request POST
"https://sms.gabia.com/api/send/sms" \
--header "Content-Type: application/x-www-form-urlencoded" \
--header "Authorization: Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
\
--data
"phone=01000000000&callback=15444370&message=SMS TEST MESSAGE&refkey=[[RESTAPITEST1549847130]]"
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://sms.gabia.com/api/send/sms"
method := "POST"
payload :=
strings.NewReader("phone=01000000000&callback=15444370&message=SMS TEST MESSAGE&refkey=[[RESTAPITEST1549847130]]")
client := &http.Client {
CheckRedirect: func(req *http.Request, via []*http.Request) error {
},
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
req.Header.Add("Authorization", "Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc=")
res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
장문(LMS) 발송 하기
장문으로 문자를 발송할 수 있습니다. 문자 내용에 제목을 추가할 수 있습니다.
POSThttps://sms.gabia.com/api/send/lms
HEADERS
Content-Type | application/x-www-form-urlencoded |
---|---|
Authorization |
Basic base64encode(SMS_ID:ACCESS_TOKEN) (예) Basic DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc= |
BODY
phone | 01000000000 |
---|---|
callback | 15444370 |
message | LMS TEST MESSAGE |
refkey |
RESTAPITEST1549847130 Any unique string to find your result of send after |
use_gabia_ars (ARS 수신거부 사용 시) |
Y ARS 수신거부 사용을 원하는 경우, 해당값을 Y로 넣어주세요. 문자 마지막에 줄 바꿈후 "무료수신거부 080-004-4370 인증(인증번호)" 문구가 추가됩니다. |
RESPONSE
성공케이스 | {
"code": "200",
"BEFORE_SMS_QTY": "발송 전 메시지 잔여량", } } |
---|---|
실패케이스 | {
"code": false, } {
"code": "token_verification_failed", } ... |
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://sms.gabia.com/api/send/lms",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS =>
"phone=01000000000&callback=15444370&message=LMS TEST MESSAGE&refkey=[[RESTAPITEST1549847130]]&subject=LMS TEST SUBJECT",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/x-www-form-urlencoded",
"Authorization: Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
import com.google.gson.Gson;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.HashMap;
import java.util.Objects;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
// 외부 라이브러리 다운로드가 필요합니다. (gradle 기준)
// implementation 'com.squareup.okhttp3:okhttp:4.9.3'
https://mvnrepository.com/artifact/com.squareup.okhttp/okhttp
// implementation 'com.google.code.gson:gson:2.9.0' https://github.com/google/gson
public class sendLMS {
public static final String LMS_SEND_URL = "https://sms.gabia.com/api/send/lms"; // LMS 발송 API URL
입니다.
public static void main(String[] args) throws IOException {
String smsId = "YOUR_SMS_ID"; // SMS ID 를 입력해 주세요.
String accessToken = "YOUR_ACCESS_TOKEN"; // ACCESS TOKEN 을 입력해 주세요.
String authValue =
Base64.getEncoder().encodeToString(String.format("%s:%s", smsId,
accessToken).getBytes(StandardCharsets.UTF_8)); // Authorization Header 에 입력할 값입니다.
// LMS 발송 API 를 호출합니다.
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("phone", "RECEIPT_PHONE_NUMBER") // 수신번호를 입력해 주세요. (수신번호가 두 개 이상인 경우 ',' 를 이용하여 입력합니다. ex) 01011112222,01033334444)
.addFormDataPart("callback", "CALLING_PHONE_NUMBER") // 발신번호를 입력해 주세요.
.addFormDataPart("message", "LMS_CONTENT") // LMS 내용을 입력해 주세요.
.addFormDataPart("refkey", "YOUR_REF_KEY") // 발송 결과 조회를 위한 임의의 랜덤 키 값을 입력해 주세요.
.addFormDataPart("subject", "LMS_TITLE") // LMS 제목을 입력해 주세요.
.build();
Request request = new Request.Builder()
.url(LMS_SEND_URL)
.post(requestBody)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("Authorization", "Basic " + authValue)
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Response 를 key, value 로 확인하실 수 있습니다.
HashMap<String, String> result = new
Gson().fromJson(Objects.requireNonNull(response.body()).string(), HashMap.class);
for(String key : result.keySet()) {
System.out.printf("%s: %s%n", key, result.get(key));
}
}
}
import requests
url = 'https://sms.gabia.com/api/send/lms'
payload =
'phone=01000000000&callback=15444370&message=LMS TEST MESSAGE&refkey=[[RESTAPITEST1549847130]]&subject=LMS TEST SUBJECT'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc='
}
response = requests.request('POST', url, headers = headers, data = payload, allow_redirects=False,
timeout=undefined)
print(response.text)
// Node.js에서 fetch 사용: Node.js 18 버전 이상에서는 fetch가 기본적으로 내장되어 있습니다.
// 하지만 그 이하 버전에서는 node-fetch 패키지를 설치해야 합니다.
// npm install node-fetch
// 그런 다음 코드 상단에 다음과 같이 fetch와 Headers를 가져와야 합니다.
// const fetch = require('node-fetch');
// const { Headers } = require('node-fetch');
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
myHeaders.append("Authorization", "Basic YOUR_TOKEN_HERE"); // 실제 토큰으로 대체하세요.
const urlencoded = new URLSearchParams();
urlencoded.append("phone", "01000000000");
urlencoded.append("callback", "15444370");
urlencoded.append("message", "LMS TEST MESSAGE");
urlencoded.append("refkey", "RESTAPITEST1547771538");
urlencoded.append("subject", "LMS TEST SUBJECT");
const requestOptions = {
method: 'POST',
headers: myHeaders,
body: urlencoded,
redirect: 'follow'
};
fetch("https://sms.gabia.com/api/send/lms", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.error('error', error));
require "uri"
require "net/http"
url = URI("https://sms.gabia.com/api/send/lms")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/x-www-form-urlencoded"
request["Authorization"] = "Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
request.body =
"phone=01000000000&callback=15444370&message=LMS TEST MESSAGE&refkey=[[RESTAPITEST1549847130]]&subject=LMS TEST SUBJECT"
response = https.request(request)
puts response.read_body
curl --location --request POST
"https://sms.gabia.com/api/send/lms" \
--header "Content-Type: application/x-www-form-urlencoded" \
--header "Authorization: Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
\
--data
"phone=01000000000&callback=15444370&message=LMS TEST MESSAGE&refkey=[[RESTAPITEST1549847130]]&subject=LMS TEST SUBJECT"
package main
import (
"fmt"
"strings"
"os"
"path/filepath"
"net/http"
"io/ioutil"
)
func main() {
url := "https://sms.gabia.com/api/send/lms"
method := "POST"
payload :=
strings.NewReader("phone=01000000000&callback=15444370&message=LMS TEST MESSAGE&refkey=[[RESTAPITEST1549847130]]&subject=LMS TEST SUBJECT")
client := &http.Client {
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
},
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
}
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
req.Header.Add("Authorization", "Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc=")
res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
포토(MMS) 발송 하기
단문/장문 문자에서 이미지를 첨부하여 발송할 수 있습니다. 이미지는 100kb 미만의 파일을 최대 3개까지 발송할 수 있으며, jpg 형식의 파일만 사용 가능합니다.
POSThttps://sms.gabia.com/api/send/mms
HEADERS
Authorization |
Basic base64encode(SMS_ID:ACCESS_TOKEN) (예) Basic DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc= |
---|
BODY
phone | 01000000000 |
---|---|
callback | 15444370 |
message | MMS TEST MESSAGE |
refkey |
RESTAPITEST1549847130 Any unique string to find your result of send after |
subject | MMS TEST SUBJECT |
image_cnt |
2 Max image count is 3. images0 ~ images2 |
images0 | File Resource |
images1 | File Resource |
use_gabia_ars (ARS 수신거부 사용 시) |
Y ARS 수신거부 사용을 원하는 경우, 해당값을 Y로 넣어주세요. 문자 마지막에 줄 바꿈후 "무료수신거부 080-004-4370 인증(인증번호)" 문구가 추가됩니다. |
RESPONSE
성공케이스 | {
"code": "200",
"BEFORE_SMS_QTY": "발송 전 메시지 잔여량", } } |
---|---|
실패케이스 | {
"code": false, } {
"code": "token_verification_failed", } ... |
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://sms.gabia.com/api/send/mms",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => array('phone' => '01000000000','callback' => '15444370','message' => 'MMS
TEST MESSAGE','refkey' => 'RESTAPITEST1548722798','subject' => 'MMS TEST SUBJECT','image_cnt' =>
'2','images0'=> new CURLFILE(''),'images1'=> new CURLFILE('')),
CURLOPT_HTTPHEADER => array(
"Authorization: Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
package example.api;
import com.google.gson.Gson;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.HashMap;
import java.util.Objects;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
// 외부 라이브러리 다운로드가 필요합니다. (gradle 기준)
// implementation 'com.squareup.okhttp3:okhttp:4.9.3'
https://mvnrepository.com/artifact/com.squareup.okhttp/okhttp
// implementation 'com.google.code.gson:gson:2.9.0' https://github.com/google/gson
public class sendMMS {
public static final String MMS_SEND_URL = "https://sms.gabia.com/api/send/mms"; // MMS 발송 API URL
입니다.
public static void main(String[] args) throws IOException {
String smsId = "YOUR_SMS_ID"; // SMS ID 를 입력해 주세요.
String accessToken = "YOUR_ACCESS_TOKEN"; // ACCESS TOKEN 을 입력해 주세요.
String authValue =
Base64.getEncoder().encodeToString(String.format("%s:%s", smsId,
accessToken).getBytes(StandardCharsets.UTF_8));
// MMS 발송 API 를 호출합니다.
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("phone", "RECEIPT_PHONE_NUMBER") // 수신번호를 입력해 주세요. (수신번호가 두 개 이상인 경우 ',' 를 이용하여 입력합니다. ex) 01011112222,01033334444)
.addFormDataPart("callback", "CALLING_PHONE_NUMBER") // 발신번호를 입력해 주세요.
.addFormDataPart("message", "MMS_CONTENT") // MMS 내용을 입력해 주세요.
.addFormDataPart("refkey", "YOUR_REF_KEY") // 발송 결과 조회를 위한 임의의 랜덤 키를 입력해 주세요.
.addFormDataPart("subject", "MMS_TITLE") // MMS 제목을 입력해 주세요.
.addFormDataPart("image_cnt", "1 ~ 3") // 이미지 첨부 개수를 입력해 주세요. (최대 3개까지 첨부 가능합니다.)
.addFormDataPart("images0", "FILE_NAME", RequestBody.create(new File("FILE_PATH"),
MultipartBody.FORM)) // 이미지 파일을 첨부합니다. (첨부하는 이미지 개수에 맞게 주석 처리를 해주세요.)
.addFormDataPart("images1", "FILE_NAME", RequestBody.create(new File("FILE_PATH"),
MultipartBody.FORM)) // 이미지 파일을 첨부합니다.
.addFormDataPart("images2", "FILE_NAME", RequestBody.create(new File("FILE_PATH"),
MultipartBody.FORM)) // 이미지 파일을 첨부합니다.
.build();
Request request = new Request.Builder()
.url(MMS_SEND_URL)
.post(requestBody)
.addHeader("Authorization", "Basic " + authValue)
.build();
Response response = client.newCall(request).execute();
// Response 를 key, value 로 확인하실 수 있습니다.
HashMap<String, String> result = new
Gson().fromJson(Objects.requireNonNull(response.body()).string(), HashMap.class);
for(String key : result.keySet()) {
System.out.printf("%s: %s%n", key, result.get(key));
}
}
}
import requests
url = 'https://sms.gabia.com/api/send/mms'
payload = {'phone': '01000000000',
'callback': '15444370',
'message': 'MMS TEST MESSAGE',
'refkey': 'RESTAPITEST1548722756',
'subject': 'MMS TEST SUBJECT',
'image_cnt': '2'}
files = {('images0': open('','rb'),('images1': open('','rb')}
headers = {
'Authorization': 'Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc='
}
response = requests.request('POST', url, headers = headers, data = payload, files = files,
allow_redirects=False, timeout=undefined)
print(response.text)
// Node.js에서 fetch 사용: Node.js 18 버전 이상에서는 fetch가 기본적으로 내장되어 있습니다.
// 하지만 그 이하 버전에서는 node-fetch 패키지를 설치해야 합니다.
// npm install node-fetch
// 그런 다음 코드 상단에 다음과 같이 fetch와 Headers를 가져와야 합니다.
// const fetch = require('node-fetch');
const FormData = require('form-data'); // 설치 필요
const fs = require('fs'); // 파일 시스템 접근을 위해 필요
const myHeaders = {
'Authorization': `Basic YOUR_TOKEN_HERE` // 실제 토큰으로 대체하세요
};
const form = new FormData();
form.append('phone', '01000000000');
form.append('callback', '15444370');
form.append('message', 'MMS TEST MESSAGE');
form.append('refkey', 'RESTAPITEST1547771538');
form.append('subject', 'MMS TEST SUBJECT');
form.append('image_cnt', '2');
form.append('images0', fs.createReadStream('/path/to/image1.jpg'), 'image1.jpg');
form.append('images1', fs.createReadStream('/path/to/image2.jpg'), 'image2.jpg');
const requestOptions = {
method: 'POST',
headers: {
...myHeaders,
...form.getHeaders()
},
body: form,
redirect: 'follow'
};
(async () => {
try {
const response = await fetch("https://sms.gabia.com/api/send/mms", requestOptions);
if (!response.ok) {
throw new Error(`HTTP error! 상태 코드: ${response.status}`);
}
const result = await response.text();
console.log(result);
} catch (error) {
console.error('error', error);
}
})();
require "uri"
require "net/http"
url = URI("https://sms.gabia.com/api/send/mms")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
request["content-type"] = 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'
request.body = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data;
name=\"phone\"\r\n\r\n01000000000\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition:
form-data;
name=\"callback\"\r\n\r\n15444370\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition:
form-data; name=\"message\"\r\n\r\nMMS TEST
MESSAGE\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data;
name=\"refkey\"\r\n\r\nRESTAPITEST1548722726\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition:
form-data; name=\"subject\"\r\n\r\nMMS TEST
SUBJECT\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data;
name=\"image_cnt\"\r\n\r\n2\r\n\"images0\"' = '')\"images1\"' =
'')------WebKitFormBoundary7MA4YWxkTrZu0gW--"
response = https.request(request)
puts response.read_body
curl --location --request POST
"https://sms.gabia.com/api/send/mms" \
--header "Authorization: Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
\
--form "phone=01000000000" \
--form "callback=15444370" \
--form "message=MMS TEST MESSAGE" \
--form "refkey=RESTAPITEST1547715451" \
--form "subject=MMS TEST SUBJECT" \
--form "image_cnt=2" \
--form "images0=@" \
--form "images1=@"
package main
import (
"fmt"
"bytes"
"mime/multipart"
"os"
"path/filepath"
"net/http"
"io/ioutil"
)
func main() {
url := "https://sms.gabia.com/api/send/mms"
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
_ = writer.WriteField("phone", "01000000000")
_ = writer.WriteField("callback", "15444370")
_ = writer.WriteField("message", "MMS TEST MESSAGE")
_ = writer.WriteField("refkey", "RESTAPITEST1548722847")
_ = writer.WriteField("subject", "MMS TEST SUBJECT")
_ = writer.WriteField("image_cnt", "2")
// add your file name in the next statement in place of path
file, err := os.Open(path)
defer file.Close()
part, err := writer.CreateFormFile("file", filepath.Base(path))
_, err := io.Copy(part, file)
// add your file name in the next statement in place of path
file, err := os.Open(path)
defer file.Close()
part, err := writer.CreateFormFile("file", filepath.Base(path))
_, err := io.Copy(part, file)
err := writer.Close()
if err != nil { fmt.Println(err)}
client := &http.Client {
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
},
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc=")
req.Header.Set("Content-Type", writer.FormDataContentType())
res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
잔여 건수 조회
발송 후, 총 잔여 건수를 조회할 수 있습니다. 메시지(sms)와 ARS 건수를 제공합니다.
GEThttps://sms.gabia.com/api/user/info
HEADERS
Authorization |
Basic base64encode(SMS_ID:ACCESS_TOKEN) (예) DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc= |
---|
RESPONSE
성공케이스 | {
"code": "200",
"gabia_id": "gabia id", } } |
---|---|
실패케이스 | {
"code": false, } {
"code": "token_verification_failed", } ... |
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://sms.gabia.com/api/user/info",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
import com.google.gson.Gson;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.HashMap;
import java.util.Objects;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
// 외부 라이브러리 다운로드가 필요합니다. (gradle 기준)
// implementation 'com.squareup.okhttp3:okhttp:4.9.3'
https://mvnrepository.com/artifact/com.squareup.okhttp/okhttp
// implementation 'com.google.code.gson:gson:2.9.0' https://github.com/google/gson
public class userInfo {
public static final String USER_INFO_URL = "https://sms.gabia.com/api/user/info"; // 잔여 건수 조회 API
URL 입니다.
public static void main(String[] args) throws IOException {
String smsId = "YOUR_SMS_ID"; // SMS ID 를 입력해 주세요.
String accessToken = "YOUR_ACCESS_TOKEN"; // ACCESS TOKEN 을 입력해 주세요.
String authValue =
Base64.getEncoder().encodeToString(String.format("%s:%s", smsId,
accessToken).getBytes(StandardCharsets.UTF_8)); // Authorization Header 에 입력할 값입니다.
// 잔여 건수 조회 API 를 호출합니다.
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(USER_INFO_URL)
.get()
.addHeader("Authorization", "Basic " + authValue)
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Response 를 key, value 로 확인하실 수 있습니다.
HashMap<String, String> result = new
Gson().fromJson(Objects.requireNonNull(response.body()).string(), HashMap.class);
for(String key : result.keySet()) {
System.out.printf("%s: %s%n", key, result.get(key));
}
}
}
import requests
url = 'https://sms.gabia.com/api/user/info'
payload = {}
headers = {
'Authorization': 'Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc='
}
response = requests.request('GET', url, headers = headers, data = payload, allow_redirects=False,
timeout=undefined)
print(response.text)
// Node.js에서 fetch 사용: Node.js 18 버전 이상에서는 fetch가 기본적으로 내장되어 있습니다.
// 하지만 그 이하 버전에서는 node-fetch 패키지를 설치해야 합니다.
// npm install node-fetch
// 그런 다음 코드 상단에 다음과 같이 fetch와 Headers를 가져와야 합니다.
// const fetch = require('node-fetch');
// const { Headers } = require('node-fetch');
const myHeaders = new Headers();
myHeaders.append("Authorization", "Basic YOUR_TOKEN_HERE"); // 실제 토큰으로 대체하세요.
const requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://sms.gabia.com/api/user/info", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.error('error', error));
require "uri"
require "net/http"
url = URI("https://sms.gabia.com/api/user/info")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
response = https.request(request)
puts response.read_body
curl --location --request GET
"https://sms.gabia.com/api/user/info" \
--header "Authorization: Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
package main
import (
"fmt"
"os"
"path/filepath"
"net/http"
"io/ioutil"
)
func main() {
url := "https://sms.gabia.com/api/user/info"
method := "GET"
client := &http.Client {
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
},
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc=")
res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
발송 결과 확인
문자 발송 시, 사용자가 지정한 refkey (발송 시 사용한 unique key 값)로 실제 발송 상태를 확인할 수 있습니다.
GET https://sms.gabia.com/api/result_log/byRefkey?refkey=RESTAPITEST1547168952
HEADERS
Authorization |
Basic base64encode(SMS_ID:ACCESS_TOKEN) (예) Basic DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc= |
---|
PARAMS
refkey |
RESTAPITEST1547168952 The unique string that when you used send message |
---|
RESPONSE
성공케이스 | {
"code": "200",
"log_no": "000000000", }] } |
---|---|
실패케이스 | {
"code": false, } {
"code": "token_verification_failed", } ... |
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://sms.gabia.com/api/result_log/byRefkey?refkey=RESTAPITEST1547168952",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
import com.google.gson.Gson;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.HashMap;
import java.util.Objects;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
// 외부 라이브러리 다운로드가 필요합니다. (gradle 기준)
// implementation 'com.squareup.okhttp3:okhttp:4.9.3'
https://mvnrepository.com/artifact/com.squareup.okhttp/okhttp
// implementation 'com.google.code.gson:gson:2.9.0' https://github.com/google/gson
public class resultLog {
public static final String RESULT_LOG_URL =
"https://sms.gabia.com/api/result_log/byRefkey?refkey="; // 문자 발송 결과 조회 API URL 입니다.
public static void main(String[] args) throws IOException {
String smsId = "YOUR_SMS_ID"; // SMS ID 를 입력해 주세요.
String accessToken = "YOUR_ACCESS_TOKEN"; // ACCESS TOKEN 을 입력해 주세요.
String refKey = "YOUR_REF_KEY"; // 문자 발송 API 호출시 입력한 refkey 값을 입력해 주세요.
String authValue =
Base64.getEncoder().encodeToString(String.format("%s:%s", smsId,
accessToken).getBytes(StandardCharsets.UTF_8));
// 문자 발송 결과 조회 API 를 호출합니다.
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(RESULT_LOG_URL + refKey)
.get()
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("Authorization", "Basic " + authValue)
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Response 를 key, value 로 확인하실 수 있습니다.
HashMap<String, String> result = new
Gson().fromJson(Objects.requireNonNull(response.body()).string(), HashMap.class);
for(String key : result.keySet()) {
System.out.printf("%s: %s%n", key, result.get(key));
}
}
}
import requests
url = 'https://sms.gabia.com/api/result_log/byRefkey?refkey=RESTAPITEST1547168952'
payload = {}
headers = {
'Authorization': 'Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc='
}
response = requests.request('GET', url, headers = headers, data = payload, allow_redirects=False,
timeout=undefined)
print(response.text)
// Node.js에서 fetch 사용: Node.js 18 버전 이상에서는 fetch가 기본적으로 내장되어 있습니다.
// 하지만 그 이하 버전에서는 node-fetch 패키지를 설치해야 합니다.
// npm install node-fetch
// 그런 다음 코드 상단에 다음과 같이 fetch와 Headers를 가져와야 합니다.
// const fetch = require('node-fetch');
// const { Headers } = require('node-fetch');
const myHeaders = new Headers();
myHeaders.append("Authorization", "Basic YOUR_TOKEN_HERE"); // 실제 토큰으로 대체하세요.
const requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://sms.gabia.com/api/result_log/byRefkey?refkey=RESTAPITEST1547168952", requestOptions) // 실제 refkey로 대체하세요.
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.error('error', error));
require "uri"
require "net/http"
url = URI("https://sms.gabia.com/api/result_log/byRefkey?refkey=RESTAPITEST1547168952")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
response = https.request(request)
puts response.read_body
curl --location --request GET
"https://sms.gabia.com/api/result_log/byRefkey?refkey=RESTAPITEST1547168952" \
--header "Authorization: Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
package main
import (
"fmt"
"os"
"path/filepath"
"net/http"
"io/ioutil"
)
func main() {
url := "https://sms.gabia.com/api/result_log/byRefkey?refkey=RESTAPITEST1547168952"
method := "GET"
client := &http.Client {
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
},
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc=")
res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
발신번호 리스트 조회
사용 가능 여부와 관계 없이, 리스트에 있는 모든 발신번호를 확인할 수 있습니다.
GET https://sms.gabia.com/api/callback/list
HEADERS
Authorization |
Basic base64encode(SMS_ID:ACCESS_TOKEN) (예) Basic DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc= |
---|
RESPONSE
성공케이스 | {
"code": "200",
"phone": "010-0000-0000", }] } |
---|---|
실패케이스 | {
"code": false, } {
"code": "token_verification_failed", } ... |
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://sms.gabia.com/api/callback/list",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
import com.google.gson.Gson;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.HashMap;
import java.util.Objects;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
// 외부 라이브러리 다운로드가 필요합니다. (gradle 기준)
// implementation 'com.squareup.okhttp3:okhttp:4.9.3'
https://mvnrepository.com/artifact/com.squareup.okhttp/okhttp
// implementation 'com.google.code.gson:gson:2.9.0' https://github.com/google/gson
public class callback {
public static final String CALL_BACK_LIST_URL = "https://sms.gabia.com/api/callback/list"; // 발신번호
리스트 조회 API URL 입니다.
public static void main(String[] args) throws IOException {
String smsId = "YOUR_SMS_ID"; // SMS ID 를 입력해 주세요.
String accessToken = "YOUR_ACCESS_TOKEN"; // ACCESS TOKEN 을 입력해 주세요.
String authValue =
Base64.getEncoder().encodeToString(String.format("%s:%s", smsId,
accessToken).getBytes(StandardCharsets.UTF_8)); // Authorization Header 에 입력할 값입니다.
// 발신번호 리스트 조회 API 를 호출합니다.
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(CALL_BACK_LIST_URL)
.get()
.addHeader("Authorization", "Basic " + authValue)
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
// Response 를 key, value 로 확인하실 수 있습니다.
HashMap<String, String> result = new
Gson().fromJson(Objects.requireNonNull(response.body()).string(), HashMap.class);
for(String key : result.keySet()) {
System.out.printf("%s: %s%n", key, result.get(key));
}
}
}
import requests
url = 'https://sms.gabia.com/api/callback/list'
payload = {}
headers = {
'Authorization': 'Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc='
}
response = requests.request('GET', url, headers = headers, data = payload, allow_redirects=False,
timeout=undefined)
print(response.text)
const myHeaders = new Headers();
myHeaders.append("Authorization", "Basic YOUR_TOKEN_HERE"); // 실제 토큰으로 대체하세요.
const requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://sms.gabia.com/api/callback/list", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.error('error', error));
require "uri"
require "net/http"
url = URI("https://sms.gabia.com/api/callback/list")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
response = https.request(request)
puts response.read_body
curl --location --request GET
"https://sms.gabia.com/api/callback/list" \
--header "Authorization: Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc="
package main
import (
"fmt"
"os"
"path/filepath"
"net/http"
"io/ioutil"
)
func main() {
url := "https://sms.gabia.com/api/callback/list"
method := "GET"
client := &http.Client {
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
},
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Basic
DckviEksLs6ZXlKMGVYQWlPaUpLVhiR2NpT2lKU1V6STFOaUo5LmV5SnBjM01pT2lKb2RIUndjenBjTDF3dmMyMXpMbWRoWW1saExtTnZiVnd2SWl3aVlYVmtJam9pWEM5dllYVjBhRnd2ZEc5clpXNGlMQ0pshWFhnT2pBNG5uVkVuLWtnVEJoRGpPeWc=")
res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}