terox / sms-campaign-bundle
SMS活动Bundle
2.0.0
2017-07-24 11:47 UTC
Requires
- php: >=5.6.0
- dnode/dnode: ^0.2.0
- doctrine/doctrine-bundle: ~1.4
- doctrine/orm: ^2.4.8
- php-amqplib/rabbitmq-bundle: ^1.12
- stof/doctrine-extensions-bundle: ^1.2
- symfony/framework-bundle: ^3.2
- symfony/monolog-bundle: ^3.1
- symfony/process: ^3.2
- symfony/yaml: ^3.2
README
关于项目
SmsCampaignBundle 提供了创建和发送大量用户SMS活动的工具和服务。目前,它可以通过SMPP客户端发送SMS,这是发送大量消息时最常用的协议。
关于SMPP客户端
由于PHP在持久和异步进程管理上的限制,我创建了一个NodeJS工具smpp-cli。这是一个实现DNode协议
的小型守护进程,用于将PHP消费者与通过SMPP服务器发送SMS的smpp-cli进程连接起来。
实施这种架构的影响最小,并解决了与SMPP提供商(如重复连接、超时、两个进程(一个用于发送,一个用于接收)等)相关的大量问题。
这对开发者来说是完全透明的。
注意:定制的php-smpp 已完全弃用。
安装
1. 使用composer要求该包及其依赖项
composer require terox/sms-campaign-bundle
2. 安装smpp-cli
npm install -g smpp-cli
2. 在AppKernel.php中注册SmsCampaignBundle
和RabbitMQBundle
public function registerBundles() { $bundles = array( // ... new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(), new Terox\SmsCampaignBundle\TeroxSmsCampaignBundle() // ... ); return $bundles; }
3. 将SmsCampaignBundle
配置添加到您的config.yml
terox_sms_campaign: providers: example_provider: host: "%smpp_host%" port: "%smpp_port%" login: "%smpp_login%" password: "%smpp_password%" rpc: port: 7070
4. 如果您还没有添加RabbitMQBundle
配置,请将其添加到您的config.yml
您可以自由配置RabbitMQ bundle。生产者和消费者在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
使用方法
有两种启动SMPP守护进程(smpp-cli
)的方式
A. 手动启动SMPP守护进程(推荐)
这将执行守护进程并监听dnode
端口。您需要手动传递凭据
smpp-cli listen 7070 -h smpp.example.com -p 2675 -L userLogin -P userPassword -C "/var/www/bin/console sms:dlr:update"
注意:您可以使用您需要的任何数量的守护进程,例如,如果您有多个SMPP提供商;只需更改端口号。
我建议您在supervisor中执行此命令,以便在出现错误(如服务器更新、意外错误等)时保持其运行。
请注意
- 凭据可能会在进程管理器(如
htop
)中显示,具体取决于您如何传递凭据到smpp-cli。 - 如果您使用某些部署脚本,请确保在存储这些脚本的地方隐藏敏感数据。
B. 使用Symfony控制台启动SMPP守护进程
此命令的目的是使用Symfony配置参数来配置smpp-cli
守护进程
/var/www/bin/console sms:start:client
警告! 此命令仍然不符合我的预期。需要更多的研究。我希望在下一个主要版本中修复它,但您可以自由发送您的PR。
待办事项
[ ] 消息模型扩展
许可协议
查看:LICENSE.md