2.3 RCS 메시지
1. RCS 발송 v1
Section titled “1. RCS 발송 v1”RCS(Rich Communication Services) 메시지를 발송합니다. 텍스트, 이미지, 버튼 등 다양한 형태의 풍부한 메시지를 전송할 수 있습니다.
📌 주의사항
Section titled “📌 주의사항”- 한 번에 최대 10명의 수신자에게 발송할 수 있습니다.
- messagebaseId는 사전에 등록된 ID만 사용 가능합니다.
- 예약발송은 현재 시점으로부터 최대 30일까지 가능합니다.
- 광고성 메시지(header=1)의 경우 무료수신거부 번호(footer) 필수 입력이 필요합니다.
- 버튼은 최대 4개까지 추가 가능합니다.
- 단축URL 사용 시 메시지 길이가 제한될 수 있습니다.
1) 요청 (Request)
Section titled “1) 요청 (Request)”POST /msg/v1/rcs HTTP/1.1Headers
Section titled “Headers”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| Authorization | String | ● | 사용자 인증 토큰 |
| Content-Type | String | ● | application/json |
Request Body
Section titled “Request Body”| Name | Type | 필수 | 설명 | 크기 |
|---|---|---|---|---|
| clickUrlYn | String | - | 단축URL 사용여부 (Y/N) | 1자 |
| resvYn | String | - | 예약발송 여부 (Y/N) | 1자 |
| resvReqDt | String | - | 예약발송 시간 (예: 2025-07-13 13:15) | - |
| agency | Object | - | 대행사 정보 | - |
| messagebaseId | String | ● | 메시지베이스 ID | 100자 |
| callback | String | ● | 발신번호/양방향대화방 ID | 100자 |
| header | String | ● | Header (0:정보성, 1:광고성) | 1자 |
| footer | String | - | 무료수신거부 번호 (광고성인 경우 필수) | 20자 |
| copyAllowed | Boolean | - | 복사/공유 허용여부 | - |
| expiryOption | String | - | expire 옵션 | 1자 |
| campaignId | String | - | 캠페인 ID | 20자 |
| deptCode | String | - | 부서 코드 | 20자 |
| buttons | Array | - | 버튼 | - |
| recvInfoLst | Array | ● | 수신자 정보 리스트 | 10개 |
| fbInfoLst | Array | - | fallback 정보 리스트 | - |
buttons 객체
Section titled “buttons 객체”자세한 내용은 하단의 Appendix를 참고해주세요.
| Name | Type | 필수 | 설명 |
|---|---|---|---|
| suggestions | Array | ● | 버튼 목록 |
| suggestions[].action | Object | ● | 버튼 동작 정보 |
| suggestions[].action.displayText | String | ● | 버튼에 표시되는 텍스트 |
| suggestions[].action.postback | Object | ● | 클릭 시 서버로 전송할 데이터 |
| suggestions[].action.urlAction | Object | - | URL링크 버튼 정보 |
| suggestions[].action.clipboardAction | Object | - | 복사하기 버튼 정보 |
| suggestions[].action.dialerAction | Object | - | 전화걸기 버튼 정보 |
| suggestions[].action.calendarAction | Object | - | 일정추가 버튼 정보 |
| suggestions[].action.mapAction | Object | - | 지도맵 버튼 정보 |
2) 응답 (Response)
Section titled “2) 응답 (Response)”Response Body
Section titled “Response Body”| Name | Type | 설명 |
|---|---|---|
| code | String | 결과 코드 |
| message | String | 결과 메시지 |
| data | Array | 결과 데이터 목록 |
| data[].cliKey | String | 클라이언트 키 |
| data[].msgKey | String | 메시지 키 |
| data[].phone | String | 수신번호 |
| data[].code | String | 결과 코드 |
| data[].message | String | 결과 메시지 |
3) 요청 예시 (Sample)
Section titled “3) 요청 예시 (Sample)”💡 Json 예시
Section titled “💡 Json 예시”RCS 상품 유형별 예시입니다.
RCS SMS형
Section titled “RCS SMS형”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "messagebaseId": "SS000000", // RCS SMS형 "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "이름", "title" : "제목", "description": "{{name}}님 안녕하세요." } }, { "cliKey": "test002", "phone": "01056785678", "mergeData": { "name": "이름", "title" : "제목", "description": "{{name}}님 안녕하세요." } } ], "buttons": [ { "suggestions": [ { "action": { "displayText": "버튼1 (버튼명)", "postback": { "data": "set_by_chatbot_open_url" }, "urlAction": { "openUrl": { "url": "https://msghub.uplus.co.kr/public/main" } } } }, { "action": { "clipboardAction": { "copyToClipboard": { "text": "복사할 내용 입력" } }, "displayText": "복사하기 버튼", "postback": { "data": "set_by_chatbot_copy_to_clipboard" } } } ] } ] }'RCS LMS형
Section titled “RCS LMS형”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "SL000000", // RCS LMS형 "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "이름", "title": "제목", "description": "{{name}}님 안녕하세요." } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }RCS MMS형
Section titled “RCS MMS형”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "SMwThM00", // 세로형(medium) SMwThM00, 세로형(tall) SMwThT00, 이미지강조형 OMHIMV0001 "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "이름", "title": "제목", "description": "{{name}}님 안녕하세요.", "media": "maapfile://{fileId_1}" } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }RCS 이미지&타이틀 강조형
Section titled “RCS 이미지&타이틀 강조형”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "OMHITV0001", "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "이름", "title": "제목", "media": "maapfile://{fileId_1}", "subTitle3": "", "subTitle2": "강조", "subTitle1": "가격", "subDesc3": "", "subDesc2": "{{name}}입니다. ", "subDesc1": "5000원" } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }RCS 썸네일형(세로)
Section titled “RCS 썸네일형(세로)”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "OMTBNV0001", "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "media": "maapfile://{fileId_1}", "title": "제목", "description": "RCS 내용", "변수명": "치환문자", "subMedia1": "maapfile://{fileId_sub1}", "subMedia2": "maapfile://{fileId_sub2}", "subMedia3": "maapfile://{fileId_sub3}", "subDesc3": "", "subDesc2": "썸네일 내용2 {{변수명}}", "subDesc1": "썸네일내용1" } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }RCS 썸네일형(가로)
Section titled “RCS 썸네일형(가로)”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "OMTBNH0001", "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "description": "RCS 내용 {{변수명}}", "media": "maapfile://{fileId_1}", "title": "제목", "변수명": "치환문자", "subMedia1": "maapfile://{fileId_sub1}", "subMedia3": "maapfile://{fileId_sub3}", "subMedia2": "maapfile://{fileId_sub2}" } } ], "buttons": [] // 하단 Appendix에서 유형별 json을 참고해주세요 }RCS SNS형
Section titled “RCS SNS형”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "OMSNSS0001", "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "치환문자", "description": "내용 {{name}}", "media": "maapfile://{fileId_1}", "title": "제목" } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }RCS 슬라이드형(Small)
Section titled “RCS 슬라이드형(Small)”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "CMwShS0600", // 슬라이드 갯수마다 CMwShS0200 ~ CMwShS0600 "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "치환문자", "media1": "maapfile://{fileId_1}", "title1": "1번째 슬라이드 제목", "description1": "1번째 슬라이드 내용 {{name}}", "name2": "치환문자2", "media2": "maapfile://{fileId_2}", "title2": "2번째 슬라이드 제목", "description2": "2번째 슬라이드 내용 {{name2}}", "media3": "maapfile://{fileId_3}", "title3": "3번째 슬라이드 제목", "description3": "3번째 슬라이드 내용", "media4": "maapfile://{fileId_4}", "title4": "4번째 슬라이드 제목", "description4": "4번째 슬라이드 내용", "media5": "maapfile://{fileId_5}", "title5": "5번째 슬라이드 제목", "description5": "5번째 슬라이드 내용", "media6": "maapfile://{fileId_6}", "title6": "6번째 슬라이드 제목", "description6": "6번째 슬라이드 내용" } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }RCS 슬라이드형(Medium)
Section titled “RCS 슬라이드형(Medium)”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "CMwMhM0600", // 슬라이드 갯수마다 CMwMhM0200 ~ CMwMhM0600 "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "치환문자", "media1": "maapfile://{fileId_1}", "title1": "1번째 슬라이드 제목", "description1": "1번째 슬라이드 내용 {{name}}", "name2": "치환문자2", "media2": "maapfile://{fileId_2}", "title2": "2번째 슬라이드 제목", "description2": "2번째 슬라이드 내용 {{name2}}", "media3": "maapfile://{fileId_3}", "title3": "3번째 슬라이드 제목", "description3": "3번째 슬라이드 내용", "media4": "maapfile://{fileId_4}", "title4": "4번째 슬라이드 제목", "description4": "4번째 슬라이드 내용", "media5": "maapfile://{fileId_5}", "title5": "5번째 슬라이드 제목", "description5": "5번째 슬라이드 내용", "media6": "maapfile://{fileId_6}", "title6": "6번째 슬라이드 제목", "description6": "6번째 슬라이드 내용" } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }Response
Section titled “Response”{ "code": "10000", "message": "성공", "data": [ { "cliKey": "test001", "msgKey": "3jV.....U.6fKG1w", "phone": "01012341234", "code": "10000", "message": "성공" }, ... ]}2. RCS 발송 v11
Section titled “2. RCS 발송 v11”RCS(Rich Communication Services) 메시지를 발송합니다. 텍스트, 이미지, 버튼 등 다양한 형태의 풍부한 메시지를 전송할 수 있습니다.
📌 주의사항
Section titled “📌 주의사항”- 한 번에 최대 10명의 수신자에게 발송할 수 있습니다.
- messagebaseId는 사전에 등록된 ID만 사용 가능합니다.
- 예약발송은 현재 시점으로부터 최대 30일까지 가능합니다.
- 광고성 메시지(header=1)의 경우 무료수신거부 번호(footer) 필수 입력이 필요합니다.
- 버튼은 최대 4개까지 추가 가능합니다.
- 단축URL 사용 시 메시지 길이가 제한될 수 있습니다.
1) 요청 (Request)
Section titled “1) 요청 (Request)”POST /msg/v1.1/rcs HTTP/1.1Headers
Section titled “Headers”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| Authorization | String | ● | 사용자 인증 토큰 |
| Content-Type | String | ● | application/json |
Request Body
Section titled “Request Body”| Name | Type | 필수 | 설명 | 크기 |
|---|---|---|---|---|
| clickUrlYn | String | - | 단축URL 사용여부 (Y/N) | 1자 |
| resvYn | String | - | 예약발송 여부 (Y/N) | 1자 |
| resvReqDt | String | - | 예약발송 시간 (예: 2025-07-13 13:15) | - |
| agency | Object | - | 대행사 정보 | - |
| messagebaseId | String | ● | 메시지베이스 ID | 100자 |
| callback | String | ● | 발신번호/양방향대화방 ID | 100자 |
| header | String | ● | Header (0:정보성, 1:광고성) | 1자 |
| footer | String | - | 무료수신거부 번호 (광고성인 경우 필수) | 20자 |
| copyAllowed | Boolean | - | 복사/공유 허용여부 | - |
| expiryOption | String | - | expire 옵션 | 1자 |
| campaignId | String | - | 캠페인 ID | 20자 |
| deptCode | String | - | 부서 코드 | 20자 |
| buttons | Array | - | 버튼 | - |
| recvInfoLst | Array | ● | 수신자 정보 리스트 | 10개 |
| fbInfoLst | Array | - | fallback 정보 리스트 | - |
| brandId | String | - | 브랜드ID (대행사의 경우 필수) | - |
| brandKey | String | - | 브랜드KEY (대행사의 경우 필수) | - |
| productCode | String | - | 상품 코드 (대행사의 경우 필수) | - |
buttons 객체
Section titled “buttons 객체”자세한 내용은 하단의 Appendix를 참고해주세요.
| Name | Type | 필수 | 설명 |
|---|---|---|---|
| suggestions | Array | ● | 버튼 목록 |
| suggestions[].action | Object | ● | 버튼 동작 정보 |
| suggestions[].action.displayText | String | ● | 버튼에 표시되는 텍스트 |
| suggestions[].action.postback | Object | ● | 클릭 시 서버로 전송할 데이터 |
| suggestions[].action.urlAction | Object | - | URL링크 버튼 정보 |
| suggestions[].action.clipboardAction | Object | - | 복사하기 버튼 정보 |
| suggestions[].action.dialerAction | Object | - | 전화걸기 버튼 정보 |
| suggestions[].action.calendarAction | Object | - | 일정추가 버튼 정보 |
| suggestions[].action.mapAction | Object | - | 지도맵 버튼 정보 |
2) 응답 (Response)
Section titled “2) 응답 (Response)”Response Body
Section titled “Response Body”| Name | Type | 설명 |
|---|---|---|
| code | String | 결과 코드 |
| message | String | 결과 메시지 |
| data | Array | 결과 데이터 목록 |
| data[].cliKey | String | 클라이언트 키 |
| data[].msgKey | String | 메시지 키 |
| data[].phone | String | 수신번호 |
| data[].code | String | 결과 코드 |
| data[].message | String | 결과 메시지 |
3) 요청 예시 (Sample)
Section titled “3) 요청 예시 (Sample)”💡 Json 예시
Section titled “💡 Json 예시”RCS 상품 유형별 예시입니다.
RCS SMS형
Section titled “RCS SMS형”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "brandId": "BR.R....tr", "brandKey": "BK.Zs.....tx", "productCode": "SMS", "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "messagebaseId": "SS000000", // RCS SMS형 "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "이름", "title" : "제목", "description": "{{name}}님 안녕하세요." } }, { "cliKey": "test002", "phone": "01056785678", "mergeData": { "name": "이름", "title" : "제목", "description": "{{name}}님 안녕하세요." } } ], "buttons": [ { "suggestions": [ { "action": { "displayText": "버튼1 (버튼명)", "postback": { "data": "set_by_chatbot_open_url" }, "urlAction": { "openUrl": { "url": "https://msghub.uplus.co.kr/public/main" } } } }, { "action": { "clipboardAction": { "copyToClipboard": { "text": "복사할 내용 입력" } }, "displayText": "복사하기 버튼", "postback": { "data": "set_by_chatbot_copy_to_clipboard" } } } ] } ] }'RCS LMS형
Section titled “RCS LMS형”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "brandId": "BR.R....tr", "brandKey": "BK.Zs.....tx", "productCode": "LMS", "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "SL000000", // RCS LMS형 "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "이름", "title": "제목", "description": "{{name}}님 안녕하세요." } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }RCS MMS형
Section titled “RCS MMS형”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "brandId": "BR.R....tr", "brandKey": "BK.Zs.....tx", "productCode": "MMS", "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "SMwThM00", // 세로형(medium) SMwThM00, 세로형(tall) SMwThT00, 이미지강조형 OMHIMV0001 "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "이름", "title": "제목", "description": "{{name}}님 안녕하세요.", "media": "maapfile://{fileId_1}" } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }RCS 이미지&타이틀 강조형
Section titled “RCS 이미지&타이틀 강조형”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "brandId": "BR.R....tr", "brandKey": "BK.Zs.....tx", "productCode": "MMS", "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "OMHITV0001", "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "이름", "title": "제목", "media": "maapfile://{fileId_1}", "subTitle3": "", "subTitle2": "강조", "subTitle1": "가격", "subDesc3": "", "subDesc2": "{{name}}입니다. ", "subDesc1": "5000원" } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }RCS 썸네일형(세로)
Section titled “RCS 썸네일형(세로)”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "brandId": "BR.R....tr", "brandKey": "BK.Zs.....tx", "productCode": "ITMPL", "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "OMTBNV0001", "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "media": "maapfile://{fileId_1}", "title": "제목", "description": "RCS 내용", "변수명": "치환문자", "subMedia1": "maapfile://{fileId_sub1}", "subMedia2": "maapfile://{fileId_sub2}", "subMedia3": "maapfile://{fileId_sub3}", "subDesc3": "", "subDesc2": "썸네일 내용2 {{변수명}}", "subDesc1": "썸네일내용1" } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }RCS 썸네일형(가로)
Section titled “RCS 썸네일형(가로)”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "brandId": "BR.R....tr", "brandKey": "BK.Zs.....tx", "productCode": "ITMPL", "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "OMTBNH0001", "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "description": "RCS 내용 {{변수명}}", "media": "maapfile://{fileId_1}", "title": "제목", "변수명": "치환문자", "subMedia1": "maapfile://{fileId_sub1}", "subMedia3": "maapfile://{fileId_sub3}", "subMedia2": "maapfile://{fileId_sub2}" } } ], "buttons": [] // 하단 Appendix에서 유형별 json을 참고해주세요 }RCS SNS형
Section titled “RCS SNS형”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "brandId": "BR.R....tr", "brandKey": "BK.Zs.....tx", "productCode": "ITMPL", "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "OMSNSS0001", "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "치환문자", "description": "내용 {{name}}", "media": "maapfile://{fileId_1}", "title": "제목" } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }RCS 슬라이드형(Small)
Section titled “RCS 슬라이드형(Small)”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "brandId": "BR.R....tr", "brandKey": "BK.Zs.....tx", "productCode": "ITMPL", "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "CMwShS0600", // 슬라이드 갯수마다 CMwShS0200 ~ CMwShS0600 "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "치환문자", "media1": "maapfile://{fileId_1}", "title1": "1번째 슬라이드 제목", "description1": "1번째 슬라이드 내용 {{name}}", "name2": "치환문자2", "media2": "maapfile://{fileId_2}", "title2": "2번째 슬라이드 제목", "description2": "2번째 슬라이드 내용 {{name2}}", "media3": "maapfile://{fileId_3}", "title3": "3번째 슬라이드 제목", "description3": "3번째 슬라이드 내용", "media4": "maapfile://{fileId_4}", "title4": "4번째 슬라이드 제목", "description4": "4번째 슬라이드 내용", "media5": "maapfile://{fileId_5}", "title5": "5번째 슬라이드 제목", "description5": "5번째 슬라이드 내용", "media6": "maapfile://{fileId_6}", "title6": "6번째 슬라이드 제목", "description6": "6번째 슬라이드 내용" } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }RCS 슬라이드형(Medium)
Section titled “RCS 슬라이드형(Medium)”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "brandId": "BR.R....tr", "brandKey": "BK.Zs.....tx", "productCode": "ITMPL", "clickUrlYn": "N", "resvYn": "N", "resvReqDt": "2025-07-13 13:15", "callback": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "copyAllowed": false, "expiryOption": "1", "messagebaseId": "CMwMhM0600", // 슬라이드 갯수마다 CMwMhM0200 ~ CMwMhM0600 "recvInfoLst": [ { "cliKey": "test001", "phone": "01012341234", "mergeData": { "name": "치환문자", "media1": "maapfile://{fileId_1}", "title1": "1번째 슬라이드 제목", "description1": "1번째 슬라이드 내용 {{name}}", "name2": "치환문자2", "media2": "maapfile://{fileId_2}", "title2": "2번째 슬라이드 제목", "description2": "2번째 슬라이드 내용 {{name2}}", "media3": "maapfile://{fileId_3}", "title3": "3번째 슬라이드 제목", "description3": "3번째 슬라이드 내용", "media4": "maapfile://{fileId_4}", "title4": "4번째 슬라이드 제목", "description4": "4번째 슬라이드 내용", "media5": "maapfile://{fileId_5}", "title5": "5번째 슬라이드 제목", "description5": "5번째 슬라이드 내용", "media6": "maapfile://{fileId_6}", "title6": "6번째 슬라이드 제목", "description6": "6번째 슬라이드 내용" } } ], "buttons": [] // 하단 Appendix에서 버튼 유형별 json을 참고해주세요 }Response
Section titled “Response”{ "code": "10000", "message": "성공", "data": [ { "cliKey": "test001", "msgKey": "3j...8U.6fKG1w", "phone": "01012341234", "code": "10000", "message": "성공" }, ... ]}3. RCS 양방향 발송 v1
Section titled “3. RCS 양방향 발송 v1”RCS 양방향 응답메시지를 발송합니다.
📌 주의사항
Section titled “📌 주의사항”- 양방향번호로 등록된 번호만 사용가능합니다.
1) 요청 (Request)
Section titled “1) 요청 (Request)”POST /msg/v1/bi/rcs HTTP/1.1Headers
Section titled “Headers”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| Authorization | String | ● | 사용자 인증 토큰 |
| Content-Type | String | ● | application/json |
Request Body
Section titled “Request Body”| Name | Type | 필수 | 설명 | 크기 |
|---|---|---|---|---|
| agency | Object | - | 대행사 정보 | - |
| replyId | String | ● | 양방향 응답메시지ID | - |
| cliKey | String | ● | 클라이언트 키 | 20자 |
| messagebaseId | String | ● | 메시지베이스 ID | 100자 |
| chatbotId | String | ● | 발신번호/양방향대화방 ID | 40자 |
| telco | String | ● | 이통사 | - |
| phone | String | ● | 휴대폰번호 | - |
| body | Object | ● | 메세지내용 | - |
| header | String | ● | Header (0:정보성, 1:광고성) | 1자 |
| footer | String | - | 무료수신거부 번호 (광고성인 경우 필수) | 20자 |
| copyAllowed | Boolean | - | 복사/공유 허용여부 | - |
| campaignId | String | - | 캠페인 ID | 20자 |
| deptCode | String | - | 부서 코드 | 20자 |
| buttons | Array | - | 버튼리스트 | - |
| chipList | Array | - | 칩리스트 | - |
body 객체
Section titled “body 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| description | String | ● | 메시지 본문 |
buttons 객체
Section titled “buttons 객체”자세한 내용은 하단의 Appendix를 참고해주세요.
| Name | Type | 필수 | 설명 |
|---|---|---|---|
| suggestions | Array | ● | 버튼 목록 |
| suggestions[].action | Object | ● | 버튼 동작 정보 |
| suggestions[].action.displayText | String | ● | 버튼에 표시되는 텍스트 |
| suggestions[].action.postback | Object | ● | 클릭 시 서버로 전송할 데이터 |
| suggestions[].action.urlAction | Object | - | URL링크 버튼 정보 |
| suggestions[].action.clipboardAction | Object | - | 복사하기 버튼 정보 |
| suggestions[].action.dialerAction | Object | - | 전화걸기 버튼 정보 |
| suggestions[].action.calendarAction | Object | - | 일정추가 버튼 정보 |
| suggestions[].action.mapAction | Object | - | 지도맵 버튼 정보 |
chipList 객체
Section titled “chipList 객체”자세한 내용은 하단의 Appendix를 참고해주세요.
| Name | Type | 필수 | 설명 |
|---|---|---|---|
| action | Object | ● | 버튼 동작 정보 |
| action[].displayText | String | ● | 버튼에 표시되는 텍스트 |
| action[].postback | Object | ● | 클릭 시 서버로 전송할 데이터 |
| action[].urlAction | Object | - | URL링크 버튼 정보 |
| action[].clipboardAction | Object | - | 복사하기 버튼 정보 |
| action[].dialerAction | Object | - | 전화걸기 버튼 정보 |
| action[].calendarAction | Object | - | 일정추가 버튼 정보 |
| action[].mapAction | Object | - | 지도맵 버튼 정보 |
2) 응답 (Response)
Section titled “2) 응답 (Response)”Response Body
Section titled “Response Body”| Name | Type | 설명 |
|---|---|---|
| code | String | 결과 코드 |
| message | String | 결과 메시지 |
| data | Array | 결과 데이터 목록 |
| data[].cliKey | String | 클라이언트 키 |
| data[].msgKey | String | 메시지 키 |
| data[].replyId | String | 양방향 응답메시지ID |
| data[].chatbotId | String | 챗봇ID |
| data[].code | String | 결과 코드 |
| data[].message | String | 결과 메시지 |
3) 요청 예시 (Sample)
Section titled “3) 요청 예시 (Sample)”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1/bi/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "messagebaseId": "SCL00000", "chatbotId": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "replyId": "0d....0-17f7-4d8b-bc53-6.....5", "cliKey": "test001", "telco":"LGU", "phone": "01012341234", "body": { "description": "자동응답 메시지 답변내용" }, "buttons": [ { "suggestions": [ { "action": { "displayText": "버튼1 (버튼명)", "postback": { "data": "set_by_chatbot_open_url" }, "urlAction": { "openUrl": { "url": "https://msghub.uplus.co.kr/public/main" } } } }, { "action": { "clipboardAction": { "copyToClipboard": { "text": "복사할 내용 입력" } }, "displayText": "복사하기 버튼", "postback": { "data": "set_by_chatbot_copy_to_clipboard" } } } ] } ], "chipList": [ { "suggestions": [ { "action": { "displayText": "버튼1 (버튼명)", "postback": { "data": "set_by_chatbot_open_url" }, "urlAction": { "openUrl": { "url": "https://msghub.uplus.co.kr/public/main" } } } }, { "action": { "clipboardAction": { "copyToClipboard": { "text": "복사할 내용 입력" } }, "displayText": "복사하기 버튼", "postback": { "data": "set_by_chatbot_copy_to_clipboard" } } } ] } ] }'Response
Section titled “Response”{ "code": "10000", "message": "성공", "data": [ { "cliKey": "m....592b", "msgKey": "JuO....8n.6fL9Vn", "replyId": "01012341234", "chatbotId": "07012345678", "code": "10000", "message": "성공" }, ... ]}4. RCS 양방향 발송 v11
Section titled “4. RCS 양방향 발송 v11”RCS 양방향 응답메시지를 발송합니다.
📌 주의사항
Section titled “📌 주의사항”- 양방향번호로 등록된 번호만 사용가능합니다.
1) 요청 (Request)
Section titled “1) 요청 (Request)”POST /msg/v1.1/bi/rcs HTTP/1.1Headers
Section titled “Headers”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| Authorization | String | ● | 사용자 인증 토큰 |
| Content-Type | String | ● | application/json |
Request Body
Section titled “Request Body”| Name | Type | 필수 | 설명 | 크기 |
|---|---|---|---|---|
| agency | Object | - | 대행사 정보 | - |
| replyId | String | ● | 양방향 응답메시지ID | - |
| cliKey | String | ● | 클라이언트 키 | 20자 |
| messagebaseId | String | ● | 메시지베이스 ID | 100자 |
| chatbotId | String | ● | 발신번호/양방향대화방 ID | 40자 |
| telco | String | ● | 이통사 | - |
| phone | String | ● | 휴대폰번호 | - |
| body | Object | ● | 메세지내용 | - |
| header | String | ● | Header (0:정보성, 1:광고성) | 1자 |
| footer | String | - | 무료수신거부 번호 (광고성인 경우 필수) | 20자 |
| copyAllowed | Boolean | - | 복사/공유 허용여부 | - |
| campaignId | String | - | 캠페인 ID | 20자 |
| deptCode | String | - | 부서 코드 | 20자 |
| buttons | Array | - | 버튼리스트 | - |
| chipList | Array | - | 칩리스트 | - |
| brandId | String | - | 브랜드ID (대행사의 경우 필수) | - |
| brandKey | String | - | 브랜드KEY (대행사의 경우 필수) | - |
| productCode | String | - | 상품 코드 (대행사의 경우 필수) | - |
body 객체
Section titled “body 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| description | String | ● | 메시지 본문 |
buttons 객체
Section titled “buttons 객체”자세한 내용은 하단의 Appendix를 참고해주세요.
| Name | Type | 필수 | 설명 |
|---|---|---|---|
| suggestions | Array | ● | 버튼 목록 |
| suggestions[].action | Object | ● | 버튼 동작 정보 |
| suggestions[].action.displayText | String | ● | 버튼에 표시되는 텍스트 |
| suggestions[].action.postback | Object | ● | 클릭 시 서버로 전송할 데이터 |
| suggestions[].action.urlAction | Object | - | URL링크 버튼 정보 |
| suggestions[].action.clipboardAction | Object | - | 복사하기 버튼 정보 |
| suggestions[].action.dialerAction | Object | - | 전화걸기 버튼 정보 |
| suggestions[].action.calendarAction | Object | - | 일정추가 버튼 정보 |
| suggestions[].action.mapAction | Object | - | 지도맵 버튼 정보 |
chipList 객체
Section titled “chipList 객체”자세한 내용은 하단의 Appendix를 참고해주세요.
| Name | Type | 필수 | 설명 |
|---|---|---|---|
| action | Object | ● | 버튼 동작 정보 |
| action[].displayText | String | ● | 버튼에 표시되는 텍스트 |
| action[].postback | Object | ● | 클릭 시 서버로 전송할 데이터 |
| action[].urlAction | Object | - | URL링크 버튼 정보 |
| action[].clipboardAction | Object | - | 복사하기 버튼 정보 |
| action[].dialerAction | Object | - | 전화걸기 버튼 정보 |
| action[].calendarAction | Object | - | 일정추가 버튼 정보 |
| action[].mapAction | Object | - | 지도맵 버튼 정보 |
2) 응답 (Response)
Section titled “2) 응답 (Response)”Response Body
Section titled “Response Body”| Name | Type | 설명 |
|---|---|---|
| code | String | 결과 코드 |
| message | String | 결과 메시지 |
| data | Array | 결과 데이터 목록 |
| data[].cliKey | String | 클라이언트 키 |
| data[].msgKey | String | 메시지 키 |
| data[].replyId | String | 양방향 응답메시지ID |
| data[].chatbotId | String | 챗봇ID |
| data[].code | String | 결과 코드 |
| data[].message | String | 결과 메시지 |
3) 요청 예시 (Sample)
Section titled “3) 요청 예시 (Sample)”curl -X POST "https://api.msghub.uplus.co.kr/msg/v1.1/bi/rcs" \ -H "accept: */*" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {token}" \ -d '{ "brandId": "BR.R....tr", "brandKey": "BK.Zs.....tx", "productCode": "CHAT", "messagebaseId": "SCL00000", "chatbotId": "07012345678", "header": "0", "agency": { "kisaOrigCode": "123456789", "rcsAgencyId": "agencyId", "rcsAgencyKey": "AK.abcd1234" }, "replyId": "0d....0-17f7-4d8b-bc53-6.....5", "cliKey": "test001", "telco":"LGU", "phone": "01012341234", "body": { "description": "자동응답 메시지 답변내용" }, "buttons": [ { "suggestions": [ { "action": { "displayText": "버튼1 (버튼명)", "postback": { "data": "set_by_chatbot_open_url" }, "urlAction": { "openUrl": { "url": "https://msghub.uplus.co.kr/public/main" } } } }, { "action": { "clipboardAction": { "copyToClipboard": { "text": "복사할 내용 입력" } }, "displayText": "복사하기 버튼", "postback": { "data": "set_by_chatbot_copy_to_clipboard" } } } ] } ], "chipList": [ { "suggestions": [ { "action": { "displayText": "버튼1 (버튼명)", "postback": { "data": "set_by_chatbot_open_url" }, "urlAction": { "openUrl": { "url": "https://msghub.uplus.co.kr/public/main" } } } }, { "action": { "clipboardAction": { "copyToClipboard": { "text": "복사할 내용 입력" } }, "displayText": "복사하기 버튼", "postback": { "data": "set_by_chatbot_copy_to_clipboard" } } } ] } ] }'Response
Section titled “Response”{ "code": "10000", "message": "성공", "data": [ { "cliKey": "m....592b", "msgKey": "JuO....8n.6fL9Vn", "replyId": "01012341234", "chatbotId": "07012345678", "code": "10000", "message": "성공" }, ... ]}Appendix
Section titled “Appendix”Agency 객체
Section titled “Agency 객체”대행사 정보를 포함하는 객체입니다.
| 필드명 | 타입 | 필수 | 설명 |
|---|---|---|---|
| kisaOrigCode | String | - | 재판매사 KISA 최초식별코드 |
| rcsAgencyId | String | - | RBC에 등록된 대행사ID |
| rcsAgencyKey | String | - | RBC에서 발급된 대행사키 |
buttons 객체
Section titled “buttons 객체”buttons > suggestions > action > postback 객체
Section titled “buttons > suggestions > action > postback 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| data | String | ● | 버튼 타입 |
다음 값 중 하나가 들어갈 수 있음:
- URL링크
set_by_chatbot_open_url - 복사하기
set_by_chatbot_copy_to_clipboard - 전화걸기
set_by_chatbot_dial_phone_number - 일정추가
set_by_chatbot_create_calendar_event - 지도맵(현재위치)
set_by_chatbot_request_location_push - 지도맵(좌표입력)
set_by_chatbot_show_location - 지도맵(쿼리입력)
set_by_chatbot_search_locations
buttons > suggestions > action > urlAction 객체
Section titled “buttons > suggestions > action > urlAction 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| openUrl | Object | ● | 오픈 URL 정보 |
| openUrl.url | String | ● | 이동할 URL |
buttons > suggestions > action > clipboardAction 객체
Section titled “buttons > suggestions > action > clipboardAction 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| copyToClipboard | Object | ● | 클립보드 복사 정보 |
| copyToClipboard.text | String | ● | 복사할 텍스트 내용 |
buttons > suggestions > action > dialerAction 객체
Section titled “buttons > suggestions > action > dialerAction 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| dialPhoneNumber | Object | ● | 전화 걸기 정보 |
| dialPhoneNumber.phoneNumber | String | ● | 전화번호 정보 |
buttons > suggestions > action > calendarAction 객체
Section titled “buttons > suggestions > action > calendarAction 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| createCalendarEvent | Object | ● | 캘린더 일정 정보 |
| createCalendarEvent.title | String | ● | 일정 제목 |
| createCalendarEvent.description | String | ● | 일정 설명 |
| createCalendarEvent.startTime | String | ● | 시작일 (예: 2025-07-09T00:00:00Z) |
| createCalendarEvent.endTime | String | ● | 종료일 (예: 2025-07-09T12:00:00Z) |
buttons > suggestions > action > mapAction 객체
Section titled “buttons > suggestions > action > mapAction 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| requestLocationPush | Object | - | 지도맵(현재위치) 버튼 선택시 필수 (내용 없음) |
| showLocation | Object | - | 지도맵(좌표 또는 쿼리) 버튼 선택시 필수 |
| showLocation.fallbackUrl | String | ● | 지도 APP 실행 실패 시 대체 URL |
| showLocation.location | Object | ● | 위치 정보 객체 |
| showLocation.location.latitude | String | - | 위도 (좌표 기반일 경우 필수) |
| showLocation.location.longitude | String | - | 경도 (좌표 기반일 경우 필수) |
| showLocation.location.label | String | - | 지도 APP에 표시될 라벨 (좌표 기반일 경우 필수) |
| showLocation.location.query | String | - | 검색 쿼리 (검색 기반일 경우 필수) |
RCS 버튼 유형별 json 예시입니다.
URL링크 버튼
Section titled “URL링크 버튼” "buttons": [ { "suggestions": [ { "action": { "displayText": "상품 상세보기(버튼명)", "postback": { "data": "set_by_chatbot_open_url" }, "urlAction": { "openUrl": { "url": "https://example.com/product/123" } } } } ] } ]복사하기 버튼
Section titled “복사하기 버튼” "buttons": [ { "suggestions": [ { "action": { "displayText": "복사하기 버튼명", "clipboardAction": { "copyToClipboard": { "text": "복사할 내용" } }, "postback": { "data": "set_by_chatbot_copy_to_clipboard" } } } ] } ]전화걸기 버튼
Section titled “전화걸기 버튼” "buttons": [ { "suggestions": [ { "action": { "displayText": "전화걸기 버튼명", "postback": { "data": "set_by_chatbot_dial_phone_number" }, "dialerAction": { "dialPhoneNumber": { "phoneNumber": "01012341234" } } } } ] } ]일정추가 버튼
Section titled “일정추가 버튼” "buttons": [ { "suggestions": [ { "action": { "displayText": "일정추가 버튼명", "postback": { "data": "set_by_chatbot_create_calendar_event" }, "calendarAction": { "createCalendarEvent": { "description": "일정 내용", "startTime": "2025-07-09T00:00:00Z", "endTime": "2025-07-10T23:59:59Z", "title": "일정 제목" } } } } ] } ]지도(현재위치) 공유 버튼
Section titled “지도(현재위치) 공유 버튼” "buttons": [ { "suggestions": [ { "action": { "mapAction": { "requestLocationPush": {} }, "displayText": "현재위치 공유 버튼명", "postback": { "data": "set_by_chatbot_request_location_push" } } } ] } ]지도맵(좌표입력) 버튼
Section titled “지도맵(좌표입력) 버튼”"buttons": [ { "suggestions": [ { "action": { "mapAction": { "showLocation": { "fallbackUrl": "지도 APP 미작동시 대체할 URL", "location": { "latitude": "위도", "label": "지도 APP에 표시될 라벨", "longitude": "경도" } } }, "displayText": "지도 버튼명", "postback": { "data": "set_by_chatbot_show_location" } } } ] } ]지도(쿼리입력) 버튼
Section titled “지도(쿼리입력) 버튼” "buttons": [ { "suggestions": [ { "action": { "mapAction": { "showLocation": { "fallbackUrl": "지도 APP 미작동시 대체할 URL", "location": { "query": "지도 APP에서 검색할 구문" } } }, "displayText": "지도 버튼명", "postback": { "data": "set_by_chatbot_search_locations" } } } ] } ]chipList 객체
Section titled “chipList 객체”chipList > action > postback 객체
Section titled “chipList > action > postback 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| data | String | ● | 버튼 타입 |
다음 값 중 하나가 들어갈 수 있음:
- URL링크
set_by_chatbot_open_url - 복사하기
set_by_chatbot_copy_to_clipboard - 전화걸기
set_by_chatbot_dial_phone_number - 일정추가
set_by_chatbot_create_calendar_event - 지도맵(현재위치)
set_by_chatbot_request_location_push - 지도맵(좌표입력)
set_by_chatbot_show_location - 지도맵(쿼리입력)
set_by_chatbot_search_locations
chipList > action > urlAction 객체
Section titled “chipList > action > urlAction 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| openUrl | Object | ● | 오픈 URL 정보 |
| openUrl.url | String | ● | 이동할 URL |
chipList > action > clipboardAction 객체
Section titled “chipList > action > clipboardAction 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| copyToClipboard | Object | ● | 클립보드 복사 정보 |
| copyToClipboard.text | String | ● | 복사할 텍스트 내용 |
chipList > action > dialerAction 객체
Section titled “chipList > action > dialerAction 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| dialPhoneNumber | Object | ● | 전화 걸기 정보 |
| dialPhoneNumber.phoneNumber | String | ● | 전화번호 정보 |
chipList > action > calendarAction 객체
Section titled “chipList > action > calendarAction 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| createCalendarEvent | Object | ● | 캘린더 일정 정보 |
| createCalendarEvent.title | String | ● | 일정 제목 |
| createCalendarEvent.description | String | ● | 일정 설명 |
| createCalendarEvent.startTime | String | ● | 시작일 (예: 2025-07-09T00:00:00Z) |
| createCalendarEvent.endTime | String | ● | 종료일 (예: 2025-07-09T12:00:00Z) |
chipList > action > mapAction 객체
Section titled “chipList > action > mapAction 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| requestLocationPush | Object | - | 지도맵(현재위치) 버튼 선택시 필수 (내용 없음) |
| showLocation | Object | - | 지도맵(좌표 또는 쿼리) 버튼 선택시 필수 |
| showLocation.fallbackUrl | String | ● | 지도 APP 실행 실패 시 대체 URL |
| showLocation.location | Object | ● | 위치 정보 객체 |
| showLocation.location.latitude | String | - | 위도 (좌표 기반일 경우 필수) |
| showLocation.location.longitude | String | - | 경도 (좌표 기반일 경우 필수) |
| showLocation.location.label | String | - | 지도 APP에 표시될 라벨 (좌표 기반일 경우 필수) |
| showLocation.location.query | String | - | 검색 쿼리 (검색 기반일 경우 필수) |
RCS ChipList 유형별 json 예시입니다.
URL링크 버튼
Section titled “URL링크 버튼” "chipList": [ { "action": { "displayText": "상품 상세보기(버튼명)", "postback": { "data": "set_by_chatbot_open_url" }, "urlAction": { "openUrl": { "url": "https://example.com/product/123" } } } } ]복사하기 버튼
Section titled “복사하기 버튼” "chipList": [ { "action": { "displayText": "복사하기 버튼명", "clipboardAction": { "copyToClipboard": { "text": "복사할 내용" } }, "postback": { "data": "set_by_chatbot_copy_to_clipboard" } } } ]전화걸기 버튼
Section titled “전화걸기 버튼” "chipList": [ { "action": { "displayText": "전화걸기 버튼명", "postback": { "data": "set_by_chatbot_dial_phone_number" }, "dialerAction": { "dialPhoneNumber": { "phoneNumber": "01012341234" } } } } ]일정추가 버튼
Section titled “일정추가 버튼” "buttons": [ { "action": { "displayText": "일정추가 버튼명", "postback": { "data": "set_by_chatbot_create_calendar_event" }, "calendarAction": { "createCalendarEvent": { "description": "일정 내용", "startTime": "2025-07-09T00:00:00Z", "endTime": "2025-07-10T23:59:59Z", "title": "일정 제목" } } } } ]지도(현재위치) 공유 버튼
Section titled “지도(현재위치) 공유 버튼” "buttons": [ { "action": { "mapAction": { "requestLocationPush": {} }, "displayText": "현재위치 공유 버튼명", "postback": { "data": "set_by_chatbot_request_location_push" } } } ]지도맵(좌표입력) 버튼
Section titled “지도맵(좌표입력) 버튼”"buttons": [ { "action": { "mapAction": { "showLocation": { "fallbackUrl": "지도 APP 미작동시 대체할 URL", "location": { "latitude": "위도", "label": "지도 APP에 표시될 라벨", "longitude": "경도" } } }, "displayText": "지도 버튼명", "postback": { "data": "set_by_chatbot_show_location" } } } ]지도(쿼리입력) 버튼
Section titled “지도(쿼리입력) 버튼” "buttons": [ { "action": { "mapAction": { "showLocation": { "fallbackUrl": "지도 APP 미작동시 대체할 URL", "location": { "query": "지도 APP에서 검색할 구문" } } }, "displayText": "지도 버튼명", "postback": { "data": "set_by_chatbot_search_locations" } } } ]recvInfoLst 객체
Section titled “recvInfoLst 객체”| Name | Type | 필수 | 설명 | 크기 |
|---|---|---|---|---|
| cliKey | String | ● | 클라이언트키 | 30자 |
| phone | String | ● | 수신번호(국제문자 발송 시 맨 앞에 ‘0’이 없어야함) | 20자 |
| mergeData | Object | - | 채널별 개별화메시지 머지데이터 | - |
fbInfoLst 객체
Section titled “fbInfoLst 객체”| Name | Type | 필수 | 설명 |
|---|---|---|---|
| ch | String | ● | 채널 |
| title | String | - | 제목(MMS의 경우 필수) |
| msg | String | ● | 메시지 |
| fileId | String | - | 파일아이디 (파일 아이디와 파일 아이디 목록 중 1개만 사용 가능) |
| fileIdLst | Array | - | 파일 아이디 목록 (최대 3개) |