y0zh/yii2-sms

Yii2 Sms 扩展。

维护者

详细信息

github.com/y0zh/yii2-sms

主页

源代码

安装: 42

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 4

类型:yii2-extension

v1.1.5 2022-02-07 12:45 UTC

This package is not auto-updated.

Last update: 2024-10-01 01:52:44 UTC


README

继承自 https://github.com/lowbase/yii2-sms

短信管理器

Yii2-sms - 通过各种服务发送短信消息的管理器

  • 发送短信,查询消息状态,检查余额
  • 包括服务:IqSmsc.ru (短信折扣),Smsc.ru 作为示例
  • 可以将所有消息的信息保存到数据库中
  • 可以通过一个组件通过多个服务发送消息
  • 如果主要服务发送失败,将自动通过备用服务发送

安装

php composer.phar require --prefer-dist y0zh/yii2-sms "*"

或者

"y0zh/yii2-sms": "*"

然后运行迁移以创建数据库表

php yii migrate --migrationPath=@vendor/y0zh/yii2-sms/migrations

配置

'components' => [
    ...
        'sms' => [
            'class' => 'y0zh\sms\Sms',
            'cascade' => true,
            'services' => [
                // http://iqsms.ru/api/api_rest/
                'iqsmsc_ru' => [
                    'class' => 'y0zh\sms\services\IqmscRuService',
                    'login' => '...',
                    'password' => '...',
                    'order' => 2,
                ],
                // http://iqsms.ru/api/api_rest/
                'iqsmsc_ru_2' => [
                    'class' => 'y0zh\sms\services\IqmscRuService',
                    'login' => '...',
                    'password' => '...',
                    'order' => 3,
                ],
                // http://smsc.ru/api/
                'smsc_ru' => [
                    'class' => 'y0zh\sms\services\SmscRuService',
                    'login' => '...',
                    'password' => '...',
                    'order' => 1
                ],
            ]
        ]
    ...
]

,其中 'cascade' => true - 当当前服务发送失败时,将自动通过下一个服务发送短信。 services - 包含认证数据(登录名和密码)的消息发送服务,order(必须填写)- 在级联发送时调用服务的顺序。服务名称(iqsmsc_ru, iqsmsc_ru_2, smsc_ru)可以替换为自己的。

可以添加自己的服务。它们需要从 y0zh\sms\AbstractService 继承,并在上述配置中指定。

使用

// Получение баланса сервиса по-умолчанию (1-го)
Yii::$app->sms->getBalance(); 

// Вывод баланса сервиса iqsmsc_ru_2
echo Yii::$app->sms->useService('iqsmsc_ru_2')->getBalance();

// Отправка смс сообщения через сервис smsc_ru без сохранения информации в базу данных
Yii::$app->sms->useServicese('smsc_ru')->sendSms('+79801112233', 'Тестовое сообщение', false);

// Отправка смс сообщения сервисом по-умолчанию с сохранением информации в базу данных, тип смс -1, для пользователя 5.
Yii::$app->sms->sendSms('+79801112233', 'Тестовое сообщение', true, 1, 5);

// Получение статуса СМС по Id из базы данных (id = 94) с сохранением статуса в базе данных
Yii::$app->sms->getSmsStatusById(94);

// Вывод статуса смс по Id без сохранения в базу данных
echo Yii::$app->sms->getSmsStatusById(94, false);

// Получение статуса смс по Id, полученному от провайдера (сервиса). 
Yii::$app->sms->getSmsStatusByProviderId(1977846286);

// Для сервиса Smsc.ru необходимо передать доп. параметр phone для работоспособности метода выше
Yii::$app->sms->getSmsStatusByProviderId(3, ['phone' => '+79801112233']);

消息状态

  • -1 - 未知(STATUS_UNKNOWN)
  • 0 - 错误(STATUS_FAILED)
  • 1 - 已发送(STATUS_SENT)
  • 2 - 在配送队列中(STATUS_QUEUED)
  • 3 - 已送达(STATUS_DELIVERED)

数据库中的消息信息

  • id
  • provider_sms_id - 从服务提供商获得的 ID
  • phone - 电话
  • text - 消息文本
  • type - 消息类型(可选)
  • for_user_id - 用户 ID(可选)
  • status - 消息状态
  • created_by - 发送者
  • created_at - 请求发送的时间
  • must_sent_at - 必要时间(用于延迟发送)
  • check_status_at - 状态更新时间
  • provider - 发送服务名称
  • provider_answer - 当前消息从服务获得的最后一个响应