웹훅
현재 솔라피에선 아래와 같이 3개의 웹훅을 지원하고 있습니다.
그룹 혹은 메시지 개별 건이 처리 완료될 때 한번 호출됩니다.
- 메시지 리포트 : 메시지 처리가 완료되었을 때 호출됩니다.
- 그룹 리포트 : 그룹 내 모든 메시지 처리가 완료되었을 때 호출됩니다.
- 팩스 수신 : 팩스가 수신되었을 때 호출됩니다.
웹훅 구현
Response 내용과는 관계없이 HTTP Status Code를 200으로 리턴해야 재시도 하지 않습니다.
재시도
하나의 이벤트에 대해 설정된 URL 호출에 실패하면 추가로 7번의 재시도를 하게 됩니다.(총 8번의 시도) 각각의 재시도마다 대기시간이 두 배로 늘어나게 되며, 실패 후 최초의 재시도는 15분 뒤입니다.
예시
- 15분 뒤 첫번째 재시도
- 30분 뒤 두번째 재시도
- 60분 뒤 세번재 재시도...
총 8번의 이벤트 전달에 실패하면 설정된 웹훅 상태가 비활성화되고 이후 웹훅 이벤트를 전달하지 않습니다.
데이터 형식
설정된 URL에 POST로 전달됩니다. 전달되는 데이터 포맷은 아래의 예시를 참고해 주세요.
메시지 리포트 예시
[
{
"messageId": "M4V202212291118233WFNUDAXMX1A001",
"groupId": "G4V20221229111823FFGLDPAQEP3FF86",
"type": "ATA",
"to": "01000000001",
"from": "029302266",
"statusCode": "4000",
"statusMessage": "수신 완료",
"dateProcessed": "2022-12-29T02:18:40.713Z",
"dateReported": "2022-12-29T02:18:45.000Z",
"dateReceived": "2022-12-29T02:18:44.000Z",
"networkCode": "90901",
"customFields": {
"name": "홍길동"
}
},
{
"messageId": "M4V202212291118233WFNUDAXMX1A002",
"groupId": "G4V20221229111823FFGLDPAQEP3FF86",
"type": "ATA",
"to": "01000000002",
"from": "029302266",
"statusCode": "4000",
"statusMessage": "수신 완료",
"dateProcessed": "2022-12-29T02:18:40.813Z",
"dateReported": "2022-12-29T02:18:45.000Z",
"dateReceived": "2022-12-29T02:18:44.000Z",
"networkCode": "90901",
"customFields": {
"name": "고길동"
}
}
]
그룹 리포트 예시
[
{
"count": {
"total": 1,
"sentTotal": 1,
"sentFailed": 0,
"sentSuccess": 1,
"sentPending": 0,
"sentReplacement": 0,
"refund": 0,
"registeredFailed": 0,
"registeredSuccess": 1
},
"countForCharge": {
"sms": {},
"lms": {},
"mms": {},
"ata": {
"82": 1
},
"cta": {},
"cti": {},
"nsa": {},
"rcs_sms": {},
"rcs_lms": {},
"rcs_mms": {},
"rcs_tpl": {}
},
"balance": {
"requested": 8,
"replacement": 0,
"refund": 0,
"sum": 8
},
"point": {
"requested": 0,
"replacement": 0,
"refund": 0,
"sum": 0
},
"app": {
"profit": {
"sms": 0,
"lms": 0,
"mms": 0,
"ata": 0,
"cta": 0,
"cti": 0,
"nsa": 0,
"rcs_sms": 0,
"rcs_lms": 0,
"rcs_mms": 0,
"rcs_tpl": 0
},
"appId": null,
"version": null
},
"serviceMethod": "MT",
"sdkVersion": null,
"osPlatform": null,
"log": [
{
"createAt": "2022-12-29T02:16:12.936Z",
"message": "[14.36.11.105] 메시지 그룹이 생성되었습니다."
},
{
"createAt": "2022-12-29T02:16:12.969Z",
"message": "퍼플북을 통해 생성되었습니다. 백그라>운드 처리 여부 : false"
},
{
"createAt": "2022-12-29T02:16:13.159Z",
"message": "국가코드(82)의 알림톡(ATA) 1 건이 추가되었습니다."
},
{
"createAt": "2022-12-29T02:16:16.813Z",
"message": "메시지를 발송했습니다.",
"oldBalance": 43778082.7,
"newBalance": 43778078.7,
"oldPoint": 0,
"newPoint": 0,
"totalPrice": 8
}
],
"status": "COMPLETE",
"dateSent": "2022-12-29T02:16:16.813Z",
"scheduledDate": null,
"dateCompleted": "2022-12-29T02:16:21.683Z",
"isRefunded": false,
"flagUpdated": false,
"prepaid": true,
"strict": false,
"masterAccountId": null,
"allowDuplicates": false,
"_id": "G4V20221229111612XSXKODV6QRNJTJ5",
"groupId": "G4V20221229111612XSXKODV6QRNJTJ5",
"accountId": "111111111111",
"apiVersion": "4",
"customFields": {},
"hint": null,
"price": {
"82": {
"sms": 13,
"lms": 29,
"mms": 60,
"ata": 8,
"cta": 14,
"cti": 22,
"nsa": 6,
"rcs_sms": 11,
"rcs_lms": 28,
"rcs_mms": 58,
"rcs_tpl": 8
}
},
"dateCreated": "2022-12-29T02:16:12.936Z",
"dateUpdated": "2022-12-29T02:16:21.683Z"
}
]
팩스 수신
[
{
"statusCode": "4000",
"tcsResult": 0,
"logMsg": "FAX 전송이 완료되었습니다.",
"fileId": "ST01FZ230414025210521Z1IazzVahab",
"url": "https://cool-storage.s3.ap-northeast-2.amazonaws.com/486/ST01FZ230414025210521Z1IazzVabcd",
"from": "020000001",
"to": "030309351234",
"pageCount": 2,
"dateReceived": "2023-04-14T01:22:25.000Z"
},
{
"statusCode": "4000",
"tcsResult": 0,
"logMsg": "FAX 전송이 완료되었습니다.",
"fileId": "ST01FZ230414025210521Z1IazzVahac",
"url": "https://cool-storage.s3.ap-northeast-2.amazonaws.com/486/ST01FZ230414025210521Z1IazzVbcde",
"from": "020000002",
"to": "030309351234",
"pageCount": 3,
"dateReceived": "2023-04-14T01:22:25.000Z"
}
]
참고 자료
networkCode 값
코드 | 네트워크 |
---|---|
45005 | SKT |
45008 | KT올레 |
45006 | LG유플러스 |
45099 | ETC |
90901 | 카카오 |
90902 | 네이버 |
99999 | Unknown carrier |
statusCode의 설명은 메시지 상태 코드 에서 확인하세요.