В цифровом маркетинге коммуникация с клиентами играет ключевую роль в успехе бизнеса. Хотя email-уведомления остаются мощным инструментом, SMS приобретают все большее значение благодаря оперативности и высокому уровню прочтения. В этом руководстве сосредоточимся на интеграции email- и SMS-уведомлений в Joomla с использованием API Exolve и ряда других средств.

Для начала важно выстроить правильную стратегию:

1. Определить цели и сегменты рассылок.

2. Выбрать оптимальную периодичность.

3. Адаптировать контент под интересы аудитории.

4. Тестировать заголовки, призывы, визуал.

5. Непрерывно измерять эффективность и улучшать.

Грамотная работа с email способна принести бизнесу существенный прирост продаж и клиентов. Поэтому владельцу практически любого сайта на Joomla стоит внедрить этот канал.

Обзор расширений Joomla для email-уведомлений

В каталоге расширений Joomla есть немало компонентов для организации email-рассылок. Рассмотрим несколько наиболее популярных и функциональных вариантов.

AcyMailing 

AcyMailing — известный компонент для email-маркетинга в экосистеме Joomla с обширным набором функций, удобным интерфейсом и поддержкой различных email-сервисов. 

Основные возможности AcyMailing:

  • Управление неограниченным числом списков подписчиков.

  • Детальная сегментация базы по полям профилей.

  • Drag-and-drop редактор писем.

  • Адаптивные шаблоны и персонализация контента.

  • Отправка по расписанию и автореспондеры.

  • Аналитика открытий, кликов, отписок.

  • Интеграция с Joomla, K2, HikaShop, Virtuemart и др.

Есть бесплатная базовая версия с ограничениями по числу подписчиков.

 jNews

jNews — другое мощное решение для email-маркетинга на Joomla.

Ключевые опции jNews:

  • Комфортное управление списками и группами контактов.

  • Визуальные редакторы писем (WYSIWYG и Drag & Drop).

  • Динамический контент и условия его отображения.

  • Продвинутая сегментация по поведению пользователей.

  • Цепочки писем, автореспондеры, автоматические рассылки.

  • Тесты A/B, отчеты, графики.

  • Синхронизация с Joomla, К2, Easysocial, Jomsocial и более 30 CMS/CRM.

jNews распространяется по подписке от 99 долларов в год для одного домена.

Acajoom

Acajoom — еще один заслуживающий внимания компонент рассылок для сайтов на Joomla. Он сочетает широкую функциональность с простотой использования.

Особенности Acajoom:

  • Работа с неограниченным количеством списков подписчиков.

  • Встроенные шаблоны писем и простой drag-and-drop редактор.

  • Персонализация контента по группам и интересам.

  • Гибкое расписание рассылок.

  • Сплит-тесты, аналитика, отчеты.

  • Совместимость с популярными расширениями Joomla.

Цена Acajoom стартует от 47 долларов для одного сайта. Есть 30-дневная гарантия возврата средств.

Также можно упомянуть такие расширения, как Mailster, Joomla-Mailings, Joomailer, Emclabs Newsletter и др. У каждого из них своя специфика и аудитория пользователей. 

В целом, выбор компонента email рассылок зависит от масштаба проекта, бюджета и требуемых функций.

Далее мы сосредоточимся именно на работе с AcyMailing и разберем настройку рассылок на его примере.

Пошаговая инструкция по созданию рассылки в AcyMailing

Допустим, у нас есть работающий сайт на Joomla, и мы хотим запустить на нем email-маркетинг с помощью AcyMailing.

Рассмотрим последовательность необходимых действий.

Шаг 1. Установка компонента

  • Скачиваем актуальную версию AcyMailing с сайта разработчика.

  • В административной панели Joomla переходим в Расширения -> Менеджер расширений.

  • Нажимаем кнопку «Загрузить файл пакета» и выбираем скачанный архив с AcyMailing. Компонент будет установлен автоматически.

Шаг 2. Общие настройки 

  • Переходим в Компоненты -> AcyMailing -> Конфигурация.

  • Во вкладке «Основные» заполняем имя и email (для полей от кого и ответить). Эти данные будут использоваться по умолчанию при отправке писем.

  • Во вкладке «Почтовые серверы» указываем SMTP-сервер, порт, логин и пароль для отправки писем. Это могут быть SMTP данные от вашего почтового сервиса или подключенного стороннего, например SendGrid, Mailgun.

Шаг 3. Создание списка подписчиков

  • В меню AcyMailing выбираем Списки.

  • Нажимаем кнопку «Создать список».

  • Указываем Название списка, например «Основной список рассылки».

  • Вписываем тему письма подтверждения подписки.

  • Устанавливаем переключатель «Подтверждение подписки» в «Да».

  • Сохраняем список.

Шаг 4. Создание формы подписки

  • В меню AcyMailing идем в формы.

  • Нажимаем «Создать форму».

  • Выбираем нужный нам список в поле «Списки».

  • Выбираем поля подписчика, которые будут отображаться в форме, например имя и email.

  • Копируем сгенерированный код формы.

Шаг 5. Вставка формы на сайт

  • Создаем новый материал в Joomla .

  • Переключаемся на вкладку HTML редактора материала.

  • Вставляем скопированный код формы подписки внутрь тегов <body>.

  • Публикуем материал и проверяем, что форма отображается и работает корректно.

Шаг 6. Подготовка шаблона письма

  • В меню AcyMailing заходим в рассылки.

  • Нажимаем «Создать рассылку».

  • Указываем тему письма.

  • Во вкладке «Контент» с помощью удобного drag-and-drop редактора создаем тело письма.

  • Используем персонализацию, например Здравствуйте, {имя подписчика}!

  • Добавляем призыв к действию и ссылки на сайт.

  • Тестируем отображение письма на разных устройствах во вкладке просмотра.

Шаг 7. Тестовая отправка

  • В созданной рассылке переходим на вкладку «Отправка».

  • В блоке «Тесты» вводим тестовый email и нажимаем «Отправить тест».

  • Проверяем доставку письма, корректность контента и ссылок.

Шаг 8. Запуск рассылки

  • В настройках рассылки во вкладке «Отправка» выбираем список получателей.

  • Указываем фильтры и сегментацию списка, если нужно.

  • Ставим галочку «Опубликовано».

  • Выбираем дату и время отправки рассылки.

  • Нажимаем «Сохранить и закрыть».

Таким образом, рассылка создана и запланирована. После фактической отправки подписчикам в интерфейсе AcyMailing можно будет отследить статистику открытий, кликов, отписок и т.д.

Данную последовательность действий можно повторять для создания новых рассылок на регулярной основе. 

Персонализация и сегментация рассылок

Чтобы повысить эффективность email маркетинга, недостаточно просто отправлять рассылки всей базе подписчиков. Важно персонализировать контент писем и сегментировать аудиторию по различным признакам. Рассмотрим, как это можно реализовать на примере AcyMailing.

Персонализация

В редакторе AcyMailing есть теги персонализации вида {имя_поля}. Эти теги автоматически заменяются на соответствующие данные подписчика при отправке. 

Например, у нас есть поля имя, фамилия, пол в профиле подписчика. Тогда в тексте письма можно использовать обращения:

Здравствуйте, {firstname}!
Уважаемый {firstname} {lastname},  
Дорогая {firstname},

Шаблон AcyMailing поддерживает практически любые условные конструкции и циклы для реализации сложной персонализации.

Кроме того, фильтровать базу можно по активности подписчиков: открытиям, кликам, покупкам. Это поможет идентифицировать горячие и холодные сегменты, сделать им разные по контексту и интенсивности предложения.

Например, отправить серию реактивационных писем тем, кто давно не открывал рассылки, а наиболее активным подписчикам, лояльным клиентам можно сделать эксклюзивное предложение с глубокой скидкой:

Интеграция AcyMailing с другими компонентами Joomla

Еще одно важное преимущество AcyMailing: интеграция со множеством других расширений. Это позволяет связать разные данные о пользователях на сайте и использовать их для более эффективной работы с рассылками.

Рассмотрим несколько примеров.

Интеграция с Joomla

Из коробки AcyMailing умеет синхронизировать свою базу подписчиков со встроенными пользователями Joomla. Для этого нужно:

  • Зайти в Joomla в «Пользователи» -> «Группы доступа».

  • Создать новую группу, например «Подписчики рассылки».

  • В меню AcyMailing перейти в «Подписчики» -> «Синхронизация пользователей»

  • Выбрать «Joomla Groups» в качестве источника.

  • Отметить только что созданную группу «Подписчики рассылки».

  • Выбрать список рассылки, в который импортировать пользователей.

  • Нажать «Сохранить и продолжить».

Теперь при добавлении пользователя в соответствующую группу Joomla он будет автоматически попадать в базу подписчиков AcyMailing.

Интеграция с K2

K2 — популярный компонент для публикации контента в Joomla. При включенной интеграции AcyMailing сможет автоматически создавать рассылки из новых материалов K2 по заданным правилам. 

Включаем интеграцию:

  • В AcyMailing идем в «Расширения» -> «Подписки в Joomla».

  • Напротив строки K2 ставим галочку в колонке «Опубликовано».

Создаем правило автоматической рассылки:

  • В AcyMailing идем в «Рассылки» -> «Создать рассылку».

  • Во вкладке «Генерация» устанавливаем переключатель «Сгенерировать рассылку из К2» в «Да».

  • Указываем категорию или конкретные материалы K2 для рассылки.

  • Выбираем шаблон для автоматического создания контента рассылки.

  • Настраиваем сегментацию и фильтры получателей.

Теперь при публикации нового материала K2 из указанной категории будет генерироваться рассылка в соответствии с шаблоном и автоматически отправляться подписчикам.

Интеграция с Hikashop и Virtuemart

Hikashop и Virtuemart — популярные расширения для организации онлайн-магазина на Joomla. Их интеграция с AcyMailing позволяет использовать информацию о заказах для более таргетированных рассылок.

Включение интеграции:

  • В административной панели Joomla идем в «Компоненты» -> Hikashop/Virtuemart -> «Настройки».

  • Переходим в раздел интеграций.

  • Напротив пункта AcyMailing ставим галочку «Включено».

При новом заказе в Hikashop или Virtuemart email покупателя будет автоматически добавляться в список подписчиков AcyMailing. Кроме того, данные о заказе и приобретенных товарах будут записаны в дополнительные поля.

Вот как может выглядеть код для генерации персональных рекомендаций на основе предыдущих заказов в Hikashop:

{foreach $previous_orders as $order}
  {foreach $order->products as $product}
    <li>{$product->name}</li>
  {/foreach}  
{/foreach}

Здесь мы получаем массив прошлых заказов пользователя из Hikashop, проходимся по товарам внутри каждого заказа и выводим их названия в письме.

Аналогичным образом можно интегрировать AcyMailing с множеством других компонентов Joomla: каталогами, формами, блогами, форумами. Информация об этих интеграциях, как правило, содержится в документации соответствующих расширений.

Рассмотрим далее, как реализовать отправку SMS на сайте под управлением Joomla

Выбор SMS-шлюза и его подключение в Joomla

Преимущества SMS уведомлений:

  • Высокая скорость доставки.

  • Гарантированное прочтение (93% сообщений открывается в течение 5 минут).

  • Личный и доверительный характер обращения.

  • Возможность достучаться до неактивных email подписчиков.

  • Охват аудитории, не пользующейся email.

Для отправки SMS с сайта требуется подключение к специальному сервису — SMS-шлюзу. Это платформа, которая обеспечивает обмен сообщениями между веб-приложением и мобильными сетями.

Существует множество шлюзов с разными условиями и возможностями. Некоторые популярные варианты:

  • Exolve

  • Mobizon

  • Infobip

  • Sms4b

  • SMSAero

При выборе сервиса ориентируйтесь на:

  • цены на отправку SMS в нужные вам страны

  • качество доставляемости 

  • API для интеграции

  • техническую поддержку

  • отзывы других пользователей

Проанализировав эти факторы, регистрируемся в сервисе и пополняем баланс на первоначальную сумму. Далее реализуем фактическое подключение SMS-шлюза к Joomla. Есть два основных способа:

1. Через компонент интеграции

В каталоге расширений Joomla можно найти готовые компоненты для работы с популярными SMS шлюзами.

Устанавливаем компонент в Joomla, вводим API ключ из личного кабинета шлюза и начинаем отправлять SMS через интерфейс компонента, либо вызывая его функции в коде других расширений.

Плюсы подхода: простота интеграции, минимальные трудозатраты. Минусы: меньше гибкости, зависимость от стороннего кода.

2. Через прямые обращения к API 

Каждый шлюз предоставляет HTTP API для отправки сообщений. Имея ключ доступа, мы можем напрямую отправлять запросы к API из PHP-кода Joomla и обрабатывать ответы.

Термины и определения

Прежде чем мы перейдем к практическим аспектам, давайте ознакомимся с основными терминами:

  • ESME (External Short Messaging Entity) — внешнее приложение, подключающееся к SMSC для отправки или получения SMS-сообщений.

  • PDU (Protocol Data Unit) — пакет данных протокола SMPP.

  • SMSC (Short Message Service Center) — центр обслуживания коротких сообщений.

  • TLV (Tag-Length-Value) — формат представления дополнительных данных в сообщениях.

  • UDH (User Data Header) — заголовок пользовательских данных в SMS-сообщении.

Подключение к Exolve через SMPP

1. Получите доступ к Личному кабинету разработчика Exolve.

2. Перейдите во вкладку "Приложения" в верхнем меню аккаунта.

3. Выберите нужное приложение.

4. Перейдите в "Сообщения" → "SMPP-аккаунт" в левом меню.

5. Запишите следующие параметры подключения: system_id (логин), password (пароль), адрес (smpp.exolve.ru) и порт (2775).

6. Настройте ваше ESME (приложение для отправки SMS) с этими параметрами.

7. Используйте SMPP-протокол версии 3.4 для подключения.

Отправка SMS через Exolve SMPP

1. Выберите тип подключения: receiver или transceiver.

2. При отправке SMS обязательно укажите параметр data_coding:

   - Используйте GSM7 для латинского алфавита

   - Используйте UCS2 для кириллицы

3. Для отправки через short_message:

   - Установите текст в поле "short_message"

   - Для составных сообщений используйте UDH

   - Ограничение: 67 символов кириллицы или 153 символа латиницы на сегмент

4. Для отправки через payload:

   - Установите текст в поле "payload"

   - Не разделяйте на сегменты

   - Оставьте поле "short_message" пустым

5. Отправляйте PDU enquire_link каждые 15 минут для поддержания соединения.

Создание рассылки через API Exolve

1. Подготовьте API-ключ вашего приложения Exolve.

2. Используйте точку подключения: POST https://api.exolve.ru/campaign/v1/Create

3. Установите заголовок Authorization: Bearer {ваш_API-ключ}

4. Подготовьте JSON с параметрами рассылки:

   - name: название рассылки

   - timezone: учёт часового пояса (true/false)

   - Выберите канал рассылки (sms, voice_message или cascade)

5. Для SMS-рассылки укажите:

   - alpha_name: имя отправителя

   - text: текст сообщения

6. Для каскадной рассылки настройте последовательность каналов и условия перехода.

7. При необходимости настройте расписание рассылки.

8. Отправьте запрос и получите campaign_id в ответе.

Пример запроса для текстового SMS

{
    "name": "test",
    "timezone": true,
    "sms": {
        "props": {
            "alpha_name": "shop",
            "text": "Приходите к нам в магазин!"
        }
    }
}

Пример запроса для каскадной рассылки

{ 
    "name": "Рассылка с расписанием",
    "cascade": {
        "elements": [
            {
                "sms": {
                    "props": {
                        "alpha_name": "shop",
                        "text": "Приходите к нам!"
                    }
                },
                "condition": "1"
            },
            {
                "voice_message": {
                    "props": {
                        "voice_message_id": "353b86e0-a62c-47d4-9b94-8dba32c922fc",
                        "from": "79991112233"
                    }
                }
            }
        ]
    },
    "schedule": {
        "days": {
            "mon": {
                "intervals": [
                    {
                        "from": {
                            "hours": 10,
                            "minutes": 0,
                            "seconds": 0,
                            "nanos": 0
                        },
                        "to": {
                            "hours": 15,
                            "minutes": 30,
                            "seconds": 0,
                            "nanos": 0
                        }
                    }
                ]
            }
        }
    }
}

Оптимизация SMS-рассылок в Exolve

1. Используйте GSM7 кодировку для сообщений на латинице для экономии символов.

2. Для кириллицы используйте UCS2 кодировку.

3. При отправке составных сообщений через short_message, правильно формируйте UDH.

4. Для длинных сообщений используйте payload вместо short_message, чтобы избежать ручного разделения на сегменты.

5. Регулярно проверяйте соединение, отправляя enquire_link каждые 15 минут.

6. При создании каскадных рассылок, настраивайте условия перехода для оптимизации доставки.

7. Используйте расписание рассылок для отправки сообщений в оптимальное для получателей время.

Устранение неполадок при работе с Exolve

1. Используйте Wireshark для анализа SMPP-трафика при возникновении проблем.

2. При проблемах с API-запросами проверьте корректность API-ключа и формат JSON.

3. Если рассылка не создается, убедитесь, что:

   - Альфа-имя для SMS принадлежит вашему приложению

   - Номер телефона для голосовых SMS принадлежит вашему приложению

   - ID голосового сообщения существует и принадлежит вашему приложению

4. При ошибках в параметрах проверьте:

   - Длину альфа-имени (от 3 до 11 символов)

   - Длину номера телефона (от 1 до 14 символов)

   - Длину названия рассылки (от 3 до 40 символов)

5. Если рассылка не запускается в указанное время, проверьте, не создали ли вы её во время текущего интервала расписания.

Отправка простого SMS через SMPP

// Подключение к SMPP серверу Exolve
$smpp = new SMPP('smpp.exolve.ru', 2775, 'your_system_id', 'your_password', 'YOUR_SYSTEM_TYPE');
$smpp->bindTransceiver();

// Отправка SMS
$from = 'YOUR_ALPHA_NAME';
$to = '79991234567';
$message = 'Ваш заказ подтвержден';

$smpp->sendSMS($from, $to, $message, [
    'data_coding' => SMPP::DATA_CODING_UCS2, // Для кириллицы
]);

$smpp->close();

Отправка составного SMS через SMPP

// Подключение к SMPP серверу Exolve
$smpp = new SMPP('smpp.exolve.ru', 2775, 'your_system_id', 'your_password', 'YOUR_SYSTEM_TYPE');
$smpp->bindTransceiver();

// Отправка составного SMS
$from = 'YOUR_ALPHA_NAME';
$to = '79991234567';
$message = 'Это длинное сообщение, которое будет разделено на несколько частей. Каждая часть будет отправлена отдельно, но благодаря UDH они будут собраны в одно сообщение на телефоне получателя.';

$parts = str_split($message, 67); // Разделяем на части по 67 символов для кириллицы
$total_parts = count($parts);
$reference_number = mt_rand(0, 255);

foreach ($parts as $i => $part) {
    $udh = pack('cccccc', 5, 0, 3, $reference_number, $total_parts, $i + 1);
    
    $smpp->sendSMS($from, $to, $udh . $part, [
        'data_coding' => SMPP::DATA_CODING_UCS2,
        'esm_class' => SMPP::ESM_CLASS_UDHI,
    ]);
}

$smpp->close();

Создание каскадной рассылки через API

$api_key = 'YOUR_API_KEY';
$url = 'https://api.exolve.ru/campaign/v1/Create';

$data = [
    'name' => 'Каскадная рассылка',
    'timezone' => true,
    'cascade' => [
        'elements' => [
            [
                'sms' => [
                    'props' => [
                        'alpha_name' => 'YourShop',
                        'text' => 'У нас новая акция! Посетите наш сайт для подробностей.'
                    ],
                    'ttl' => '60s'
                ],
                'condition' => '1' // Если SMS не доставлено
            ],
            [
                'voice_message' => [
                    'props' => [
                        'voice_message_id' => 'YOUR_VOICE_MESSAGE_ID',
                        'from' => '79991112233'
                    ]
                ]
            ]
        ]
    ],
    'schedule' => [
        'days' => [
            'mon' => [
                'intervals' => [
                    [
                        'from' => ['hours' => 10, 'minutes' => 0, 'seconds' => 0, 'nanos' => 0],
                        'to' => ['hours' => 18, 'minutes' => 0, 'seconds' => 0, 'nanos' => 0]
                    ]
                ]
            ],
            'tue' => [
                'intervals' => [
                    [
                        'from' => ['hours' => 10, 'minutes' => 0, 'seconds' => 0, 'nanos' => 0],
                        'to' => ['hours' => 18, 'minutes' => 0, 'seconds' => 0, 'nanos' => 0]
                    ]
                ]
            ]
        ]
    ]
];

$headers = [
    'Authorization: Bearer ' . $api_key,
    'Content-Type: application/json'
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);
echo "Campaign ID: " . $result['campaign_id'];

Отправка SMS с использованием payload

// Подключение к SMPP серверу Exolve
$smpp = new SMPP('smpp.exolve.ru', 2775, 'your_system_id', 'your_password', 'YOUR_SYSTEM_TYPE');
$smpp->bindTransceiver();

// Отправка SMS с использованием payload
$from = 'YOUR_ALPHA_NAME';
$to = '79991234567';
$message = 'Это длинное сообщение, которое будет отправлено через payload. Оно может содержать больше символов, чем обычное SMS, и не требует ручного разделения на части.';

$smpp->sendSMS($from, $to, '', [
    'data_coding' => SMPP::DATA_CODING_UCS2,
    'message_payload' => $message,
]);

$smpp->close();

Эти примеры демонстрируют различные способы использования Exolve для отправки SMS и создания рассылок. Они охватывают такие аспекты, как отправка простых и составных сообщений через SMPP, создание каскадных рассылок через API и использование payload для отправки длинных сообщений.

Отправка SMS при создании заявки на сайте

Довольно распространенный кейс — отправлять SMS клиенту и менеджеру при поступлении новой заявки с сайта. Разберем реализацию на примере компонента Chronoforms.

Это мощный конструктор веб-форм для Joomla, который также умеет создавать опросы, анкеты с многоэтапным заполнением, условной логикой и так далее.

Допустим, у нас есть простая форма заказа обратного звонка со следующими полями:

  • имя

  • телефон

  • удобное время для звонка (select)

Чтобы настроить отправку SMS после заполнения формы:

1. В админке переходим в «Компоненты» -> Chronoforms -> «Управление формами».

2. Открываем форму обратного звонка.

3. Во вкладке «События» добавляем новое событие «После отправки».

4. В качестве действия выбираем «Отправить СМС».

5. В поле «Номер телефона» указываем {phone} - так подставиться номер из поля «Телефон» формы.

6. В поле «Сообщение» пишем текст SMS, например:

   Здравствуйте, {name}! Ваша заявка на обратный звонок принята. Мы перезвоним вам {call_time}. Спасибо за обращение!

7. Заполняем остальные настройки SMS по необходимости.

8. Сохраняем событие и тестируем отправку.

Чтобы отправить SMS менеджеру о новой заявке, нужно добавить еще одно событие «После отправки», но в поле номера телефона уже указать номер менеджера.

Подобная настройка актуальна не только для форм обратной связи, но и для заказов в интернет-магазине, бронирования услуг, регистраций на событие.

Дополнительные триггеры событий для SMS

Помимо заполнения веб-форм есть и другие события на сайте, при наступлении которых будет уместна отправка SMS.

Приведем несколько характерных примеров.

Добавление товара в корзину

Пусть у нас интернет-магазин электроники на Joomla + Virtuemart. Чтобы отправлять SMS при добавлении товара в корзину:

1. Устанавливаем плагин Joomla Plugin SMS Notification

2. В его настройках выбираем интересующий нас SMS-шлюз

3. Указываем событие OnCartAdd

4. В шаблоне SMS пишем: 

   В вашу корзину добавлен {product_name}. Цена {product_price}. Продолжить покупки: {url}

5. Сохраняем плагин и тестируем

Таким способом можно стимулировать пользователей завершать начатые покупки.

Напоминание о неоплаченном счете

Представим, что на сайте выставляются счета клиентам через компонент Joomla Invoices. Если клиент не оплачивает счет в течение 3 дней, имеет смысл отправить ему SMS напоминание.

1. В административной панели идем в компоненты, выбираем Joomla Invoices.

2. Создаем новый шаблон счета.

3. В редакторе шаблона добавляем код для отправки SMS:

$dueDate = $invoice->due_date;
$threeDaysAfter = date('Y-m-d', strtotime($dueDate . '+3 days'));
$today = date('Y-m-d');

if ($today >= $threeDaysAfter && $invoice->status = 'Unpaid') {
  // отправляем SMS
  $phoneNumber = $invoice->phone;
  $message = "Здравствуйте! Напоминаем, что ваш счет №{$invoice->number} на сумму {$invoice->total} просрочен. Пожалуйста, оплатите его в течение 2 дней. Спасибо!";
  sendSMS($phoneNumber, $message);
}

function sendSMS($to, $message) {
  // реализация отправки SMS 
}

4. Сохраняем шаблон счета

Код будет проверять дату выставления счета, и если прошло более 3 дней, а счет еще не оплачен — отправит SMS напоминание клиенту.

Истечение подписки на сайте

Нередки случаи, когда доступ к материалам или сервисам сайта предоставляется по платной подписке. Заранее уведомить клиента о скором завершении подписки будет правильным решением.

Допустим подписки на сайте реализованы через компонент Akeeba Subscriptions.

1. Находим файл /plugins/akeebasubs/plugins/smsreminder.php

2. В нем уже есть метод onSubscriptionExpiring для обработки истекающих подписок 

3. Модифицируем этот метод под отправку SMS:

public function onSubscriptionExpiring($subscription)
{
    if (!$subscription->enabled)
    {
        return;
    }

    $params = $subscription->getParams();
    $daysBeforeExpiration = $params->get('days_before', 0);
    if ($daysBeforeExpiration <= 0)
    {
        return;
    }

    $user = $subscription->getUser();
    $expirationDate = new DateTime($subscription->getExpirationDate());
    $today = new DateTime();
    $today->setTime(0, 0, 0);

    $interval = $today->diff($expirationDate);
    if ($interval->days !== $daysBeforeExpiration)
    {
        return;
    }
    
    $message = "Здравствуйте, {$user->name}! Подписка на наш сервис истекает через {$daysBeforeExpiration} дней - {$expirationDate->format('d.m.Y')}. Продлите подписку на сайте, чтобы не потерять доступ к материалам!";
    sendSMS($user->mobilePhone, $message);
}

Здесь мы проверяем разницу между сегодняшней датой и датой истечения подписки, и если она равна заданному числу дней в настройках — отправляем SMS пользователю с напоминанием продлить подписку.

Аналогично можно поступать с любыми другими событиями на сайте, требующими реакции — изменением статуса заказа, публикацией нового контента, активностью пользователя и т.д.

При грамотном использовании SMS-уведомления могут принести немалую пользу бизнесу и повысить удовлетворенность клиентов.

Заключение

Интеграция Exolve и других сервисов в вашу Joomla-систему открывает новые возможности для коммуникации с клиентами. Используя SMPP-протокол или API, вы можете создавать эффективные оповещения, которые дополнят ваши email-кампании.

Помните о важности соблюдения технических требований и оптимизации ваших рассылок. Регулярно анализируйте эффективность ваших SMS-кампаний, экспериментируйте с различными подходами и всегда учитывайте предпочтения клиентов.

Комментарии (6)


  1. Sulpher
    01.10.2024 10:28

    Похвально, что автор уделил время и подробно там все расписал. Но в статье упоминаются устаревшие решения. Acajoomla настолько древний, что его нет на JED. Компонент рассылок  jNews написан под Joomla 3. А компонент K2 прекратил свое развитие. Не стоило упоминать. Информация ненужная на 2024 год.

    В остальном респект за подробный рецепт.


    1. kernUSR
      01.10.2024 10:28
      +1

      Несомненно, огромное спасибо автору за поддержку интереса к Joomla.

      Но есть предположение, что ресёрч происходил средствами chat gpt или подобных инструментов, у которых весьма своебразное видение трэндов


    1. Sulpher
      01.10.2024 10:28

      Дополню: автору стоит рассмотреть интеграцию с встроенной системой рассылок Joomla 5. в ней можно кастомизировать шаблоны писем.


  1. Tannenfels
    01.10.2024 10:28

    Joomla

    Закопайте стюардессу


    1. mariplus
      01.10.2024 10:28

      так вот и сразу)


    1. Vilos
      01.10.2024 10:28

      Откопайте стюардессу!