PHPackages                             sqdev/sms-gateway - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. sqdev/sms-gateway

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

sqdev/sms-gateway
=================

Provider-agnostic SMS gateway abstractions with a unified API for multiple SMS providers.

v1.0.0(3mo ago)152MITPHP ^8.1

Since Apr 23Compare

[ Source](https://github.com/sq-dev/sms-gateway)[ Packagist](https://packagist.org/packages/sqdev/sms-gateway)[ RSS](/packages/sqdev-sms-gateway/feed)WikiDiscussions Synced 3w ago

READMEChangelog (1)Dependencies (8)Versions (2)Used By (0)

sqdev/sms-gateway
=================

[](#sqdevsms-gateway)

[Тоҷикӣ](README.md) | [Русский](README.ru.md) | [English](README.en.md)

Китобхонаи `sqdev/sms-gateway` барои PHP интерфейси ягонаи фиристодани SMS медиҳад. Шумо метавонед як API-и устуворро барои чанд провайдер истифода баред, натиҷаҳои фиристоданро дар шакли ягона гиред ва дар Laravel ҳамон шартномаҳоро тавассути facade ва manager истифода баред.

Чӣ медиҳад
----------

[](#чӣ-медиҳад)

- `Sender` барои фиристодани SMS бо API-и содда.
- `SendResult` ва `StatusResult` барои натиҷаҳои ягона байни провайдерҳо.
- `MessageStatus` барои ҳолатҳои умумӣ, мисли `Queued`, `Sent`, `Delivered`.
- интегратсияи тайёри Laravel бо `SmsGateway` facade, config ва connection manager.
- имкони илова кардани провайдери худатон бе тағйир додани коди истеъмолкунанда.

Насб
----

[](#насб)

```
composer require sqdev/sms-gateway
```

Китобхона ба PSR-18 HTTP client такя мекунад. Агар дар лоиҳа аллакай Guzzle, Symfony HTTP Client ё ягон PSR-18 client мавҷуд бошад, `php-http/discovery` онро худкор пайдо мекунад. Агар надошта бошед, якеашро насб кунед:

```
composer require guzzlehttp/guzzle
# ё
composer require symfony/http-client
```

Талабот
-------

[](#талабот)

- PHP `^8.1`
- Composer
- як PSR-18 HTTP client

Оғози зуд
---------

[](#оғози-зуд)

Мисоли оддӣ бо яке аз провайдерҳои дарунсохт:

```
use SmsGateway\Sender;
use SmsGateway\Providers\Payom\PayomSmsProvider;

$sender = new Sender(new PayomSmsProvider(
    token: $_ENV['PAYOM_JWT_TOKEN'],
    defaultSenderName: 'payom.tj',
));

$result = $sender->send('+992937123456', 'Рамзи тасдиқи шумо: 1234');
```

Натиҷа ҳамеша `SendResult` аст:

```
$result->messageId;    // ID аз тарафи провайдер
$result->status;       // MessageStatus
$result->providerName; // масалан "payom"
$result->raw;          // ҷавоби аслии провайдер барои debug/log
```

API-и асосӣ
-----------

[](#api-и-асосӣ)

`Sender` қабати тунук болои `SendsSmsInterface` аст. Барои аксари ҳолатҳо ҳамин се метод кофӣ мебошад:

```
$sender->send(
    to: '+992937123456',
    text: 'Салом',
    from: 'ACME',
    metadata: ['client_ref' => 'r-1'],
);

$sender->sendMessage($smsMessage);

$provider = $sender->provider();
```

Агар провайдер status tracking-ро дастгирӣ кунад, метавонед онро бо `TracksSmsStatusInterface` санҷед:

```
use SmsGateway\Contracts\TracksSmsStatusInterface;

$provider = $sender->provider();

if ($provider instanceof TracksSmsStatusInterface) {
    $status = $provider->getStatus($result->messageId);

    if ($status->status->isFinal()) {
        // polling-ро қатъ кунед
    }
}
```

Модели ягонаи натиҷа ва хатогиҳо
--------------------------------

[](#модели-ягонаи-натиҷа-ва-хатогиҳо)

Ҳамаи провайдерҳо ба ҳамон DTO ва enum табдил дода мешаванд:

- `SendResult` барои натиҷаи фиристодан
- `StatusResult` барои санҷиши ҳолат
- `MessageStatus` барои ҳолатҳои умумӣ
- `SmsGatewayException` барои base contract-и ҳамаи exception-ҳо

Муҳимтарин exception-ҳо:

- `InvalidMessageException` барои input ё metadata-и нодуруст
- `ProviderException` барои хатои remote API, auth, transport ва монанди ин
- `MessageNotFoundException` барои status lookup бо `messageId` нодуруст

Laravel
-------

[](#laravel)

Китобхона барои Laravel 10, 11 ва 12 интегратсияи тайёр дорад. Service provider ва facade худкор аз `composer.json` сабт мешаванд.

### Publish кардани config

[](#publish-кардани-config)

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

Баъд `config/sms-gateway.php` пайдо мешавад. Шакли умумии config чунин аст:

```
return [
    'default' => env('SMS_GATEWAY_CONNECTION', 'aliftech'),

    'connections' => [
        'payom' => [
            'driver' => 'payom',
            'token' => env('PAYOM_JWT_TOKEN'),
            'default_sender_name' => env('PAYOM_DEFAULT_SENDER'),
        ],
    ],
];
```

Дар ин ҷо:

- `default` connection-и асосӣ мебошад
- `connections` рӯйхати ҳамаи connection-ҳои номдор аст
- `driver` адаптери истифодашавандаро интихоб мекунад

Барои ҳамаи калидҳои дастгиришаванда ва мисолҳои пурра ба `config/sms-gateway.php` нигаред.

### Истифодаи facade

[](#истифодаи-facade)

```
use SmsGateway\Laravel\Facades\SmsGateway;

SmsGateway::send('+992937123456', 'Рамзи шумо: 1234');

SmsGateway::provider('payom')->send('+992937123456', 'Салом');

SmsGateway::send(
    to: '+992937123456',
    text: 'Салом',
    from: 'ACME',
    metadata: ['client_ref' => 'r-1'],
);
```

### Constructor injection

[](#constructor-injection)

`Sender` ба container низ bind мешавад, бинобар ин метавонед онро мустақим inject кунед:

```
use SmsGateway\Sender;

final class SendOtpCommand
{
    public function __construct(
        private readonly Sender $sms,
    ) {}

    public function handle(string $phone, string $code): void
    {
        $this->sms->send($phone, "Рамзи шумо: {$code}");
    }
}
```

### Custom driver

[](#custom-driver)

Агар провайдери худ дошта бошед, онро бо `extend()` сабт карда метавонед:

```
use SmsGateway\Contracts\SendsSmsInterface;
use SmsGateway\Laravel\Facades\SmsGateway;

SmsGateway::extend('custom', function ($app, array $config, string $name): SendsSmsInterface {
    return new CustomSmsProvider(...);
});
```

Провайдерҳои дарунсохт
----------------------

[](#провайдерҳои-дарунсохт)

DriverҚобилиятХулосаҲуҷҷат`payom`sendstatus lookup надорад[`docs/tj/providers/payom.md`](docs/tj/providers/payom.md)`osonsms`send + status`messageId` шакли composite дорад ва бояд opaque ҳисобида шавад[`docs/tj/providers/osonsms.md`](docs/tj/providers/osonsms.md)`aliftech`send + statusmetadata барои `sms_type`, `priority`, `scheduled_at` ва ғайра дорад[`docs/tj/providers/aliftech.md`](docs/tj/providers/aliftech.md)Навиштани провайдери худ
------------------------

[](#навиштани-провайдери-худ)

Китобхона contract-first сохта шудааст. Агар провайдери нав илова кардан хоҳед:

- `SendsSmsInterface`-ро амалӣ кунед, агар танҳо фиристодан дошта бошад
- `TracksSmsStatusInterface`-ро амалӣ кунед, агар танҳо tracking дошта бошад
- `SmsProviderInterface`-ро амалӣ кунед, агар ҳарду қобилиятро диҳад

Қоидаи асосӣ ин аст, ки exception-и провайдерро берун набароред; онро ба `ProviderException` ё `MessageNotFoundException` табдил диҳед ва ҳама status-ҳоро ба `MessageStatus` map намоед.

Рушд
----

[](#рушд)

```
composer install
composer test
```

Иҷозатнома
----------

[](#иҷозатнома)

MIT

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance82

Actively maintained with recent releases

Popularity10

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

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

Unknown

Total

1

Last Release

92d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e2a8fade5f2d40f4410f5e9963992b315ea635543f6686bf0d8bf2b21bd8f0b5?d=identicon)[sq-dev](/maintainers/sq-dev)

---

Tags

laravelabstractionsmsprovidergatewaysms-gateway

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/sqdev-sms-gateway/health.svg)

```
[![Health](https://phpackages.com/badges/sqdev-sms-gateway/health.svg)](https://phpackages.com/packages/sqdev-sms-gateway)
```

###  Alternatives

[telnyx/telnyx-php

Official Telnyx PHP SDK — APIs for Voice, SMS, MMS, WhatsApp, Fax, SIP Trunking, Wireless IoT, Call Control, and more. Build global communications on Telnyx's private carrier-grade network.

36789.4k2](/packages/telnyx-telnyx-php)[flow-php/flow

PHP ETL - Extract Transform Load - Data processing framework

85036.3k](/packages/flow-php-flow)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k16](/packages/tempest-framework)[anthropic-ai/sdk

Anthropic PHP SDK

163583.3k20](/packages/anthropic-ai-sdk)[getbrevo/brevo-php

Official Brevo provided RESTFul API V3 php library

1003.9M50](/packages/getbrevo-brevo-php)[laudis/neo4j-php-client

Neo4j-PHP-Client is the most advanced PHP Client for Neo4j

185702.8k44](/packages/laudis-neo4j-php-client)

PHPackages © 2026

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