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.
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.
composer require terox/sms-campaign-bundlenpm install -g smpp-clipublic function registerBundles()
{
$bundles = array(
// ...
new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(),
new Terox\SmsCampaignBundle\TeroxSmsCampaignBundle()
// ...
);
return $bundles;
}terox_sms_campaign:
providers:
example_provider:
host: "%smpp_host%"
port: "%smpp_port%"
login: "%smpp_login%"
password: "%smpp_password%"
rpc:
port: 7070You 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: 0There are two ways to start the SMPP daemon (smpp-cli):
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...).
- 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.
The propose of this command is to use the Symfony configuration params to configure the smpp-cli daemons:
/var/www/bin/console sms:start:clientWarning! 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.
[ ] Message model extension
See: LICENSE.md