PHPackages                             rutrue/laravel-sms-mts - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. rutrue/laravel-sms-mts

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

rutrue/laravel-sms-mts
======================

Пакет для отправки смс через шлюз МТС (Laravel)

11PHP

Since Jun 16Pushed 1y ago1 watchersCompare

[ Source](https://github.com/lacoste-sochi/laravel-sms-mts)[ Packagist](https://packagist.org/packages/rutrue/laravel-sms-mts)[ RSS](/packages/rutrue-laravel-sms-mts/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

SMS MTS Driver for Laravel
==========================

[](#sms-mts-driver-for-laravel)

Пакет для интеграции с SMS MTS API в Laravel-приложениях. Поддерживает отправку SMS через Notification канал.

Установка
---------

[](#установка)

Установите пакет через Composer:

```
composer require rutrue/laravel-sms-mts
```

Опубликуйте конфигурационный файл:

```
php artisan vendor:publish --tag=sms-mts-config
```

Настройте `.env`:

```
# Обязательные для всех методов
SMS_MTS_AUTH_METHOD=token # или 'basic' для авторизации с логином и паролем
SMS_MTS_SENDER_NAME=MTSM_Test # Имя отправителя

# Для token-аутентификации
SMS_MTS_TOKEN=your_api_token
SMS_MTS_API_URL_TOKEN=https://api.mts.ru/client-omni-adapter_production/1.0.2/mcom/messageManagement/messages

# Для basic-аутентификации
SMS_MTS_LOGIN=your_login
SMS_MTS_PASSWORD=your_password
SMS_MTS_API_URL_BASIC=https://omnichannel.mts.ru/http-api/v1/messages

# Настройки времени ожидания
SMS_MTS_TIMEOUT=10
SMS_MTS_CONNECT_TIMEOUT=5
```

Использование
-------------

[](#использование)

### 1. Через Facade

[](#1-через-facade)

```
use RuTrue\SmsMts\Facades\SmsMts;

// Отправка одного SMS
SmsMts::send('79123456789', 'Ваше сообщение');

// Массовая отправка
SmsMts::bulkSend([
    ['phone' => '79123456789', 'message' => 'Сообщение 1'],
    ['phone' => '79234567890', 'message' => 'Сообщение 2'],
]);
```

### 2. Через Dependency Injection

[](#2-через-dependency-injection)

```
use RuTrue\SmsMts\Contracts\SmsMtsDriverInterface;

app(SmsMtsDriverInterface::class)->send('79123456789', 'Test message');
```

```
    public function sendSmsDependency(SmsMtsDriverInterface $smsDriver)
    {
        return $smsDriver->send('79123456789', 'Test message');
    }
```

### 3. Через Laravel Notifications

[](#3-через-laravel-notifications)

Создайте notification и настройте его содержимое:

```
php artisan make:notification OrderShipped
```

```
use Rutrue\SmsMts\Notifications\SmsMtsMessage;
use Rutrue\SmsMts\Notifications\SmsMtsChannel;

class OrderShipped extends Notification
{
    public function via($notifiable)
    {
        return [SmsMtsChannel::class];
    }

    public function toSmsMts($notifiable)
    {
        return new SmsMtsMessage(
            "Ваш заказ #{$notifiable->order_id} отправлен"
        );
    }
}
```

Настройте отправку:

```
$user->notify(new OrderShipped());
```

Обработка ошибок
----------------

[](#обработка-ошибок)

Пакет выбрасывает исключения типа `SmsMtsConfigurationException` и `SmsMtsException`:

```
try {
    SmsMts::send('79123456789', 'Test');
} catch (\RuTrue\SmsMts\Exceptions\SmsMtsConfigurationException $e) {
    // Ошибки конфигурации
    logger()->error('MTS SMS Config Error: ' . $e->getMessage());
} catch (\RuTrue\SmsMts\Exceptions\SmsMtsException $e) {
    // Ошибки API
    logger()->error("MTS SMS Error [{$e->getCode()}]: " . $e->getMessage());
}
```

Тестирование
------------

[](#тестирование)

Mock-режим для тестов:

```
use RuTrue\SmsMts\Facades\SmsMts;

SmsMts::shouldReceive('send')
    ->once()
    ->with('79123456789', 'Test message')
    ->andReturn(['status' => 'success']);
```

Примеры проведенных применений вместе
-------------------------------------

[](#примеры-проведенных-применений-вместе)

web.php

```
Route::get('/test-sms', [TestSmsController::class, 'sendSms']);
Route::get('/test-sms-bulk', [TestSmsController::class, 'sendSmsBulk']);
Route::get('/test-sms-dependency', [TestSmsController::class, 'sendSmsDependency']);
Route::get('/test-sms-notification', [TestSmsController::class, 'sendSmsNotification']);
```

TestSmsController.php

```
