laravel-unisender / unisender
Unisender API for Laravel 12
1.03
2025-08-06 06:21 UTC
Requires
- php: ^8.1
- laravel/framework: ^12.0
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^10.0
README
Полноценная интеграция Unisender API для Laravel 12 с поддержкой всех основных методов API.
Возможности
- ✅ Отправка SMS и email
- ✅ Управление списками контактов
- ✅ Импорт и экспорт контактов
- ✅ Создание и управление кампаниями
- ✅ Управление пользовательскими полями
- ✅ Валидация отправителей
- ✅ Artisan команды для CLI
- ✅ REST API контроллеры
- ✅ Facade для удобного использования
- ✅ Подробное логирование
- ✅ Обработка ошибок
- ✅ Конфигурация через .env
Установка
Через Composer
composer require laravel-unisender/unisender
Публикация конфигурации
php artisan vendor:publish --provider="LaravelUnisender\UnisenderServiceProvider" --tag="unisender-config"
Настройка переменных окружения
Добавьте в файл .env
:
# Unisender API Configuration UNISENDER_API_KEY=your_api_key_here UNISENDER_ENCODING=UTF-8 UNISENDER_RETRY_COUNT=4 UNISENDER_TIMEOUT=null UNISENDER_COMPRESSION=false UNISENDER_PLATFORM="Laravel Unisender Service" UNISENDER_LANG=en # Default Settings UNISENDER_DEFAULT_SMS_SENDER=YourSMSName UNISENDER_DEFAULT_EMAIL_SENDER=noreply@yourdomain.com UNISENDER_DEFAULT_LIST_ID=1 # Logging UNISENDER_ENABLE_LOGGING=true UNISENDER_LOG_LEVEL=info # Cache UNISENDER_ENABLE_CACHE=false UNISENDER_CACHE_TTL=3600 # Rate Limiting UNISENDER_ENABLE_RATE_LIMITING=false UNISENDER_RATE_LIMIT_PER_MINUTE=60 # Webhooks UNISENDER_WEBHOOK_URL=https://yourdomain.com/webhooks/unisender UNISENDER_WEBHOOK_SECRET=your_webhook_secret
Важно: Замените your_api_key_here
на ваш реальный API ключ от Unisender.
Использование
Через Service
use LaravelUnisender\Services\UnisenderService; class YourController extends Controller { public function sendSms(UnisenderService $unisender) { $response = $unisender->sendSms([ 'phone' => '+380971234567', 'text' => 'Hello from Laravel!', 'sender' => 'MyApp' ]); if ($unisender->isSuccess($response)) { return 'SMS sent successfully!'; } else { return 'Error: ' . $unisender->getErrorMessage($response); } } }
Через Facade
use LaravelUnisender\Facades\Unisender; // Отправка SMS $response = Unisender::sendSms([ 'phone' => '+380971234567', 'text' => 'Hello from Laravel!', 'sender' => 'MyApp' ]); // Отправка email $response = Unisender::sendEmail([ 'email' => 'user@example.com', 'subject' => 'Welcome!', 'body' => 'Welcome to our service!', 'sender' => 'noreply@yourdomain.com' ]); // Получение списков $lists = Unisender::getLists(); // Подписка контакта $response = Unisender::subscribe([ 'email' => 'user@example.com', 'list_ids' => '1,2,3' ]);
Через Dependency Injection
public function sendNotification(UnisenderService $unisender) { $response = $unisender->sendEmail([ 'email' => 'user@example.com', 'subject' => 'Notification', 'body_html' => '<h1>Hello!</h1><p>This is a notification.</p>', 'sender' => 'noreply@yourdomain.com' ]); return $response; }
Artisan Команды
Отправка SMS
php artisan unisender:sms "+380971234567" "Hello from Laravel!" --sender="MyApp"
Отправка Email
php artisan unisender:email "user@example.com" "Welcome!" --body="Welcome to our service!" --sender="noreply@yourdomain.com"
Получение списков контактов
php artisan unisender:lists php artisan unisender:lists --format=json
Проверка статуса API
# Базовая проверка php artisan unisender:status # Подробная проверка с тестированием всех эндпоинтов php artisan unisender:status --verbose
REST API
После установки пакета автоматически регистрируются следующие маршруты:
Отправка SMS
POST /api/unisender/sms Content-Type: application/json { "phone": "+380971234567", "text": "Hello from API!", "sender": "MyApp" }
Отправка Email
POST /api/unisender/email Content-Type: application/json { "email": "user@example.com", "subject": "Welcome!", "body": "Welcome to our service!", "sender": "noreply@yourdomain.com" }
Получение списков
GET /api/unisender/lists
Создание списка
POST /api/unisender/lists Content-Type: application/json { "title": "New List", "description": "Description of the list" }
Подписка контакта
POST /api/unisender/subscribe Content-Type: application/json { "email": "user@example.com", "list_ids": "1,2,3", "tags": "vip,customer" }
Доступные методы
SMS и Email
sendSms(array $params)
- Отправка SMSsendEmail(array $params)
- Отправка emailcreateEmailMessage(array $params)
- Создание email сообщенияcreateSmsMessage(array $params)
- Создание SMS сообщения
Списки контактов
getLists()
- Получение всех списковcreateList(array $params)
- Создание спискаupdateList(array $params)
- Обновление спискаdeleteList(array $params)
- Удаление списка
Контакты
subscribe(array $params)
- Подписка контактаunsubscribe(array $params)
- Отписка контактаexclude(array $params)
- Исключение контактаimportContacts(array $params)
- Импорт контактовgetContact(array $params)
- Получение информации о контактеgetContactFieldValues(array $params)
- Получение значений полей контактаisContactInLists(array $params)
- Проверка наличия контакта в списках
Кампании
createCampaign(array $params)
- Создание кампанииgetCampaigns(array $params = [])
- Получение кампанийgetCampaignStatus(array $params)
- Получение статуса кампании
Поля и теги
getFields()
- Получение пользовательских полейcreateField(array $params)
- Создание поляupdateField(array $params)
- Обновление поляdeleteField(array $params)
- Удаление поляgetTags()
- Получение теговdeleteTag(array $params)
- Удаление тега
Асинхронные операции
taskExportContacts(array $params)
- Экспорт контактовgetTaskResult(array $params)
- Получение результата задачи
Дополнительные методы
getCurrencyRates()
- Получение курсов валютvalidateSender(array $params)
- Валидация отправителяsetSenderDomain(array $params)
- Установка домена отправителяgetSenderDomainList(array $params = [])
- Получение списка доменовgetCheckedEmail(array $params = [])
- Получение проверенных email
Обработка ошибок
try { $response = $unisender->sendSms($params); if ($unisender->isSuccess($response)) { // Успешная операция $result = $response['result']; } else { // Ошибка API $errorMessage = $unisender->getErrorMessage($response); Log::error('Unisender API error: ' . $errorMessage); } } catch (\Exception $e) { // Исключение (сетевая ошибка, неверный API ключ и т.д.) Log::error('Unisender exception: ' . $e->getMessage()); }
Логирование
Сервис автоматически логирует все API запросы и ошибки. Логи можно найти в storage/logs/laravel.log
.
Кэширование
Для включения кэширования API ответов установите в .env
:
UNISENDER_ENABLE_CACHE=true UNISENDER_CACHE_TTL=3600
Rate Limiting
Для включения ограничения запросов установите в .env
:
UNISENDER_ENABLE_RATE_LIMITING=true UNISENDER_RATE_LIMIT_PER_MINUTE=60
Лицензия
Этот пакет распространяется под лицензией MIT. См. файл LICENSE для получения дополнительной информации.