# 전송

팝빌 문자 전송에 대하여 안내합니다.

## 전송안내

파트너는 문자 메시지를 팝빌에 접수하여 단건, 동보, 대량 전송을 처리할 수 있습니다.\
팝빌은 다음과 같은 메시지 유형을 제공합니다.

- SMS 단문 [\[SendSMS\]](https://developers.popbill.com/api-reference/sms/api/send#SendSMSOne) : 최대 90byte (한글 45자)
- LMS 장문 [\[SendLMS\]](https://developers.popbill.com/api-reference/sms/api/send#SendLMSOne) : 최대 2,000byte (한글 1,000자)
- XMS (SMS/LMS 자동인식) [\[SendXMS\]](https://developers.popbill.com/api-reference/sms/api/send#SendXMSOne) : 입력된 메시지 길이에 따라 SMS 또는 LMS로 자동 변환하여 과금
- MMS 이미지 [\[SendMMS\]](https://developers.popbill.com/api-reference/sms/api/send#SendMMSOne) : 이미지 1장 + 최대 2,000byte (한글 1,000자)\
  └ 이미지 규격 : 가로/세로 1,000px 이하 , 파일 형식 : jpg , 파일 최대 용량 : 300KB

## 전송 프로세스

문자 메시지 유형(SMS/LMS/MMS)에 따른 전송 프로세스는 다음과 같습니다.

**SMS(단문)**

최대 90byte 이내의 단문(SMS) 전송을 요청하면, 팝빌에서 접수번호를 반환합니다. \[SMS 단문]\
메시지 길이에 따라 SMS(단문)/LMS(장문)를 자동 판별하여 전송을 요청할 수 있습니다. \[XMS (SMS/LMS 자동인식)]

```mermaid
sequenceDiagram
    participant 파트너
    participant POPBiLL

    파트너->>POPBiLL: 단문 전송 (SendSMS) <br/> 단건전송 / 대량전송 / 동보전송
    POPBiLL-->>파트너: receiptNum(접수번호) 반환
```

**LMS(장문)**

최대 2,000byte 이내 장문(LMS) 전송을 요청하면, 팝빌에서 접수번호를 반환합니다. \[LMS 장문]\
메시지 길이에 따라 SMS(단문)/LMS(장문)를 자동 판별하여 전송을 요청할 수 있습니다. \[XMS (SMS/LMS 자동인식)]

```mermaid
sequenceDiagram
    participant 파트너
    participant POPBiLL

    파트너->>POPBiLL: 장문 전송 (SendLMS) <br/> 단건전송 / 대량전송 / 동보전송
    POPBiLL-->>파트너: receiptNum(접수번호) 반환
```

**MMS(포토문자)**

이미지를 포함한 MMS 전송을 요청하면, 팝빌에서 접수번호를 반환합니다. \[MMS 포토문자]

```mermaid
sequenceDiagram
    participant 파트너
    participant POPBiLL

    파트너->>POPBiLL: 포토문자 전송 (SendMMS) <br/> 단건전송 / 대량전송 / 동보전송
    POPBiLL-->>파트너: receiptNum(접수번호) 반환
```

## 상태확인

팝빌에서 처리된 문자 상태를 확인하는 방법은 2가지를 지원합니다.

- **Webhook(Push)**\
  팝빌에서 문자 전송 상태가 변경된 시점에 파트너가 지정한 Callback URL로 이벤트 전송 [\[Webhook\]](https://developers.popbill.com/api-reference/sms/webhook/introduction)
- **API(Polling)**\
  파트너가 주기적으로 API를 호출하여 상태 확인

**Webhook(Push)**

```mermaid
sequenceDiagram
    participant 파트너
    participant Webhook Receiver
    participant POPBiLL

    파트너->>POPBiLL: Callback URL 등록
    파트너->>POPBiLL: 문자 전송 <br/> 단문 (SendSMS) <br/> 장문 (SendLMS) <br/> 이미지 (SendMMS)
    POPBiLL-->>파트너: receiptNum(접수번호) 반환
    POPBiLL->>POPBiLL: 통신사 전송 및 처리 완료
    POPBiLL->>Webhook Receiver: Webhook 실행 <br/> Event Type = "RESULT" <br/> state = 3(완료) <br/> result = 100(성공) or else(전송실패)
    Webhook Receiver->>Webhook Receiver: 결과 업데이트
```

**API(Polling)**

```mermaid
sequenceDiagram
    participant 파트너
    participant POPBiLL

    파트너->>POPBiLL: 문자 전송 <br/> 단문 (SendSMS) <br/> 장문 (SendLMS) <br/> 이미지 (SendMMS)
    POPBiLL-->>파트너: receiptNum(접수번호) 반환
    POPBiLL->>POPBiLL: 통신사 전송 및 결과반영
    파트너->>POPBiLL: GetMessages - 전송내역 확인
    POPBiLL-->>파트너: 전송상태 및 처리결과 반환 <br/> state = 3(완료) <br/> result = 100(성공) or else(전송실패)
    파트너->>파트너: 결과 업데이트
```
