PHPackages                             ibrahem-kamal/omni-messaging - 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. ibrahem-kamal/omni-messaging

ActiveLibrary

ibrahem-kamal/omni-messaging
============================

An easy to use, consistent sms library for Laravel

2.2.0(2y ago)0897[1 PRs](https://github.com/ibrahem-kamal/omni-messaging/pulls)1MITPHPPHP ^8.2|^8.3

Since Jan 29Pushed 1y ago1 watchersCompare

[ Source](https://github.com/ibrahem-kamal/omni-messaging)[ Packagist](https://packagist.org/packages/ibrahem-kamal/omni-messaging)[ Docs](https://github.com/ibrahem-kamal/omni-messaging)[ GitHub Sponsors](https://github.com/ibrahemkamal)[ RSS](/packages/ibrahem-kamal-omni-messaging/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (6)Dependencies (13)Versions (9)Used By (1)

Omni Messaging
==============

[](#omni-messaging)

---

**An easy to use, consistent sms library for Laravel**

[![Latest Version on Packagist](https://camo.githubusercontent.com/4d7679d4e436485b335d90c1b8fbb8cce62388896076e40014612a54229d90aa/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6962726168656d2d6b616d616c2f6f6d6e692d6d6573736167696e672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ibrahem-kamal/omni-messaging)[![GitHub Tests Action Status](https://camo.githubusercontent.com/92888d5a08c309950850227b4f775d20bf5bd06bc2204d7c70975f5e3e0bd49f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6962726168656d2d6b616d616c2f6f6d6e692d6d6573736167696e672f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/ibrahem-kamal/omni-messaging/actions?query=workflow%3Arun-tests+branch%3Amain)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/613e24c3827a53ec174ce35ba96663a3434403244662446270da9da205d0d2b4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6962726168656d2d6b616d616c2f6f6d6e692d6d6573736167696e672f6669782d7068702d636f64652d7374796c652d6973737565732e796d6c3f6272616e63683d6d61696e266c6162656c3d636f64652532307374796c65267374796c653d666c61742d737175617265)](https://github.com/ibrahem-kamal/omni-messaging/actions?query=workflow%3A%22Fix+PHP+code+style+issues%22+branch%3Amain)[![Total Downloads](https://camo.githubusercontent.com/930c6be53e67bbe285ba677d92739df252f1af31ed5631338f1130bdebd3c2e2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6962726168656d2d6b616d616c2f6f6d6e692d6d6573736167696e672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/ibrahem-kamal/omni-messaging)

Omni messaging is heavily inspired by the PHP OmniPay Library and is designed to be a simple and consistent interface for sending SMS messages in Laravel.

there are many SMS gateways out there, and they all have their own API's, and they all have their own way of doing things. Omni Messaging is designed to provide a consistent interface for sending SMS messages, regardless of the gateway you are using.

Currently supported gateways are (Many more will be added in the future either by me or the community):

Sms Gateway1.xComposer PackageMaintainer[Jawaly Sms](https://www.4jawaly.com/)✓ibrahem-kamal/omni-messaging-jawaly-sms-driver[Ibrahem Kamal](https://github.com/ibrahem-kamal)Installation
------------

[](#installation)

You can install the package via composer:

```
composer require ibrahem-kamal/omni-messaging
```

You can publish and run the migrations with:

```
php artisan vendor:publish --tag="omni-messaging-migrations"
```

You can publish the config file with:

```
php artisan vendor:publish --tag="omni-messaging-config"
```

This is the contents of the published config file:

```
return [
    /**
     * Channels should be added in the following format:
     * 'channels' => [
     *     'channel_name' => [
     *        'driver' => 'driver_name',
     *       'options' => []
     *    ]
     * ]
     */
    'channels' => [],
    'webhook' => [
        'queue' => 'default',
    ],
];
```

Usage
-----

[](#usage)

- Sending Sms

```
$sms = OmniMessaging::driver('jawaly')->send($message,$mobileNumber,$sender,$options = []);
    $sms->isSuccess(); //bool
    $sms->getErrorsString(); // errors as string
    $sms->getErrors(); // errors as array
    $sms->getData(); // array of data returned from the gateway
    $sms->toArray(); // array of all the above
```

- Retrieving Balance

```
$balance = OmniMessaging::driver('jawaly')->getBalance();
    $balance->isSuccess(); //bool
    $balance->getErrorsString(); // errors as string
    $balance->getErrors(); // errors as array
    $balance->getData(); // array of data returned from the gateway
    $balance->toArray(); // array of all the above
```

- Handling Sms Webhooks

> by default this package will handle the incoming sms webhooks using the gateway logic and dispatch an event `OmniMessagingWebhookUpdateEvent` with the `parsedWebhookData` as payload. so for example to listen to incoming sms you can do the following:

```
// in your event service provider
     OmniMessagingWebhookUpdateEvent::class => [
            YourListener::class,
        ]
```

> and within your listener you can access the parsed data as follows:

```
    public function handle(OmniMessagingWebhookUpdateEvent $event)
    {
          foreach ($event->parsedWebhookData as $parsedNumber) {
            $parsedNumber->getNumber(); // phone number string
            $parsedNumber->getFrom(); // sender string
            $parsedNumber->getReference(); // reference string such as message id
            $parsedNumber->isSuccess(); // bool
            $parsedNumber->getError(); // string
            $parsedNumber->toArray(); // array of all the above
        }
    }
```

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [ibrahemkamal](https://github.com/ibrahem-kamal)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

Roadmap
-------

[](#roadmap)

\[❌\] Create Log Driver for local development

\[❌\] Create Twilio Driver

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance27

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 93.5% 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 ~14 days

Total

6

Last Release

760d ago

Major Versions

1.0.1 → 2.02024-02-05

PHP version history (3 changes)1.0.0PHP ^8.1

2.0.1PHP ^8.2

2.2.0PHP ^8.2|^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/033bc7c0b8c92e1771f366c5681ca9b9b5b1f81efba3046ae73ae445d3d491a2?d=identicon)[ibrahem-kamal](/maintainers/ibrahem-kamal)

---

Top Contributors

[![ibrahem-kamal](https://avatars.githubusercontent.com/u/38753243?v=4)](https://github.com/ibrahem-kamal "ibrahem-kamal (43 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (1 commits)")

---

Tags

laravelibrahemkamalomni-messaging

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/ibrahem-kamal-omni-messaging/health.svg)

```
[![Health](https://phpackages.com/badges/ibrahem-kamal-omni-messaging/health.svg)](https://phpackages.com/packages/ibrahem-kamal-omni-messaging)
```

###  Alternatives

[vormkracht10/laravel-mails

Laravel Mails can collect everything you might want to track about the mails that has been sent by your Laravel app.

24149.7k](/packages/vormkracht10-laravel-mails)[spatie/laravel-prometheus

Export Laravel metrics to Prometheus

2651.3M6](/packages/spatie-laravel-prometheus)[hydrat/filament-table-layout-toggle

Filament plugin adding a toggle button to tables, allowing user to switch between Grid and Table layouts.

6292.3k1](/packages/hydrat-filament-table-layout-toggle)[scalar/laravel

Render your OpenAPI-based API reference

6183.9k2](/packages/scalar-laravel)[ralphjsmit/laravel-helpers

A package containing handy helpers for your Laravel-application.

13704.6k2](/packages/ralphjsmit-laravel-helpers)[musahmusah/laravel-multipayment-gateways

A Laravel Package that makes implementation of multiple payment Gateways endpoints and webhooks seamless

852.2k1](/packages/musahmusah-laravel-multipayment-gateways)

PHPackages © 2026

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