PHPackages                             mody/smsprovider - 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. mody/smsprovider

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

mody/smsprovider
================

config your sms gateway provider and start sending sms

2.0(5y ago)2233MITBladePHP &gt;= 5.3.0

Since Aug 23Pushed 5y ago1 watchersCompare

[ Source](https://github.com/mahmoudarafat/mody-smsprovider)[ Packagist](https://packagist.org/packages/mody/smsprovider)[ RSS](/packages/mody-smsprovider/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (6)DependenciesVersions (7)Used By (0)

mody/smsprovider - Laravel Multiple sms provider gateway package
----------------------------------------------------------------

[](#modysmsprovider---laravel-multiple-sms-provider-gateway-package)

Introduction
------------

[](#introduction)

```
/*
 * smsprovider package provides multiple connection with many sms providers.
 * just set your provider configuration and start sending messages.
 *
 * two officially plans:
 *      [user, group]
 *   user plan is one user provider, that works only for one user [authenticated user].
 *   group is multiple user provider, that services a company users maybe,
 *      that shares the same sms provider.
 *
 *  with group plan, your providers will have an account id number column.
 *  when calling your SMSProvider::configProvider() method,
 *      you will need this session to be set: session()->put('group_id', $group_id);
 *
 * username is your name columns to be displayed.
 * if track is true, activities will be saved in sms_provider_track_activity table.
 * user_model_namespace is your auth model. used in relationship with track table.
 *
 * package will create five tables .
 *      [
 *          'sms_providers' => 'container of providers you have',
 *          'sms_providers_additional_params' => 'necessary parameters we need for sending sms',
 *          'sms_provider_messages' => 'messages you sent either success of failed with error codes',
 *          'sms_direct_messages' => 'template messages you created for quick sending'
 *          'sms_provider_track_activity' => 'track user activity while using package methods'
 *      ]
 */

```

---

### Installation

[](#installation)

```
  composer require mody/smsprovider

```

after installation, do this:
----------------------------

[](#after-installation-do-this)

#### 1. config/app.php

[](#1-configappphp)

a. service provider

```
  mody\smsprovider\SMSGatewayServiceProvider::class,
```

b. alias

```
'SMSProvider' => mody\smsprovider\Facades\SMSProvider::class,
```

#### 2. clear cache

[](#2-clear-cache)

```
php artisan config:cache

```

#### 3. publish assets

[](#3-publish-assets)

```
php artisan vendor:publish

```

and you may see options, choose this one:

```
Provider: mody\smsprovider\SMSGatewayServiceProvider

```

#### 4. config/smsgatewayConfig.php

[](#4-configsmsgatewayconfigphp)

choose your plan \[individual user or group of users\]

```
'plan' => 'user'

```

choose if you want to track package activity

```
'track' => true

```

choose middleware you need

```
'middleware' => ['web', 'auth']

```

choose your athentication guard

```
'guard' => 'web'   # auth()->user();

```

add username \[auth userame column\]

```
'username' => 'mahmoud'

```

add auth model

```
'user_model_namespace' => 'App\User'

```

#### 5. run this command to generate necessary tables

[](#5-run-this-command-to-generate-necessary-tables)

```
php artisan smsprovider:tables

```

---

Features:
=========

[](#features)

```
1. Guard Authentication support.   ## 'web', 'api', ....
2. Multi Language support; Currently supports [Arabic and English].
3. you can add one or more sms provider/gateway to your account/group.
4. choose your default sms provider/gateway to send through it.
5. simple view for your account/group sms providers/gateways.
6. simple view for your account/group trash.
7. configuration changing over the recorded providers/gateways.
8. can move items to trash or destroy it for good.
9. can recover trashed items.
10. simple view for adding/updating any provider data.
11. send sms to single number or group of numbers.
12. simple view for messages sent/failed for account/group/provider.
13. call collection of providers/gateways.
14. call collection of trashed providers/gateways.
15. simple view for track activity.
16. add/edit template messages.
17. send template messages.

```

---

### Very important:

[](#very-important)

`use this session with group plan`

```
session()->put('group_id', $group_id);
```

---

How to use SMSProvider:
=======================

[](#how-to-use-smsprovider)

return new provider setup view: Note: You can use it to return view in new url or use this given one.

```
	SMSProvider::configProvider();

	route('smsprovider.providers.setup');

	url('smsprovider/setup');
```

send new sms to number or multiple numbers

```
	SMSProvider::sendSMS($message, $numbers);
```

Example

```
	SMSProvider::sendSMS('hi, Mahmoud', '20106xxxxxxx');

	SMSProvider::sendSMS('hi, group member', '20106xxxxxxx,0120xxxxxxx,20111xxxxxxx');

```

\*\*\* expected response \*\*\*

```
'0: error_code' => 'sending failed, and error code is given',
       '1'      => 'messege delivered successfully',
       '2'      => 'no response from destination or connection error',
       '3'      => 'no provider found'

```

return a single provider configuartion view/edit *view*

```
	SMSProvider::editProvider($provider_id);

	route('smsprovider.providers.edit_provider', $provider_id);

	url('smsprovider/edit-provider/' . $provider_id);
```

move provider to trash \[soft delete\]

```
	SMSProvider::deleteProvider($provider_id');
```

\*\*\* expected response \*\*\*

```
true or false

```

destroy provider \[becareful, deleting provider means that you will lose {configs, messages, ...}\]

```
	SMSProvider::destroyProvider($provider_id');
```

\*\*\* expected response \*\*\*

```
true or false

```

set default provider

```
	SMSProvider::setDefaultProvider($provider_id);
```

\*\*\* expected response \*\*\*

```
true or false

```

recover deleted provider

```
	SMSProvider::recoverProvider($provider_id);
```

\*\*\* expected response \*\*\*

```
true or false

```

remove default provider

```
	SMSProvider::removeDefaultProvider();
```

\*\*\* expected response \*\*\*

```
true or false

```

### get providers =&gt; \[20/page\]

[](#get-providers--20page)

**return collection for auth user**

```
	SMSProvider::myProviders();
```

**return collection for group**

```
	SMSProvider::groupProviders();
```

**return view for auth user**

```
	SMSProvider::myProvidersView();

	route('smsprovider.providers.user-providers');

	url('smsprovider/user-providers');
```

**return view for group**

```
	SMSProvider::groupProvidersView();

	route('smsprovider.providers.group-providers');

	url('smsprovider/group-providers');
```

---

get trashed providers =&gt; \[20/page\]
---------------------------------------

[](#get-trashed-providers--20page)

**return collection for auth user**

```
	SMSProvider::myTrashedProviders();
```

**return collection for group**

```
	SMSProvider::groupTrashedProviders();
```

**return view for auth user**

```
	SMSProvider::myTrashedProvidersView();

	route('smsprovider.providers.user-trashed-providers');

	url('smsprovider/user-trashed-providers');
```

**return view for group**

```
	SMSProvider::groupTrashedProvidersView();

	route('smsprovider.providers.group-trashed-providers');

	url('smsprovider/group-trashed-providers');
```

---

track activity
--------------

[](#track-activity)

**auth user track \[20/page\]**

```
	SMSProvider::track();

	SMSProvider::trackView();

	route('smsprovider.providers.user-track');

	url('smsprovider/user-track');
```

**group track \[20/page\]**

```
	SMSProvider::groupTrack();

	SMSProvider::groupTrackView();

	route('smsprovider.providers.group-track');

	url('smsprovider/group-track');
```

---

messages log activity
---------------------

[](#messages-log-activity)

**auth user log \[20/page\]**

```
	SMSProvider::log();

	SMSProvider::logView();

	route('smsprovider.providers.user-log');

	url('smsprovider/user-log');
```

**group log \[20/page\]**

```
	SMSProvider::groupLog();

	SMSProvider::groupLogView();

	route('smsprovider.providers.group-log');

	url('smsprovider/group-log');
```

---

ready templates
---------------

[](#ready-templates)

**Store one or more templates**\*\*

```
	$array = [
		['title' => 'greets', 'message' => 'hello there'],
		['title' => 'bye', 'message' => 'goodbye'],
	];
	SMSProvider::storeTemplates($array);

```

also, you can do it with view:

```
SMSProvider::createTemplates();

```

**Change template status**

```
	SMSProvider::changeTemplateStatus($template_id);

```

**trash template**

```
	SMSProvider::trashTemplate($template_id);

```

**recover template**

```
	SMSProvider::recoverTemplate($template_id);

```

**delete template**

```
	SMSProvider::removeTemplate($template_id);

```

**auth user templates \[20/page\]**

```
	SMSProvider::templates();

	SMSProvider::trashedTemplates();

	SMSProvider::templatesView();

	SMSProvider::trashTemplatesView();

	route('smsprovider.providers.user-templates');

	url('smsprovider/user-templates');
```

**group templates \[20/page\]**

```
	SMSProvider::groupTemplates();

	SMSProvider::groupTrashedTemplates();

	SMSProvider::groupTemplatesView();

	SMSProvider::groupTrashTemplatesView();

	route('smsprovider.providers.group-templates');

	url('smsprovider/group-templates');
```

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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 ~180 days

Recently: every ~225 days

Total

6

Last Release

1913d ago

Major Versions

1.4 → 2.02021-02-11

### Community

Maintainers

![](https://www.gravatar.com/avatar/47ed16c57e3b9f8ff52288d93e43fa9c82d7a43c35d2a9785afe59f9a1019954?d=identicon)[mahmoudarafat](/maintainers/mahmoudarafat)

---

Top Contributors

[![mahmoudarafat](https://avatars.githubusercontent.com/u/21014669?v=4)](https://github.com/mahmoudarafat "mahmoudarafat (97 commits)")

---

Tags

laravelsmssmsgatewaysmsprovidermultiple smsprovidermultiple smsgateway

### Embed Badge

![Health badge](/badges/mody-smsprovider/health.svg)

```
[![Health](https://phpackages.com/badges/mody-smsprovider/health.svg)](https://phpackages.com/packages/mody-smsprovider)
```

###  Alternatives

[tzsk/sms

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

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

A Laravel and Lumen integration for matthewbdaly/sms-client to enable sending SMS messages

3529.8k](/packages/matthewbdaly-laravel-sms)[ipecompany/smsirlaravel

Official Sms.ir Laravel Package

1810.2k1](/packages/ipecompany-smsirlaravel)

PHPackages © 2026

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