Страницы

Поиск по вопросам

четверг, 2 мая 2019 г.

Релизация смс-рассылки с помощью API smsc

Необходимо реализовать смс-рассылку абонентам с помощью API smsc
Есть у меня две таблицы. В первую заносятся данные об абоненте: логин, моб. телефон и тип подключаемой рассылки

Во второй к каждому типу рассылки прикрепляется характерное для него сообщение

Общая идея есть, но очень смутная и не факт, что правильная.
Выбираем логин абонента, проверяем каким-то условием какой тип рассылки для этого логина включен. Если включено, допустим, оповещение о Приближении срока оплаты - высылаем характерное для этого типа сообщение на номер абонента.
Вручную сообщение я высылал таким вот образом:

Необходимо каким-то образом подставлять номера телефонов и сообщения для них. Но в силу своих скудных знаний - придумать как это сделать пока не могу. Очень надеюсь на помощь.
UPD:
Так я добавляю данные в первую таблицу:
$table = $system_site_prefix . 'erps_services_sms'; database_insert("INSERT INTO `$table` VALUES (\"$index\", \"$abon_login\", \"$telephone\", \"$pay\", \"$orders\", \"$news\", \"$other\")");
Так во вторую:
$table = $system_site_prefix . 'erps_messages_sms'; database_insert("INSERT INTO `$table` VALUES (\"$index\", \"$group\", \"$title\", \"$message\")");
UPD2:
Структура таблиц:




Ответ

$result = file_get_contents("https://smsc.ru/sys/send.php?login=login&psw=psw&phones=".urlencode($phones)."&mes=".urlencode($message));
Для того, что бы выбрать сразу абонентов с номерами и текстами сообщений, необходимо сделать join двух таблиц по типу отправляемого сообщения.
Для контроля кодов ответа сервера (200, 404, 403, etc...) лучше использовать curl в PHP
-- Структура таблицы для связи сообщений и абонентов CREATE TABLE `erps_services_messages` ( `index` int(11) NOT NULL AUTO_INCREMENT, `service` int(11) NOT NULL, `message` int(11) NOT NULL, PRIMARY KEY (`index`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
-- Запрос для выборки sms SELECT sm.index AS `index`, m.message AS message, s.telephone AS telephone FROM `erps_services_messages` AS sm INNER JOIN `erps_messages_sms` AS m ON m.index = sm.message INNER JOIN `erps_services_sms` AS s ON s.index = sm.service
+-------+----------------------+-------------+ | index | message | telephone | +-------+----------------------+-------------+ | 1 | Сообщение 1 | +7999999999 | | 2 | Сообщение 3 | +7999999999 | | 3 | Сообщение 1 | +7888888888 | | 4 | Сообщение 4 | +7888888888 | +-------+----------------------+-------------+

-- После успешной отправки сообещния просто выполните DELETE FROM `erps_services_messages` WHERE `index` = %
-- Пример заполнения данными моих тестовых таблиц select * from erps_messages_sms; +-------+----------------------+ | index | message | +-------+----------------------+ | 1 | Сообщение 1 | | 2 | Сообщение 2 | | 3 | Сообщение 3 | | 4 | Сообщение 4 | +-------+----------------------+
select * from erps_services_sms; +-------+-------------+ | index | telephone | +-------+-------------+ | 1 | +7999999999 | | 2 | +7888888888 | +-------+-------------+
select * from erps_services_messages; +-------+---------+---------+ | index | service | message | +-------+---------+---------+ | 1 | 1 | 1 | | 2 | 1 | 3 | | 3 | 2 | 1 | | 4 | 2 | 4 | +-------+---------+---------+
Для добавления команды на отправку sms достаточно просто создать запись в таблице erps_services_messages и указать index из таблицы абонентов и index из таблицы сообщений. Скрипт отправки sms можно запускать по крону.

Комментариев нет:

Отправить комментарий