통합메시지
메시지 별로 Fallback을 순차적으로 처리해주는 통합메시지 발송 규격입니다.
메시지 관련 상세 옵션필드를 모두 사용할 수 있는 전문가 방식 입니다.
요청 당 최대 10개의 수신번호를 함께 전송할 수 있습니다.
메시지 내용, 제목, 버튼 등에 치환문구를 활용하여 전송 할 수 있습니다.
전체 메시지 정보를 입력하는 방식 또는 사전에 등록한 메시지 폼을 이용하는 방식, 총 2가지 방식 중 선택하여 전송하실 수 있습니다.
상세 Response 내용은 코드표를 참조해주시기 바랍니다.
messageFlow 필드에 담기는 메시지 순서대로 전송 처리 후 실패 시 다음 메시지로 Fallback 처리 됩니다.
통합메시지 전송
POST
/v1/send/omni
Request
Header
Body
curl -X POST https://omni.ibapi.kr/v1/send/omni \
-H "content-type: application/json" \
-H "Accept: application/json" \
-H "Authorization:Bearer 발급받은 토큰" \
-d '{"messageFlow":[{"rcs":{"content":{"standalone":{"text":"RCS 메시지 내용"}},"from":"발신번호","formatId":"SS000000", "brandKey":"RCS브랜드키"}},{"sms":{"from":"발신번호","text":"SMS 메시지 내용"}}],"destinations":[{"to":"수신번호"}],"ref":"참조필드"}'
import java.io.*;
import okhttp3.*;
public class Main {
public static void main(String []args) throws IOException{
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"messageFlow\":[{\"rcs\":{\"content\":{\"standalone\":{\"text\":\"RCS 메시지 내용\"}},\"from\":\"발신번호\",\"formatId\":\"SS000000\", \"brandKey\":\"RCS브랜드키\"}},{\"sms\":{\"from\":\"발신번호\",\"text\":\"SMS 메시지 내용\"}}],\"destinations\":[{\"to\":\"수신번호\"}],\"ref\":\"참조필드\"}");
Request request = new Request.Builder()
.url("https://omni.ibapi.kr/v1/send/omni")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.addHeader("Authorization", "Bearer 발급받은 토큰")
.build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
}
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://omni.ibapi.kr/v1/send/omni"
method := "POST"
payload := strings.NewReader(`{"messageFlow":[{"rcs":{"content":{"standalone":{"text":"RCS 메시지 내용"}},"from":"발신번호","formatId":"SS000000", "brandKey":"RCS브랜드키"}},{"sms":{"from":"발신번호","text":"SMS 메시지 내용"}}],"destinations":[{"to":"수신번호"}],"ref":"참조필드"}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
req.Header.Add("Accept", "application/json")
req.Header.Add("Authorization", "Bearer 발급받은 토큰")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://omni.ibapi.kr/v1/send/omni',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{"messageFlow":[{"rcs":{"content":{"standalone":{"text":"RCS 메시지 내용"}},"from":"발신번호","formatId":"SS000000", "brandKey":"RCS브랜드키"}},{"sms":{"from":"발신번호","text":"SMS 메시지 내용"}}],"destinations":[{"to":"수신번호"}],"ref":"참조필드"}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Bearer 발급받은 토큰'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://omni.ibapi.kr/v1/send/omni',
'headers': {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer 발급받은 토큰'
},
body: JSON.stringify({
"messageFlow": [
{
"rcs": {
"content": {
"standalone": {
"text": "RCS 메시지 내용"
}
},
"from": "발신번호",
"formatId": "SS000000",
"brandKey":"RCS브랜드키"
}
},
{
"sms": {
"from": "발신번호",
"text": "SMS 메시지 내용"
}
}
],
"destinations": [
{
"to": "수신번호"
}
],
"ref": "참조필드"
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://omni.ibapi.kr/v1/send/omni");
request.Headers.Add("Accept", "application/json");
request.Headers.Add("Authorization", "Bearer 발급받은 토큰");
var content = new StringContent("{\"messageFlow\":[{\"rcs\":{\"content\":{\"standalone\":{\"text\":\"RCS 메시지 내용\"}},\"from\":\"발신번호\",\"formatId\":\"SS000000\", \"brandKey\":\"RCS브랜드키\"}},{\"sms\":{\"from\":\"발신번호\",\"text\":\"SMS 메시지 내용\"}}],\"destinations\":[{\"to\":\"수신번호\"}],\"ref\":\"참조필드\"}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Accept", "application/json");
myHeaders.append("Authorization", "Bearer 발급받은 토큰");
var raw = JSON.stringify({
"messageFlow": [
{
"rcs": {
"content": {
"standalone": {
"text": "RCS 메시지 내용"
}
},
"from": "발신번호",
"formatId": "SS000000",
"brandKey":"RCS브랜드키"
}
},
{
"sms": {
"from": "발신번호",
"text": "SMS 메시지 내용"
}
}
],
"destinations": [
{
"to": "수신번호"
}
],
"ref": "참조필드"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://omni.ibapi.kr/v1/send/omni", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import http.client
import json
conn = http.client.HTTPSConnection("omni.ibapi.kr")
payload = json.dumps({
"messageFlow": [
{
"rcs": {
"content": {
"standalone": {
"text": "RCS 메시지 내용"
}
},
"from": "발신번호",
"formatId": "SS000000",
"brandKey":"RCS브랜드키"
}
},
{
"sms": {
"from": "발신번호",
"text": "SMS 메시지 내용"
}
}
],
"destinations": [
{
"to": "수신번호"
}
],
"ref": "참조필드"
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer 발급받은 토큰'
}
conn.request("POST", "/v1/send/omni", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
require "uri"
require "json"
require "net/http"
url = URI("https://omni.ibapi.kr/v1/send/omni")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Accept"] = "application/json"
request["Authorization"] = "Bearer 발급받은 토큰"
request.body = JSON.dump({
"messageFlow": [
{
"rcs": {
"content": {
"standalone": {
"text": "RCS 메시지 내용"
}
},
"from": "발신번호",
"formatId": "SS000000",
"brandKey":"RCS브랜드키"
}
},
{
"sms": {
"from": "발신번호",
"text": "SMS 메시지 내용"
}
}
],
"destinations": [
{
"to": "수신번호"
}
],
"ref": "참조필드"
})
response = https.request(request)
puts response.read_body
Response
Header
Body
{
"code": "A000",
"result": "Success",
"data": {
"destinations":[
{
"to": "01000000000",
"msgKey": "발급된 메시지키",
"code": "A000",
"result": "Success"
}
]
},
"ref": "요청시 입력한 데이터"
}
{
"code": "A010",
"result": "Cannot parse JSON"
}
{
"code": "A001",
"result": "Expired token"
}
{
"code": "A020",
"result": "Rate limit exceeded"
}
{
"code": "A999",
"result": "Unknown error"
}
Schema
destinations
최대 10개 수신정보를 함께 전송할 수 있습니다.
messageFlow
Array 순서대로 전송, Fallback 처리 됩니다.
sms
SMS 메시지 정보입니다.
mms
MMS 메시지 정보입니다.
rcs
RCS 메시지 정보입니다.
alimtalk
카카오 알림톡 메시지 정보입니다.
friendtalk
카카오 친구톡 메시지 정보입니다.
attachment(알림톡)
카카오 알림톡 첨부정보입니다.
attachment(친구톡)
카카오 친구톡 첨부정보입니다.
supplement
카카오 비즈메시지 부가정보입니다.
item
카카오 비즈메시지 아이템정보입니다.
list
아이템 리스트입니다.
summary
아이템 요약정보입니다.
itemHighlight
아이템 하이라이트 정보입니다.
image
친구톡 이미지 정보입니다.
data
button
카카오 버튼 타입(type)
카카오 메시지 타입(msgtype)
quickReply
카카오 비즈메시지 바로연결 정보입니다.
카카오 바로연결 타입(type)
참고사항
Last updated