웹훅
웹훅 종류
사용 가능한 웹훅은 아래와 같이 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 값 의미
메시지 상태 코드 에서 확인하세요.