СМС-менеджер
Yii2-sms - менеджер отправки Смс-сообщений через различные сервисы, (*1)
- Отправка смс, запрос статусов сообщений, проверка баланса
- Включает сервисы: IqSmsc.ru (Смс-Дисконт), Smsc.ru в качестве примеров
- Возможность сохранения информации по всем сообщениям в базе данных
- Возможность отправки сообщений через несколько сервисов одним компонентом
- Автоматическая отправка через резервные сервисы при неудачной отправке основных сервисов
Установка
php composer.phar require --prefer-dist lowbase/yii2-sms "*"
или, (*2)
"lowbase/yii2-sms": "*"
затем запускаем миграции для создания таблицы БД, (*3)
php yii migrate --migrationPath=@vendor/lowbase/yii2-sms/migrations
Настройка
'components' => [
...
'sms' => [
'class' => 'lowbase\sms\Sms',
'cascade' => true,
'services' => [
// http://iqsms.ru/api/api_rest/
'iqsmsc_ru' => [
'class' => 'lowbase\sms\services\IqmscRuService',
'login' => '...',
'password' => '...',
'order' => 2,
],
// http://iqsms.ru/api/api_rest/
'iqsmsc_ru_2' => [
'class' => 'lowbase\sms\services\IqmscRuService',
'login' => '...',
'password' => '...',
'order' => 3,
],
// http://smsc.ru/api/
'smsc_ru' => [
'class' => 'lowbase\sms\services\SmscRuService',
'login' => '...',
'password' => '...',
'order' => 1
],
]
]
...
]
,где 'cascade' => true
- автоматическая отправка смс-сообщения следующим сервисом при неудачной отправке текущим.
services
- сервисы отправки сообщений с аутентификационными данными (логин и пароль), order
(обязательно для заполнения) - порядок вызова сервисов при каскадной отправке. Названия сервисов (iqsmsc_ru, iqsmsc_ru_2, smsc_ru
) можно заменить на свои., (*4)
Возможно добавление собственных сервисов. Их необходимо наследовать от lowbase\sms\AbstractService, и указать в конфигурации, представленной выше., (*5)
Использование
// Получение баланса сервиса по-умолчанию (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
- последий ответ полученный от сервиса по текущему сообщению