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