terox/sms-campaign-bundle

SMS活动Bundle

安装: 49

依赖项: 0

建议者: 0

安全: 0

星标: 6

关注者: 2

分支: 1

公开问题: 0

类型:symfony-bundle

2.0.0 2017-07-24 11:47 UTC

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中注册SmsCampaignBundleRabbitMQBundle

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