1. Go to this page and download the library: Download daworks/laravel-sens library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
daworks / laravel-sens example snippets
> use Daworks\Sens\Facades\Sens; // 필요
> // \Sens::sms() 처럼 전역 별칭으로는 동작하지 않습니다.
>
namespace App\Notifications;
use Daworks\Sens\Sms\SmsChannel;
use Daworks\Sens\Sms\SmsMessage;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
class SendPurchaseReceipt extends Notification
{
use Queueable;
public function via($notifiable)
{
return [SmsChannel::class];
}
public function toSms($notifiable)
{
return (new SmsMessage)
->to($notifiable->phone)
->from('055-000-0000') // 생략하면 설정값을 사용합니다.
->content('주문이 접수되었습니다.')
->contentType('AD') // 생략 가능 (기본: COMM)
->type('SMS'); // 생략 가능 (기본: SMS)
}
}
use App\Models\User;
use App\Notifications\SendPurchaseReceipt;
User::find(1)->notify(new SendPurchaseReceipt);
(new SmsMessage)
->to('01000000001')
->to('01000000002')
->content('공지 사항입니다.');
public function toSms($notifiable)
{
return (new SmsMessage)
->type('MMS')
->to($notifiable->phone)
->subject('청구서')
->content("청구서를 첨부합니다.")
/* 파일 경로 문자열 또는 Illuminate\Http\UploadedFile 객체 */
->file('invoice.jpg', $this->image);
}
> use Daworks\Sens\Facades\Sens;
>
> $attachment = Sens::sms()->uploadAttachment('invoice.jpg', base64_encode($contents));
>
> $attachment->fileId; // 'a136...74f7'
> $attachment->expireTime; // '2025-11-27T10:12:47.520'
>
> // 이후 발송에서는 파일 아이디만 넘깁니다.
> (new SmsMessage)->type('MMS')->to($phone)->content('...')->fileId($attachment->fileId);
>
namespace App\Notifications;
use Daworks\Sens\AlimTalk\AlimTalkChannel;
use Daworks\Sens\AlimTalk\AlimTalkMessage;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
class SendShippingNotice extends Notification
{
use Queueable;
public function via($notifiable)
{
return [AlimTalkChannel::class];
}
public function toAlimTalk($notifiable)
{
return (new AlimTalkMessage())
->templateCode('TEMPLATE001') // 필수
->to($notifiable->phone) // 필수
->content('주문하신 상품이 발송되었습니다.') // 필수
->countryCode('82') // 선택
->addButton(['type' => 'DS', 'name' => '배송 조회']) // 선택
->setReserved('2026-08-31 14:20', 'Asia/Seoul'); // 선택
}
}
new AlimTalkMessage('@another-channel');
// 또는
(new AlimTalkMessage)->plusFriendId('@another-channel');
use Daworks\Sens\Facades\Sens;
use Daworks\Sens\Sms\SmsMessage;
$message = (new SmsMessage)->to('01000000000')->content('안녕하세요.');
$response = Sens::sms()->send($message->toArray());
public function __construct(private \Daworks\Sens\Sms\Sms $sms) {}
use Daworks\Sens\Facades\Sens;
$response = Sens::sms()->send($message->toArray());
$response->requestId; // 'RSLA-...' ← 이 값을 저장해 두면 추적할 수 있습니다.
$response->requestTime; // '2025-11-25T09:39:40.535'
$response->statusCode; // '202'
$response->isAccepted(); // true
$response->isSuccessful(); // true
use Daworks\Sens\Responses\SendResponse;
use Illuminate\Notifications\Events\NotificationSent;
class RecordSensRequestId
{
public function handle(NotificationSent $event): void
{
if (! $event->response instanceof SendResponse) {
return;
}
SentMessage::create([
'notifiable_type' => $event->notifiable::class,
'notifiable_id' => $event->notifiable->getKey(),
'request_id' => $event->response->requestId,
'status_code' => $event->response->statusCode,
]);
}
}
use Daworks\Sens\Facades\Sens;
// 요청 아이디로 해당 발송 요청의 메시지 목록을 조회합니다.
$list = Sens::sms()->findByRequestId($requestId);
$list->messageIds(); // ['f574d3f0-...', ...]
$list->isSuccessful(); // 모든 메시지가 수신 성공했는지
$list->isPending(); // 아직 결과를 확정할 수 없는지
$list->isEmpty(); // 조회 결과가 없는지
$list->pending(); // 아직 처리 중인 메시지
$list->failed(); // 수신 실패한 메시지
foreach ($list->failed() as $message) {
echo $message->getTo() . ': ' . $message->getStatusMessage();
}
// 개별 메시지의 상세 결과를 조회합니다.
$result = Sens::sms()->findMessage($list->messageIds()[0]);
$result->isSuccessful(); // 수신 성공 여부
$result->isPending(); // 아직 처리 중인지 (실패로 단정하면 안 됩니다)
$result->getStatusCode(); // '3018'
$result->getStatusMessage(); // '발신번호 변작 방지 서비스에 가입된 번호'
$result->toArray(); // SENS 원본 응답
$result = Sens::alimTalk()->findMessage($messageId);
$result->isSuccessful(); // 알림톡으로 전달되었는지
$result->failoverSucceeded(); // SMS 대체 발송이 성공했는지
$result->isDelivered(); // 둘 중 하나로 전달되었는지
> $list = Sens::sms()->findByRequestId($requestId);
>
> if ($list->isPending()) {
> return; // 아직 처리 중 — 잠시 후 다시 조회합니다.
> }
>
> if ($list->failed()) {
> // 실패 처리
> }
>