Giter Club home page Giter Club logo

smscampaignbundle's Introduction

SmsCampaignBundle

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

Due the PHP limitations on persistent and async processes management, I have created the utility 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 is definitely deprecated.

Installation:

1. Require the bundle and its dependencies with composer:

composer require terox/sms-campaign-bundle

2. Install smpp-cli:

npm install -g smpp-cli

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

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

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

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:

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

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

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 to keep it running if something was wrong (like server updates, unexpected errors...).

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:

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

[ ] Message model extension

License

See: LICENSE.md

smscampaignbundle's People

Contributors

terox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

charlielg

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.