СМС-менеджер
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 - последий ответ полученный от сервиса по текущему сообщению