리포트 요청 (Polling 방식) #
실시간으로 처리가 완료된 메시지의 결과를 전달합니다.
메시지 결과는 한번만 전달됩니다.
▶ 클라이언트에서 리포트 요청기능 구현 시 주의사항
1) 리포트 요청 결과가 1건이라도 있을 경우, 처리 후 바로 다음 리포트 요청을 시작해야 합니다.
만약 리포트가 없으면 잠시 쉬었다가 다시 요청해야 합니다. 리포트는 최대 100개까지 한 번에 받아서 배열(Array)로 전달됩니다.
2) 리포트 요청 결과가 안 오면, 무한히 요청하는 것을 막기 위해 10초마다 요청하되, 10초 이내에 요청하면 실패처리합니다.
3) 리포트 결과에는 report key가 있습니다. 리포트 처리가 끝나면 해당 report key를 리포트 처리 결과 전달 API로 전달해야 합니다.
만약 120초 동안 전달되지 않으면 리포트는 다시 내려가며, 클라이언트는 중복 수신을 방지하기 위해 확인 처리를 해야 합니다.
4) 리포트를 요청하지 않으면 81시간 후에 자동으로 만료처리됩니다.
Request #
URL
GET /msg/v1.2/report HTTP/1.1 Authorization: Bearer {token} Content-Type: application/json Host: api.msghub.uplus.co.kr
Header
Name | Type | Required | Description |
---|---|---|---|
Authorization | String | true | 사용자 인증 토큰 |
Response #
Name | Type | Description |
---|---|---|
code | String | 리포트 요청에 대한 결과 응답코드 |
message | String | 리포트 요청에 대한 결과 응답코드 설명 |
data | List | 결과 데이터 목록 |
data.rptKey | String | 리포트 키 |
data.rptCnt | Integer | 리포트 개수 |
data.rptLst | List | 리포트 목록 |
data.rptLst[].msgKey | String | U+ 메시지 허브 시스템에서 부여한 메시지 고유 키 |
data.rptLst[].cliKey | String | 클라이언트키: 고객사에서 부여하는 메시지 고유 키 |
data.rptLst[].ch | String | 채널 |
data.rptLst[].resultCode | String | 메시지 발송 결과코드 |
data.rptLst[].resultCodeDesc | String | 메시지 발송 결과코드 설명 |
data.rptLst[].fbReasonLst | List<FbReason> | Fallback 사유 |
data.rptLst[].telco | String | 이통사(*xMS, RCS만 해당) |
data.rptLst[].rptDt | String | 결과 수신 일시 |
data.rptLst[].productCode | String | 상품코드 |
Sample #
Curl
curl -X GET "https://api.msghub.uplus.co.kr/msg/v1.2/report" -H "accept: */*" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ..."
Response
{ "code": "10000", "message": "성공", "data": { "rptKey": "rptKey", "rptCnt": 100, "rptLst": [ { "msgKey": "msgKey", "cliKey": "cliKey", "ch": "SMS", "resultCode": "21003", "resultCodeDesc": "발송타임아웃", "fbReasonLst": [ { "ch":"RCS", "fbResultCode":"51004", "fbResultDesc":"Parameter Error", "telco":"KT" } ], "productCode": "SMS", "telco": null, "rptDt": null }, { "msgKey": "msgKey", "cliKey": "cliKey", "ch": "SMS", "resultCode": "21003", "resultCodeDesc": "발송타임아웃", "fbReasonLst": [ { "ch":"RCS", "fbResultCode":"51004", "fbResultDesc":"Parameter Error", "telco":"KT" } ], "productCode": "SMS", "telco": null, "rptDt": null } .... ] } }
참고
결과 코드 참고
리포트 처리결과 전달 (polling 방식 ) #
요청된 리포트 키에 해당하는 리포트를 완료 처리하면, 해당 리포트 결과를 전달해야 합니다.
만약 120초 동안 리포트 처리 결과 전달이 안 되면, 리포트 요청 시 동일한 리포트 목록이 다시 전달됩니다.
이 경우 클라이언트는 중복 수신을 방지하기 위해 확인 처리를 해야 합니다.
Request #
URL
POST /msg/v1.2/report/result HTTP/1.1 Authorization: Bearer {token} Content-Type: application/json Host: api.msghub.uplus.co.kr
Request Body
Name | Type | Description |
---|---|---|
rptKeyLst | List<String> | 리포트 전달 (polling 방식 ) API 실행 후 리턴받은 rptKey 목록 |
Response #
HTTP | Description | Description |
---|---|---|
200 | 성공 | 리포트 요청에 대한 결과 응답코드 |
400 | 실패 | 리포트 요청에 대한 결과 응답코드 설명 |
Sample #
Curl
curl -X GET "https://api.msghub.uplus.co.kr/msg/v1.2/report/result" -H "accept: */*" -H "Content-Type: application/json" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiYWNjZXNzVXJsIjoiYXV0aCIsImlzcyI6ImNtLmxndXBsdX..." -d '{ "rptKeyLst": [ "RPsAOqHDhO" ] }'
참고
결과 코드 참고
리포트 전달 (Webhook 방식) #
실시간으로 처리가 완료된 메시지의 결과를 전달합니다.
메시지를 수신할수 있는 웹훅 URL정보를 사전에 등록해서 사용해야 합니다.
메시지는 API KEY 상세에서 설정한 고객사 웹훅 URL 정보로 전달합니다.
메시지 결과는 한번만 전달됩니다.
메시지 전달 실패 시, 특정시간 이후 재시도 합니다. (10초:이후 별도 공지없이 변경될 수 있음)
리포트는 특정시간 동안 보관됩니다. (72시간:이후 별도 공지없이 변경될 수 있음)
Request #
URL
POST #{WEBHOOK_URL의 uri} HTTP/1.1 Content-Type: application/json Host: #{WEBHOOK_URL의 host}
Request Body
Name | Type | Description |
---|---|---|
rptCnt | Integer | 리포트 개수(최대: 100개) |
rptLst | List | 리포트 목록 |
rptLst[].msgKey | String | U+ 메시지 허브 시스템에서 부여한 메시지 고유 키 |
rptLst[].cliKey | String | 클라이언트키: 고객사에서 부여하는 메시지 고유 키 |
rptLst[].ch | String | 채널 |
rptLst[].resultCode | String | 메시지 발송 결과코드 |
rptLst[].resultCodeDesc | String | 메시지 발송 결과코드 설명 |
rptLst[].productCode | String | 상품코드 |
rptLst[].fbReasonLst | List<FbReason> | Fallback 사유 |
rptLst[].telco | String | 이통사(*xMS, RCS만 해당) |
rptLst[].rptDt | String | 결과 수신 일시 |
Response #
HTTP | Description | 비고 |
---|---|---|
200 | 성공 | |
204 | 성공 | 응답 혹은 처리 할 리포트가 없음 |
400 | 실패 | 실패로 전달시 재처리 가능함 |
Sample #
Curl
curl -X POST "https://{WEBHOOK_URL}" -H "accept: */*" -H "Content-Type: application/json" -d { "rptCnt": 1, "rptLst": [ { "msgKey": "lXXYpOIuCd.6cGlYN", "cliKey": "test2", "ch": "SMS", "resultCode": "10000", "resultCodeDesc": "성공", "productCode":"SMS", "fbReasonLst": null, "telco": "KT", "rptDt": "2022-04-19T15:01:40" } ] }
리포트 조회 #
cliKey로 메시지 상태를 조회합니다.
최대 90일까지 조회가 가능합니다.
Request #
URL
POST /msg/v1/sent HTTP/1.1 Authorization: Bearer {token} Content-Type: application/json Host: api.msghub.uplus.co.kr
Header
Name | Type | Required | Description |
---|---|---|---|
Authorization | String | true | 사용자 인증 토큰 |
Request Body
Name | Type | Description | 비고 |
---|---|---|---|
cliKeyLst | List<ReqSentMsg> | 요청 cliKey 정보 목록 | 최대 10건 |
ReqSentMsg 발송 정보
Name | Type | Required | Description |
---|---|---|---|
cliKey | String | true | 클라이언트키: 고객사에서 부여하는 메시지 고유 키(^[a-zA-Z0-9-_.@]{1,30}$) |
reqDt | String | true | 발송일자 (2022-11-04) |
Response #
Name | Type | Description |
---|---|---|
code | String | 리포트 확인 요청에 대한 결과 응답코드 |
message | String | 리포트 확인 요청에 대한 결과 응답코드 설명 |
data | List | 결과 데이터 |
data.cliKeyLst | List | 클라이언트키 목록 |
data.cliKeyLst[].msgKey | String | U+ 메시지 허브 시스템에서 부여한 메시지 고유 키 |
data.cliKeyLst[].cliKey | String | 클라이언트키: 고객사에서 부여하는 메시지 고유 키 |
data.cliKeyLst[].status | String | 메시지 상태 |
data.cliKeyLst[].ch | String | 채널 |
data.cliKeyLst[].resultCode | String | 메시지 발송 결과코드 |
data.cliKeyLst[].resultCodeDesc | String | 메시지 발송 결과코드 설명 |
data.cliKeyLst[].fbReasonLst | List<FbReason> | Fallback 사유 |
data.cliKeyLst[].telco | String | 이통사(*xMS, RCS만 해당) 또는 카카오 딜러사(API Key 설정: 결과 딜러사 정보 제공 Y인 경우) |
data.cliKeyLst[].rptDt | String | 결과 수신 일시 |
data.cliKeyLst[].productCode | String | 상품코드 |
참고
메시지 상태 REG : 접수완료 ING : 처리중 DONE : 완료 OVER_DATE : 조회기간 초과(최대 90일) INVALID_KEY : 잘못된 메시지키
FbReason Fallback 사유
Name | Type | Required | Description |
---|---|---|---|
ch | String | true | 채널 |
fbResultCode | String | true | fb 결과코드 |
fbResultDesc | String | true | fb 결과설명 |
telco | String | false | 이통사(*xMS, RCS만 해당) 또는 카카오 딜러사(API Key 설정: 결과 딜러사 정보 제공 Y인 경우) |
Sample #
Curl
curl -X GET "https://api.msghub.uplus.co.kr/mo/v1/sent" -H "accept: */*" -H "Content-Type: application/json" -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiYWNjZXNzVXJsIjoiYXV0aCIsImlzcyI6ImNtLmxndXBsdX..." -d '{ "cliKeyLst": [ { "cliKey": "cliKey", "reqDt": "2022-12-02" } ] }'
Response
{ "code": "10000", "message": "성공", "data": { "cliKeyLst": [ { "msgKey": "ymk5q2XqOh.12345", "cliKey": "1", "ch": "SMS", "status": "DONE", "resultCode": "30124", "resultCodeDesc": "비가입자,결번,서비스정지", "telco": "ETC", "fbReasonLst": [ { "ch": "RCS", "fbResultCode": "51004", "fbResultDesc": "Parameter Error", "telco": "KT" } ], "rptDt": "2022-05-24T10:35:45" "productCode": "LMS" } ] } }