y0zh / yii2-sms
Yii2 Sms 扩展。
v1.1.5
2022-02-07 12:45 UTC
Requires
- yiisoft/yii2: ~2.0.0
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
- 从服务提供商获得的 IDphone
- 电话text
- 消息文本type
- 消息类型(可选)for_user_id
- 用户 ID(可选)status
- 消息状态created_by
- 发送者created_at
- 请求发送的时间must_sent_at
- 必要时间(用于延迟发送)check_status_at
- 状态更新时间provider
- 发送服务名称provider_answer
- 当前消息从服务获得的最后一个响应