PHPackages                             terox/sms-campaign-bundle - 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. [Queues &amp; Workers](/categories/queues)
4. /
5. terox/sms-campaign-bundle

ActiveSymfony-bundle[Queues &amp; Workers](/categories/queues)

terox/sms-campaign-bundle
=========================

Symfony Bundle for SMS Campaigns

2.0.0(8y ago)650MITPHPPHP &gt;=5.6.0

Since Jan 4Pushed 8y ago2 watchersCompare

[ Source](https://github.com/terox/SmsCampaignBundle)[ Packagist](https://packagist.org/packages/terox/sms-campaign-bundle)[ Docs](https://github.com/terox/SmsCampaignBundle)[ RSS](/packages/terox-sms-campaign-bundle/feed)WikiDiscussions master Synced today

READMEChangelog (2)Dependencies (9)Versions (15)Used By (0)

SmsCampaignBundle
=================

[](#smscampaignbundle)

About The Project
-----------------

[](#about-the-project)

The **SmsCampaignBundle** provides tools and services to create and send SMS campaigns to a high volume of users. Currently, it can send SMS though SMPP client, the most used protocol for send high volumes.

### About the SMPP Client

[](#about-the-smpp-client)

Due the PHP limitations on persistent and async processes management, I have created the utility [smpp-cli](https://github.com/terox/smpp-cli)for NodeJS. This is a little daemon that implements a `DNode protocol` to connect the PHP consumers with ***smpp-cli***processes that sent the SMS through SMPP server.

The impact of implement this architecture is minimum and solves a lot of headaches with SMPP providers like repetitive connections, timeouts, two processes (one to sent, one to receive) etc.

This is completely transparent for developer.

**Note**: The customized [php-smpp](https://github.com/terox/php-smpp) is definitely deprecated.

Installation:
-------------

[](#installation)

#### 1. Require the bundle and its dependencies with composer:

[](#1-require-the-bundle-and-its-dependencies-with-composer)

```
composer require terox/sms-campaign-bundle
```

#### 2. Install `smpp-cli`:

[](#2-install-smpp-cli)

```
npm install -g smpp-cli
```

#### 2. Register `SmsCampaignBundle` and `RabbitMQBundle` in your AppKernel.php:

[](#2-register-smscampaignbundle-and-rabbitmqbundle-in-your-appkernelphp)

```
public function registerBundles()
{
    $bundles = array(
        // ...
        new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(),
        new Terox\SmsCampaignBundle\TeroxSmsCampaignBundle()
        // ...
    );

    return $bundles;
}
```

#### 3. Add the `SmsCampaignBundle` configuration to your `config.yml`:

[](#3-add-the-smscampaignbundle-configuration-to-your-configyml)

```
terox_sms_campaign:
    providers:
        example_provider:
            host: "%smpp_host%"
            port: "%smpp_port%"
            login: "%smpp_login%"
            password: "%smpp_password%"
            rpc:
              port: 7070
```

#### 4. If you haven't added the `RabbitMQBundle` configuration, add it to your `config.yml`:

[](#4-if-you-havent-added-the-rabbitmqbundle-configuration-add-it-to-your-configyml)

You are free to configure the RabbitMQ bundle. The producers and consumers **are preconfigured in SmsCampaignBundle**.

```
old_sound_rabbit_mq:
    connections:
        default:
            host:     "%rabbitmq_host%"
            port:     "%rabbitmq_port%"
            user:     "%rabbitmq_user%"
            password: "%rabbitmq_password%"
            vhost:    "%rabbitmq_vhost%"
            lazy:     true
            connection_timeout: 3
            read_write_timeout: 3

            # requires php-amqplib v2.4.1+ and PHP5.4+
            keepalive: false

            # requires php-amqplib v2.4.1+
            heartbeat: 0
```

Usage
-----

[](#usage)

There are two ways to start the SMPP daemon (`smpp-cli`):

### A. Start the SMPP daemon manually (recommended):

[](#a-start-the-smpp-daemon-manually-recommended)

This will execute the daemon and will listen the `dnode` port. You need to pass your credentials manually:

```
smpp-cli listen 7070 -h smpp.example.com -p 2675 -L userLogin -P userPassword -C "/var/www/bin/console sms:dlr:update"
```

***Note:*** You can use as many demons as you need, for example if you have more than one SMPP provider; only change the port number.

I recommend you that executes this command inside [supervisor](http://supervisord.org/) to keep it running if something was wrong (like server updates, unexpected errors...).

#### Keep in mind:

[](#keep-in-mind)

- The credentials could be shown at the process manager (like `htop`) depending on how you pass the credentials to smpp-cli.
- If you use some deployment scripts, be sure to hide the sensitive data where you store these scripts.

### B. Start the SMPP daemon with a Symfony console:

[](#b-start-the-smpp-daemon-with-a-symfony-console)

The propose of this command is to use the Symfony configuration params to configure the `smpp-cli` daemons:

```
/var/www/bin/console sms:start:client
```

***Warning!*** This command still not working as I expected. It need little more research. I hope fix it in the next major release, but you are free to sent your PR.

TODO
----

[](#todo)

\[ \] Message model extension

License
-------

[](#license)

See: [LICENSE.md](LICENSE.md)

###  Health Score

30

—

LowBetter than 62% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity66

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 ~17 days

Recently: every ~27 days

Total

13

Last Release

3263d ago

Major Versions

1.3.0 → 2.0.02017-07-24

PHP version history (2 changes)1.0.0PHP &gt;=5.3.9

1.2.0PHP &gt;=5.6.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/252005?v=4)[David Pérez Terol](/maintainers/terox)[@terox](https://github.com/terox)

---

Top Contributors

[![terox](https://avatars.githubusercontent.com/u/252005?v=4)](https://github.com/terox "terox (18 commits)")

---

Tags

rabbitmqsmppsmssms-campaignssymfonysymfony-bundlesmsSymfony Bundlesmppsend smsshort message serviceSMS Campaigns

### Embed Badge

![Health badge](/badges/terox-sms-campaign-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/terox-sms-campaign-bundle/health.svg)](https://phpackages.com/packages/terox-sms-campaign-bundle)
```

###  Alternatives

[rcsofttech/audit-trail-bundle

Enterprise-grade, high-performance Symfony audit trail bundle. Automatically track Doctrine entity changes with split-phase architecture, multiple transports (HTTP, Queue, Doctrine), and sensitive data masking.

1175.2k](/packages/rcsofttech-audit-trail-bundle)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M196](/packages/sulu-sulu)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.8M712](/packages/sylius-sylius)[kimai/kimai

Kimai - Time Tracking

4.8k8.7k1](/packages/kimai-kimai)[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.5M378](/packages/easycorp-easyadmin-bundle)[forumify/forumify-platform

122.0k12](/packages/forumify-forumify-platform)

PHPackages © 2026

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