PHPackages                             diffhead/laravel-beeline-sms - 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. diffhead/laravel-beeline-sms

ActiveLibrary

diffhead/laravel-beeline-sms
============================

Light laravel package for sms sending via Beeline API

2.1.0(1mo ago)0149MITPHPPHP &gt;=8.1

Since Sep 10Pushed 1mo agoCompare

[ Source](https://github.com/diffhead/laravel-beeline-sms)[ Packagist](https://packagist.org/packages/diffhead/laravel-beeline-sms)[ Docs](https://github.com/SaintSample/laravel-beeline-sms)[ RSS](/packages/diffhead-laravel-beeline-sms/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (4)Used By (0)

LaravelBeelineSms
=================

[](#laravelbeelinesms)

Laravel-пакет для отправки SMS через [Beeline A2P SMS API](https://a2p-sms-https.beeline.ru).

Требования
----------

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

- PHP &gt;= 8.1
- Laravel &gt;= 10.0

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

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

```
composer require diffhead/laravel-beeline-sms
```

Пакет поддерживает автообнаружение провайдера Laravel — дополнительная регистрация не требуется.

### Публикация конфигурации

[](#публикация-конфигурации)

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

Будет опубликован файл `config/beeline-sms.php`.

### Публикация миграции

[](#публикация-миграции)

Если вы планируете хранить историю отправленных сообщений в БД (реестр), опубликуйте миграцию:

```
php artisan vendor:publish --tag=migrations
php artisan migrate
```

Настройка
---------

[](#настройка)

Добавьте переменные в `.env`:

```
LARAVEL_BEELINE_API_URL=https://a2p-sms-https.beeline.ru/proto/http/rest
LARAVEL_BEELINE_API_LOGIN=
LARAVEL_BEELINE_API_PASSWORD=
LARAVEL_BEELINE_API_SENDER=
LARAVEL_BEELINE_API_GZIP=false
LARAVEL_BEELINE_API_COMMENT=
LARAVEL_BEELINE_LOG_CHANNEL=daily
LARAVEL_BEELINE_REGISTRY_ENABLED=false
LARAVEL_BEELINE_REGISTRY_TABLE=beeline_messages
LARAVEL_BEELINE_REGISTRY_MODEL=\\SaintSample\\LaravelBeelineSms\\Models\\BeelineMessage
```

ПеременнаяОписаниеПо умолчанию`LARAVEL_BEELINE_API_URL`URL эндпоинта Beeline A2P API—`LARAVEL_BEELINE_API_LOGIN`Логин для авторизации в API—`LARAVEL_BEELINE_API_PASSWORD`Пароль для авторизации в API—`LARAVEL_BEELINE_API_SENDER`Имя отправителя (sender ID)—`LARAVEL_BEELINE_API_GZIP`Использовать gzip-сжатие запросов`false``LARAVEL_BEELINE_API_COMMENT`Комментарий к отправке`null``LARAVEL_BEELINE_LOG_CHANNEL`Канал логирования`daily``LARAVEL_BEELINE_REGISTRY_ENABLED`Включить реестр (хранение сообщений в БД)`false``LARAVEL_BEELINE_REGISTRY_TABLE`Название таблицы реестра`beeline_messages``LARAVEL_BEELINE_REGISTRY_MODEL`Модель для работы с реестром`BeelineMessage`Использование
-------------

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

### Отправка SMS

[](#отправка-sms)

```
use SaintSample\LaravelBeelineSms\Facades\BeelineSms;

$statuses = BeelineSms::send(
    targets: ['79991234567', '79997654321'],
    message: 'Текст сообщения'
);

foreach ($statuses as $status) {
    $status->id();      // ID сообщения в API
    $status->phone();   // Номер телефона
    $status->status();  // Статус (accepted)
    $status->message(); // Текст сообщения
    $status->sentAt();  // Дата отправки
}
```

### Получение статусов

[](#получение-статусов)

#### По ID сообщения

[](#по-id-сообщения)

```
use SaintSample\LaravelBeelineSms\Facades\BeelineSms;
use SaintSample\LaravelBeelineSms\View\FetchStatuses;

$statuses = BeelineSms::statuses(
    new FetchStatuses(smsId: '851181624766455712')
);
```

#### По временному интервалу

[](#по-временному-интервалу)

```
use SaintSample\LaravelBeelineSms\Facades\BeelineSms;
use SaintSample\LaravelBeelineSms\View\FetchStatuses;
use SaintSample\LaravelBeelineSms\View\DateInterval;
use Carbon\Carbon;

$statuses = BeelineSms::statuses(
    new FetchStatuses(
        dateInterval: new DateInterval(
            from: Carbon::yesterday(),
            until: Carbon::now(),
        )
    )
);
```

### Статусы сообщений

[](#статусы-сообщений)

СтатусОписание`queued`Сообщение находится в очереди отправки`accepted`Сообщение передано оператору`delivered`Сообщение доставлено абоненту`rejected`Сообщение отклонено оператором`undeliverable`Невозможно доставить (абонент недоступен)`error`Ошибка отправки`expired`Истекло время ожидания финального статуса`unknown`Статус неизвестен`aborted`Сообщение отменено пользователемРеестр сообщений
----------------

[](#реестр-сообщений)

При включённом реестре (`LARAVEL_BEELINE_REGISTRY_ENABLED=true`) пакет автоматически сохраняет отправленные сообщения в базу данных через слушатель события `MessagesSent`.

Таблица содержит поля: `external_message_id`, `status`, `target`, `message`, `sent_at`.

### Обновление статусов

[](#обновление-статусов)

Для массового обновления статусов сообщений в реестре используйте artisan-команду:

```
php artisan beeline-messages:update-statuses
```

Команда находит все сообщения с незавершёнными статусами и создаёт отдельную очередную задачу (`UpdateMessageStatus`) для обновления каждого из них.

События
-------

[](#события)

СобытиеОписание`MessagesSent`Вызывается после успешной отправки SMS. Содержит коллекцию статусов.Вы можете подписаться на событие для реализации собственной логики:

```
use SaintSample\LaravelBeelineSms\Events\MessagesSent;

Event::listen(MessagesSent::class, function (MessagesSent $event) {
    // $event->getStatuses() — коллекция статусов отправленных сообщений
});
```

Лицензия
--------

[](#лицензия)

MIT

Справочник API
--------------

[](#справочник-api)

Отправка SMS (POST)**Эндпоинт:** `https://a2p-sms-https.beeline.ru/proto/http/rest`

*Request:*

```
{
  "action": "post_sms",
  "user": "YourUserId",
  "pass": "YourApiPassword",
  "comment": null,
  "message": "YourText",
  "target": "79XXXXXXXXX,79XXXXXXXXX",
  "sender": "YourSender"
}
```

*Response:*

```
{
  "actions": [
    {
      "id": "851181624766455712",
      "phone": "+79XXXXXXXXX",
      "message": "YourText",
      "action": "post_sms_action",
      "sms_type": "SENDSMS",
      "sms_res_count": "1",
      "sms_group_id": "851182724278083582"
    }
  ],
  "agt_id": "1514230",
  "date_report": "14.03.2026 20:00:01"
}
```

Получение статусов (POST)**Эндпоинт:** `https://a2p-sms-https.beeline.ru/proto/http/rest`

*Request:*

```
{
  "action": "status",
  "user": "YourUserId",
  "pass": "YourApiPassword",
  "sms_id"?: "851181624766455723",
  "date_from"?: "d.m.Y H:i:s",
  "date_to"?: "d.m.Y H:i:s"
}
```

*Response:*

```
{
  "actions": [
    {
      "sms_group_id": "851182724278083582",
      "sms_id": "851181624766455712",
      "sms_type": "SENDSMS",
      "created": "14.03.2026 20:00:01",
      "aul_username": "YourUserId",
      "aul_client_addr": "YourClientIP",
      "aul_proxy_addr": "YourProxyIP",
      "target": "79XXXXXXXXX",
      "sender": "YourSender",
      "sms_count": "1",
      "text": "YourText",
      "stc_code": "error",
      "sent": "0",
      "closed": "1",
      "status": "Ошибка отправки",
      "action": "status_action",
      "close_time": "14.03.26 20:00:01"
    }
  ],
  "agt_id": "1514201",
  "date_report": "14.03.2026 20:00:01"
}
```

###  Health Score

42

—

FairBetter than 89% of packages

Maintenance95

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 57.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~93 days

Total

3

Last Release

55d ago

Major Versions

v1.0.0 → v2.0.02026-03-14

### Community

Maintainers

![](https://www.gravatar.com/avatar/ff7c1a26cf0b7e41b7c85fb2348dc40bc67194996c983d363527c2faee393abc?d=identicon)[diffhead](/maintainers/diffhead)

---

Top Contributors

[![diffhead](https://avatars.githubusercontent.com/u/82263657?v=4)](https://github.com/diffhead "diffhead (4 commits)")[![SaintSample](https://avatars.githubusercontent.com/u/32644843?v=4)](https://github.com/SaintSample "SaintSample (3 commits)")

---

Tags

laravelsmslaravel-smsBeelinelaravel-beelinesaintsamplesaint-sample

### Embed Badge

![Health badge](/badges/diffhead-laravel-beeline-sms/health.svg)

```
[![Health](https://phpackages.com/badges/diffhead-laravel-beeline-sms/health.svg)](https://phpackages.com/packages/diffhead-laravel-beeline-sms)
```

###  Alternatives

[laravel/octane

Supercharge your Laravel application's performance.

4.0k21.5M156](/packages/laravel-octane)[statamic/cms

The Statamic CMS Core Package

4.8k3.2M719](/packages/statamic-cms)[laravel/nightwatch

The official Laravel Nightwatch package.

3486.1M13](/packages/laravel-nightwatch)[toplan/laravel-sms

A mobile phone number validation solution based on laravel

83678.5k](/packages/toplan-laravel-sms)[tzsk/sms

A robust and unified SMS gateway integration package for Laravel, supporting multiple providers.

320244.3k6](/packages/tzsk-sms)[whitecube/laravel-timezones

Store UTC dates in the database and work with custom timezones in the application.

106106.2k](/packages/whitecube-laravel-timezones)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
