Необходимо реализовать смс-рассылку абонентам с помощью 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 можно запускать по крону.
Комментариев нет:
Отправить комментарий