# 웹훅 이벤트

문자 전송에서 발생하는 웹훅 이벤트입니다.

> 실제 고객사 서버로 전송된 웹훅 이벤트 정보는 [\[Webhook 실행내역 확인\]](https://developers.popbill.com/reference/sms/php/webhook/introduction#check) 을 참고하여 주시기 바랍니다.

## 1. 웹훅 헤더

|  순번 | 변수명                |  필수 | 설명                     | 예시                                         |
| :-: | ------------------ | :-: | ---------------------- | ------------------------------------------ |
|  1  | Pb-Webhook-Type    |  Y  | Webhook 유형             | SMS.STATE                                  |
|  2  | Pb-Webhook-MID     |  Y  | 이벤트 식별값                | 016120000002-1777d55c2c41492ab06826d       |
|  3  | Pb-Webhook-Corpnum |  Y  | 팝빌 사업자번호               | 6798700433                                 |
|  4  | Content-Type       |  Y  | Webhook 메시지 Body 타입    | application/json                           |
|  5  | Authorization      |  N  | Base64 인코딩한 BASIC 인증정보 | Basic VEVTVDoxMjM= → HTTP 인증 사용하는 경우 추가 항목 |
|  6  | X-Api-Key          |  N  | API Key 인증정보           | TESTAPIKEY → HTTP 인증 사용하는 경우 추가 항목         |

> 팝빌은 기본으로 제공되는 Header 필드 외 프로그램 공급사 운영환경에 맞춘 커스텀 필드 지원이 가능합니다.\
> 커스텀 필드 추가가 필요한 경우 팝빌 기술지원센터(1600-9854)로 문의주시기 바랍니다.

## 2. 전송 상태

문자 전송 상태가 변경될 때 발생하는 웹훅 이벤트입니다.\
각 이벤트 발생시점은 [\[상태확인\]](https://developers.popbill.com/guide/sms/introduction/send#check-state) 에서 확인 가능합니다.

| 이벤트 유형                                                                                          | 설명                         |
| ----------------------------------------------------------------------------------------------- | -------------------------- |
| [RESULT](https://developers.popbill.com/reference/sms/php/webhook/webhook-event#sms-state-send) | 문자 전송결과 (전송완료, 전송실패, 예약취소) |

> 팝빌 사이트에서 “Webhook 실행” 버튼을 클릭하여 웹훅을 전송하는 경우, eventType으로 “MANUAL”이 반환됩니다.

### RESULT - 전송결과

발신자가 보낸 문자가 수신자에게 전송완료/전송실패/예약취소 된 시점에 실행됩니다.

**이벤트 본문**

- corpNum `type: string` `length: 10` `required: Y` `description: 팝빌회원 사업자번호`
- receiptNum `type: string` `length: 18` `required: Y` `description: 접수번호`
- requestNum `type: string` `length: 36` `required: N` `description: 요청번호`
- serialNum `type: number` `length: -` `required: Y` `description: 일련번호`
- state `type: number` `length: 1` `required: Y` `description: 상태코드`
  - [\[참고\] 팝빌 상태코드](https://developers.popbill.com/reference/sms/php/response-code#state-code)
- result `type: number` `length: 3` `required: N` `description: 결과코드`
  - [\[참고\] 통신사 결과코드](https://developers.popbill.com/reference/sms/php/response-code#telecom-result-code)
  - {state} = 3 경우 문자 전송결과 확인 가능
- receiptDT `type: string` `length: 14` `required: Y` `description: 접수일시`
  - 형식 : yyyyMMddHHmmss
- reserveDT `type: string` `length: 14` `required: N` `description: 예약일시`
  - 형식 : yyyyMMddHHmmss
- resultDT `type: string` `length: 14` `required: Y` `description: 전송결과 수신일시`
  - 형식 : yyyyMMddHHmmss
- sendDT `type: string` `length: 14` `required: N` `description: 전송일시`
  - 형식 : yyyyMMddHHmmss
- sendNum `type: string` `length: 20` `required: Y` `description: 발신번호`
- sendName `type: string` `length: 70` `required: N` `description: 발신자명`
- receiveNum `type: string` `length: 20` `required: Y` `description: 수신번호`
- receiveName `type: string` `length: 70` `required: N` `description: 수신자명`
- type `type: string` `length: 3` `required: N` `description: 문자 유형`
  - `SMS`
  - `LMS`
  - `MMS`
- content `type: string` `length: 2000` `required: N` `description: 메시지 내용`
- tranNet `type: string` `length: 3` `required: N` `description: 전송 통신사명`
- eventType `type: string` `length: 30` `required: Y` `description: 이벤트 유형`
  - `RESULT`
- eventDT `type: string` `length: 14` `required: Y` `description: 이벤트 실행일시`
  - 형식 : yyyyMMddHHmmss
- interOPRefKey `type: string` `length: 20` `required: N` `description: 파트너 지정 키`
  - 문자 대량/동보전송시 파트너가 개별건마다 입력한 값
- interOPYN `type: boolean` `length: -` `required: Y` `description: API 전송 여부`
  - `true`: API
  - `false`: 팝빌 사이트

**이벤트 예시**

```json
{
    "corpNum": "1234567890",
    "receiptNum": "022111411000000012",
    "serialNum": 1,
    "state": 3,
    "result": 100,
    "receiptDT": "20221114115429",
    "resultDT": "20221114115433",
    "sendDT": "20221114115432",
    "sendNum": "07043042991",
    "receiveNum": "01011112222",
    "receiveName": "수신자",
    "type": "SMS",
    "content": "테스트 내용입니다.",
    "tranNet": "KT",
    "eventType": "RESULT",
    "eventDT": "20221114115434",
    "interOPYN": false
}
```
