# 알림톡 전송

## 1. SendATS - 전송

승인된 템플릿의 내용을 작성하여 알림톡 전송을 팝빌에 접수합니다.(최대 1,000건)

- 모든 수신자에게 동일한 내용을 전송하거나(동보전송), 수신자마다 개별 내용을 전송할 수 있습니다(대량전송).
- 전송실패시 사전에 지정한 변수 ‘AltSendType’ 값으로 대체문자를 전송할 수 있고, 이 경우 문자(SMS/LMS) 요금이 과금됩니다.
- 승인된 템플릿과 일치하지 않는 내용(알림톡 내용, 버튼 목록)을 입력하는 경우 ‘전송실패’ 처리됩니다.
- 팝빌 서비스의 안정적인 제공을 위하여 동시호출이 제한될 수 있습니다.\
  동시에 1,000건 이상 요청하는 경우 동보전송 또는 대량전송으로 이용하시는 것을 권장합니다.

```php
function SendATS($CorpNum, $TemplateCode, $Sender = null, $Content = null, $AltContent = null, $AltSendType = null, $Messages = array(), $ReserveDT = null, $UserID = null, $RequestNum = null, $Btns = array(), $AltSubject = null, $EmphasizeTitle = null)
```

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- TemplateCode `type: String` `length: 12` `required: Y` `description: 승인된 알림톡 템플릿 코드`
- Sender `type: String` `length: 20` `required: 조건부` `description: 발신번호`
  - 대체문자 전송시 필수
  - 팝빌에 등록되지 않은 발신번호를 입력하는 경우 오류 반환
- Content `type: String` `length: 1,300` `required: 조건부` `description: 알림톡 내용 (템플릿 내용의 변수 치환 필요)`
  - 단건전송, 동보전송 경우 필수
  - 템플릿 예시 : 주문하신 #{상품}이 금일 발송 처리되었습니다.
  - 작성 예시 : 주문하신 노트북이 금일 발송 처리되었습니다.
- AltContent `type: String` `length: 2,000` `required: N` `description: 대체문자 내용`
  - 단건전송, 동보전송 경우 사용
  - 메시지 길이에 따라 단문(90byte 이하) 또는 장문(90byte 초과)으로 전송
- AltSendType `type: String` `length: 1` `required: N` `description: 대체문자 유형`
  - `C`: 알림톡 내용 전송
  - `A`: 대체문자 내용 전송
  - 기본값 : 미전송
- Messages `type: KakaoReceiver[ ]` `length: 1,000` `required: Y` `description: 전송정보`
  - 최대 : 1,000개
  - rcv `type: string` `length: 20` `required: Y` `description: 수신번호`
  - rcvnm `type: string` `length: 70` `required: N` `description: 수신자명`
  - msg `type: string` `length: 1,300` `required: 조건부` `description: 알림톡 내용 (템플릿 내용의 변수 치환 필요)`
    - 대량전송 경우 필수
    - 템플릿 예시 : 주문하신 #{상품}이 금일 발송 처리되었습니다.
    - 작성 예시 : 주문하신 노트북이 금일 발송 처리되었습니다.
  - altsjt `type: string` `length: 64` `required: N` `description: 대체문자 제목`
    - 대량전송 경우 사용
    - 메시지 길이가 90byte 초과한 경우에만 적용
    - 단위 : byte
  - altmsg `type: string` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
    - 대량전송 경우 사용
  - btns `type: KakaoButton[ ]` `length: 5` `required: N` `description: 버튼 목록`
    - 대량전송 경우 사용
    - n `type: string` `length: 14` `required: Y` `description: 버튼명`
    - t `type: string` `length: 2` `required: Y` `description: 버튼유형`
      - `WL`: 웹링크
      - `AL`: 앱링크
      - `TN`: 전화걸기
      - `DS`: 배송조회
      - `MD`: 메시지전달
      - `BK`: 봇키워드
      - `AC`: 채널추가
    - u1 `type: string` `length: 1,000` `required: 조건부` `description: 버튼링크`
      - {t} = "AL" 경우 iOS 앱링크 적용
      - {t} = "WL" 경우 Mobile 웹링크 적용
      - {t} = "WL" or "AL" 경우 필수
    - u2 `type: string` `length: 1,000` `required: 조건부` `description: 버튼링크`
      - {t} = "AL" 경우 Android 앱링크 적용
      - {t} = "WL" 경우 PC 웹링크 적용
      - {t} = "WL" or "AL" 경우 필수
    - tg `type: string` `length: 3` `required: N` `description: 아웃 링크`
      - `out`: 디바이스 기본 브라우저
      - 기본값 : 카카오톡 인앱 브라우저 사용
    - telNum `type: string` `length: 14` `required: 조건부` `description: 전화걸기 번호`
      - 숫자, 하이픈(-)만 입력 가능
      - {t} = "TN" 경우 필수
  - interOPRefKey `type: string` `length: 20` `required: N` `description: 파트너 지정키`
    - 카카오톡 대량/동보전송시 파트너가 개별건마다 입력할 수 있는 값
  - EmphasizeTitle `type: string` `length: 50` `required: N` `description: 강조표기 타이틀`
    - 알림톡 템플릿 유형이 '강조표기형' 인 경우에만 적용
    - 템플릿 예시 : 주문하신 #{상품}이 도착했습니다.
    - 작성 예시 : 주문하신 노트북이 도착했습니다.
    - 기본값 : 승인된 템플릿의 강조표기 타이틀
- ReserveDT `type: String` `length: 14` `required: N` `description: 전송 예약일시`
  - 형식 : yyyyMMddHHmmss
  - 기본값 : 즉시전송
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`
- RequestNum `type: String` `length: 36` `required: N` `description: 요청번호`
  - 파트너가 접수 단위를 식별하기 위해 할당하는 관리번호
  - 영문 대소문자, 숫자, 특수문자('-','\_')만 이용 가능
- Btns `type: KakaoButton[ ]` `length: 5` `required: N` `description: 버튼 목록`
  - 단건전송, 동보전송 경우 사용
  - 버튼링크를 변경해야할 경우 사용
  - 최대 : 5개
  - 기본값 : 승인된 템플릿의 버튼 목록
  - n `type: string` `length: 14` `required: Y` `description: 버튼명`
  - t `type: string` `length: 2` `required: Y` `description: 버튼유형`
    - `WL`: 웹링크
    - `AL`: 앱링크
    - `TN`: 전화걸기
    - `DS`: 배송조회
    - `MD`: 메시지전달
    - `BK`: 봇키워드
    - `AC`: 채널추가
  - u1 `type: string` `length: 1,000` `required: 조건부` `description: 버튼링크`
    - {t} = "AL" 경우 iOS 앱링크 적용
    - {t} = "WL" 경우 Mobile 웹링크 적용
    - {t} = "WL" or "AL" 경우 필수
  - u2 `type: string` `length: 1,000` `required: 조건부` `description: 버튼링크`
    - {t} = "AL" 경우 Android 앱링크 적용
    - {t} = "WL" 경우 PC 웹링크 적용
    - {t} = "WL" or "AL" 경우 필수
  - tg `type: string` `length: 3` `required: N` `description: 아웃 링크`
    - `out`: 디바이스 기본 브라우저
    - 기본값 : 카카오톡 인앱 브라우저 사용
  - telNum `type: string` `length: 14` `required: 조건부` `description: 전화걸기 번호`
    - 숫자, 하이픈(-)만 입력 가능
    - {t} = "TN" 경우 필수
- AltSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
  - 단건전송, 동보전송 경우 사용
  - 메시지 길이가 90byte 초과한 경우에만 적용
  - 단위 : byte
- EmphasizeTitle `type: String` `length: 50` `required: N` `description: 강조표기 타이틀`
  - 알림톡 템플릿 유형이 '강조표기형' 인 경우에만 적용
  - 템플릿 예시 : 주문하신 #{상품}이 도착했습니다.
  - 작성 예시 : 주문하신 노트북이 도착했습니다.
  - 기본값 : 승인된 템플릿의 강조표기 타이틀

### 응답

String - 요청에 대한 접수번호(receiptNum)

### 예외

**PopbillException**

- code `type: Integer` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 2. CancelReserve - 예약전송 취소 (접수번호)

팝빌에서 반환받은 접수번호로 예약된 카카오톡을 전송 취소합니다. (예약시간 10분 전까지 가능)

```php
function CancelReserve($CorpNum, $ReceiptNum, $UserID = null)
```

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- ReceiptNum `type: String` `length: 18` `required: Y` `description: 팝빌에서 할당한 접수번호`
  - 카카오톡 예약전송 요청의 반환값
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**Response**

- code `type: Integer` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`

### 예외

**PopbillException**

- code `type: Integer` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 3. CancelReservebyRCV - 예약전송 부분 취소 (접수번호)

팝빌에서 반환받은 접수번호로 접수 건을 식별하여 수신번호에 예약된 카카오톡을 전송 취소합니다. (예약시간 10분 전까지 가능)

```php
function CancelReservebyRCV($CorpNum, $ReceiptNum, $ReceiveNum, $UserID = null)
```

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- ReceiptNum `type: String` `length: 18` `required: Y` `description: 팝빌에서 할당한 접수번호`
  - 카카오톡 예약전송 요청의 반환값
- ReceiveNum `type: String` `length: 20` `required: Y` `description: 예약전송 수신번호`
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**Response**

- code `type: Integer` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`

### 예외

**PopbillException**

- code `type: Integer` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 4. CancelReserveRN - 예약전송 전체 취소 (요청번호)

파트너가 할당한 요청번호로 예약된 카카오톡을 전송 취소합니다. (예약시간 10분 전까지 가능)

```php
function CancelReserveRN($CorpNum, $RequestNum, $UserID = null)
```

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- RequestNum `type: String` `length: 36` `required: Y` `description: 파트너가 할당한 요청번호`
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**Response**

- code `type: Integer` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`

### 예외

**PopbillException**

- code `type: Integer` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 5. CancelReserveRNbyRCV - 예약전송 부분 취소 (요청번호)

파트너가 할당한 요청번호로 접수 건을 식별하여 수신번호에 예약된 카카오톡을 전송 취소합니다. (예약시간 10분 전까지 가능)

```php
function CancelReserveRNbyRCV($CorpNum, $RequestNum, $ReceiveNum, $UserID = null)
```

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- RequestNum `type: String` `length: 36` `required: Y` `description: 파트너가 할당한 요청번호`
- ReceiveNum `type: String` `length: 20` `required: Y` `description: 예약전송 수신번호`
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**Response**

- code `type: Integer` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`

### 예외

**PopbillException**

- code `type: Integer` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`
