Как запустить email- и SMS уведомления на Joomla с использованием API

В цифровом маркетинге коммуникация с клиентами играет ключевую роль в успехе бизнеса. Хотя 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.

58aff5f40df7348750acfe8407fdb5cd.png

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Шаг 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}
    
  • {$product->name}
  • {/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, который также умеет создавать опросы, анкеты с многоэтапным заполнением, условной логикой и так далее.

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

    Чтобы настроить отправку 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-кампаний, экспериментируйте с различными подходами и всегда учитывайте предпочтения клиентов.

    © Habrahabr.ru