메시지 발송 예제
해당 페이지에서는 SOLAPI PHP SDK를 이용하여 메시지를 발송하는 방법에 대해 가이드하고 있습니다.
PHP SDK를 통해 빠르고 쉽게 메시지를 발송해보세요!
- 해당 예제는 PHP 7 버전 이상에서만 구동 가능합니다.
- 해당 예제는 PHP SDK 5.0.4 버전을 기준으로 작성되었습니다.
- 해당 예제의 모든 코드는 namespace, use(import) 키워드가 제외되어 있습니다!
- 여러 건 발송이나 더 다양한 예제를 확인해보고 싶으신 경우 SDK 샘플 코드 페이지를 확인해보세요!
- PHP 5 버전을 사용하시는 분들께서는 아래의 PHP 5 버전 예제 링크를 참고해주세요!
- 발송 요청을 하실 때 반드시 발신번호와 수신번호는 01012345678 형식으로 요청하셔야 합니다!
- +, -, * 특수문자 등 삽입 불가
// 예시, 다른 파라미터 생략, json 형식
{
"from": "029302266",
"to": "029302266"
}
🔗 SDK 샘플 코드 페이지
🔗 PHP 5 버전 예제
환경설정
터미널에서 연동할 프로젝트의 폴더로 이동하신 다음 아래와 같은 명령어를 입력하여 SDK를 설치해보세요!
Composer가 설치되어 있어야 합니다.
composer require solapi/sdk
문자 발송
PHP로 문자를 발송하는 방법에 대해 안내합니다.
연동하실 코드로 이동하신 다음, 아래의 각 유형별 문자 발송예시를 참고하셔서 원하시는 유형의 문자를 발송해보세요!
단문 문자(SMS) 발송
try {
$messageService = new SolapiMessageService("API 키 입력", "API 시크릿 키 입력");
$message = new Message();
$message->setTo("수신번호")
->setFrom("계정에서 등록한 발신번호 입력")
->setText("한글 45자, 영자 90자 이하 입력되면 자동으로 SMS타입의 메시지가 발송됩니다.");
$messageService->send($message);
} catch (MessageNotReceivedException $exception) {
// 접수에 실패한 메시지 목록 조회
print_r($exception->getFailedMessageList());
} catch (Exception $exception) {
print_r($exception->getMessage());
}
장문 문자(LMS) 발송
try {
$messageService = new SolapiMessageService("API 키 입력", "API 시크릿 키 입력");
$message = new Message();
$message->setTo("수신번호")
->setFrom("계정에서 등록한 발신번호 입력")
->setText("한글 45자, 영자 90자 이상 입력되면 자동으로 LMS타입의 문자메시지가 발송됩니다. 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ");
// LMS는 문자에 제목을 지정할 수 있습니다! 필요 시 해당 주석을 해제하여 사용해보세요!
// $message->setSubject("문자 제목 입력");
$messageService->send($message);
} catch (MessageNotReceivedException $exception) {
// 접수에 실패한 메시지 목록 조회
print_r($exception->getFailedMessageList());
} catch (Exception $exception) {
print_r($exception->getMessage());
}
사진 문자(MMS) 발송
try {
$messageService = new SolapiMessageService("API 키 입력", "API 시크릿 키 입력");
$imageId = $messageService->uploadFile("이미지 파일 경로");
$message = new Message();
$message->setTo("수신번호")
->setFrom("계정에서 등록한 발신번호 입력")
->setText("한글 45자, 영자 90자 이상 입력되면 자동으로 LMS타입의 문자메시지가 발송됩니다. 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ")
->setImageId($imageId);
// MMS는 문자에 제목을 지정할 수 있습니다, 필요 시 해당 주석을 해제하여 사용해보세요!
// $message->setSubject("문자 제목 입력");
$messageService->send($message);
} catch (MessageNotReceivedException $exception) {
// 접수에 실패한 메시지 목록 조회
print_r($exception->getFailedMessageList());
} catch (Exception $exception) {
print_r($exception->getMessage());
}
해외 문자(SMS 전용) 발송
try {
$messageService = new SolapiMessageService("API 키 입력", "API 시크릿 키 입력");
$message = new Message();
$message->setTo("국제번호를 제외한 수신번호")
->setFrom("계정에서 등록한 발신번호 입력")
->setText("한글 45자, 영자 90자 이하 입력되면 자동으로 SMS 타입의 메시지가 발송됩니다.");
// 미국 국가번호, 국가번호 뒤에 추가로 번호가 붙는 국가들은 붙여서 기입해야 합니다. 예) 1 441 -> "1441"
$message->setCountry("1");
$messageService->send($message);
} catch (MessageNotReceivedException $exception) {
// 접수에 실패한 메시지 목록 조회
print_r($exception->getFailedMessageList());
} catch (Exception $exception) {
print_r($exception->getMessage());
}
카카오 알림톡/친구톡 발송
PHP로 알림톡/친구톡을 발송하는 방법에 대해 안내합니다.
연동하실 코드로 이동하신 다음, 아래의 각 유형별 문자 발송예시를 참고하셔서 원하시는 유형의 알림톡/친구톡을 발송해보세요!
알림톡 발송
알림톡 템플릿 내 치환문구(변수)가 없을 경우 pfId, templateId만 넣어주세요!
text 파라미터를 넣어 발송 요청하실 경우 발송에 실패합니다.
try {
$messageService = new SolapiMessageService("API 키 입력", "API 시크릿 키 입력");
$kakaoOption = new KakaoOption();
$kakaoOption->setPfId("연동한 비즈니스 채널의 pfId")
->setTemplateId("등록한 알림톡 템플릿의 ID");
// 치환문구가 있는 경우에만 추가해주세요, 반드시 키 값은 등록하신 치환문구와 동일하게 모두 입력하셔야 합니다!
// 또한 치환문구 상 키, 값은 모두 string 타입만 허용됩니다.
/*$variables = [
"#{변수명}" => "임의의 값"
];
$kakaoOption->setVariables($variables);*/
$message = new Message();
$message->setTo("수신번호")
->setKakaoOptions($kakaoOption);
// 문자 대체 발송을 희망하실 경우 계정 내에 등록하신 발신번호를 추가해주세요!
// $message->setFrom("계정에서 등록한 발신번호 입력");
$messageService->send($message);
} catch (MessageNotReceivedException $exception) {
// 접수에 실패한 메시지 목록 조회
print_r($exception->getFailedMessageList());
} catch (Exception $exception) {
print_r($exception->getMessage());
}
카카오톡 해외 번호 가입자에 대한 알림톡 발송방법
try {
$messageService = new SolapiMessageService("API 키 입력", "API 시크릿 키 입력");
$kakaoOption = new KakaoOption();
$kakaoOption->setPfId("연동한 비즈니스 채널의 pfId")
->setTemplateId("등록한 알림톡 템플릿의 ID");
// 치환문구가 있는 경우에만 추가해주세요, 반드시 키 값은 등록하신 치환문구와 동일하게 모두 입력하셔야 합니다!
// 또한 치환문구 상 키, 값은 모두 string 타입만 허용됩니다.
/*$variables = [
"#{변수명}" => "임의의 값"
];
$kakaoOption->setVariables($variables);*/
$message = new Message();
$message->setTo("수신번호")
->setKakaoOptions($kakaoOption);
// 미국 국가번호, 국가번호 뒤에 추가로 번호가 붙는 국가들은 붙여서 기입해야 합니다. 예) 1 441 -> "1441"
$message->setCountry("1");
// 문자 대체 발송을 희망하실 경우 계정 내에 등록하신 발신번호를 추가해주세요!
// $message->setFrom("계정에서 등록한 발신번호 입력");
$messageService->send($message);
} catch (MessageNotReceivedException $exception) {
// 접수에 실패한 메시지 목록 조회
print_r($exception->getFailedMessageList());
} catch (Exception $exception) {
print_r($exception->getMessage());
}
친구톡 발송
친구톡에서는 버튼과 이미지를 모두 포함하여 발송하실 수 있습니다.
자세한 사항은 각각의 예제를 참고하여 연동해주세요.
단순 텍스트 친구톡 발송
try {
$messageService = new SolapiMessageService("API 키 입력", "API 시크릿 키 입력");
$kakaoOption = new KakaoOption();
$kakaoOption->setPfId("연동한 비즈니스 채널의 pfId")
->setVariables(null);
$message = new Message();
$message->setTo("수신번호")
->setText("2,000 byte 이내의 메시지 입력")
->setKakaoOptions($kakaoOption);
// 문자 대체 발송을 희망하실 경우 계정 내에 등록하신 발신번호를 추가해주세요!
// $message->setFrom("계정에서 등록한 발신번호 입력");
$messageService->send($message);
} catch (MessageNotReceivedException $exception) {
// 접수에 실패한 메시지 목록 조회
print_r($exception->getFailedMessageList());
} catch (Exception $exception) {
print_r($exception->getMessage());
}
버튼을 포함한 친구톡 발송
친구톡 버튼은 최대 5개 까지만 삽입하실 수 있습니다.
try {
$messageService = new SolapiMessageService("API 키 입력", "API 시크릿 키 입력");
// 모든 버튼의 이름은 변경할 수 있습니다!
$kakaoOption = new KakaoOption();
$kakaoOption->setPfId("연동한 비즈니스 채널의 pfId")
->setVariables(null)
->setButtons([
[
"buttonType" => "WL", // 웹링크 유형
"buttonName" => "버튼 이름",
"linkMo" => "https://m.example.com", // 모바일 링크
"linkPc" => "https://example.com" // PC 링크, 생략 가능
],
[
"buttonType" => "AL", // 앱링크 유형
"buttonName" => "버튼 이름",
"linkAnd" => "examplescheme://", // 안드로이드 앱 링크,
"linkIos" => "examplescheme://" // iOS 앱 링크
],
[
"buttonType" => "BK", // 봇키워드 유형
"buttonName" => "봇키워드"
],
[
"buttonType" => "MD", // 상담요청하기 유형 (상담요청하기 버튼을 누르면 메시지 내용이 상담원에게 그대로 전달됩니다.)
"buttonName" => "상담요청하기"
],
[
"buttonType" => "BT", // 챗봇 문의 유형 (채널이 챗봇을 운영할 때 챗봇 문의로 전환할 수 있습니다)
"buttonName" => "챗봇 문의"
],
/*[
"buttonType" => "BC", // 상담톡전환 유형 (상담톡 서비스 사용 시 가능)
"buttonName" => "상담톡 전환"
],*/
]);
$message = new Message();
$message->setTo("수신번호")
->setText("2,000 byte 이내의 메시지 입력")
->setKakaoOptions($kakaoOption);
// 문자 대체 발송을 희망하실 경우 계정 내에 등록하신 발신번호를 추가해주세요!
// $message->setFrom("계정에서 등록한 발신번호 입력");
$messageService->send($message);
} catch (MessageNotReceivedException $exception) {
// 접수에 실패한 메시지 목록 조회
print_r($exception->getFailedMessageList());
} catch (Exception $exception) {
print_r($exception->getMessage());
}
이미지를 포함한 친구톡 발송
try {
$messageService = new SolapiMessageService("API 키 입력", "API 시크릿 키 입력");
$imageId = $messageService->uploadFile("이미지 경로", "KAKAO", "파일명", "https://example.com");
$kakaoOption = new KakaoOption();
$kakaoOption->setPfId("연동한 비즈니스 채널의 pfId")
->setVariables(null)
->setImageId($imageId);
$message = new Message();
$message->setTo("수신번호")
->setText("2,000 byte 이내의 메시지 입력")
->setKakaoOptions($kakaoOption);
// 문자 대체 발송을 희망하실 경우 계정 내에 등록하신 발신번호를 추가해주세요!
// $message->setFrom("계정에서 등록한 발신번호 입력");
$messageService->send($message);
} catch (MessageNotReceivedException $exception) {
// 접수에 실패한 메시지 목록 조회
print_r($exception->getFailedMessageList());
} catch (Exception $exception) {
print_r($exception->getMessage());
}
예약 발송
예약 발송은 모든 발송 수단(문자, 알림톡 등)에서 사용할 수 있는 기능입니다.
예약 발송 기능은 앞서 안내된 각 코드의 send 메소드에서 두 번째 파라미터로 날짜(string 타입 혹은 Date 타입)를 입력하면 해당 날짜로 예약 접수가 진행됩니다.
예약 날짜가 현재 시각보다 더 과거의 시간일 경우 즉시 발송 접수가 진행됩니다.
발송 예시
발송 예시는 SMS(단문 문자)만 제공되지만, 모든 발송 수단에서 사용할 수 있습니다!
try {
$messageService = new SolapiMessageService("API 키 입력", "API 시크릿 키 입력");
$message = new Message();
$message->setTo("수신번호")
->setFrom("계정에서 등록한 발신번호 입력")
->setText("한글 45자, 영자 90자 이하 입력되면 자동으로 SMS타입의 메시지가 발송됩니다.");
date_default_timezone_set("Asia/Seoul");
$dateTime = DateTime::createFromFormat("Y-m-d H:i:s", "2022-11-22 00:00:00");
$result = $messageService->send($message, $dateTime);
$messageService->send($message);
} catch (MessageNotReceivedException $exception) {
// 접수에 실패한 메시지 목록 조회
print_r($exception->getFailedMessageList());
} catch (Exception $exception) {
print_r($exception->getMessage());
}