Триггерные рассылки (отложенные сообщения)

Shop-Script умеет автоматически отправлять email- и SMS-уведомления покупателям через некоторое время после изменения статуса заказа. Такие отложенные по времени сообщения называются триггерными рассылками.

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

Как настроить отправку триггерных рассылок

  1. Для создания новой рассылки перейдите в раздел бекенда Shop-Script «Настройки → Триггерные рассылки» и щелкните «Новое сообщение».
  2. Укажите название сообщения — оно не будет показано получателям, но будет отображаться в бекенде для вашего удобства.
  3. Выберите транспорт, т. е. способ отправки уведомления: email или SMS.
    Для отправки SMS-уведомлений установите в «Инсталлере» плагин интеграции с SMS-провайдером и настройте подключение к провайдеру в разделе «Настройки» (секция «SMS») в бекенде Shop-Script.
  4. Укажите правила отправки сообщения:
    • через сколько часов после перехода заказа в указанный статус нужно отправлять сообщение
    • нужно ли отправлять уведомление для повторных заказов покупателя
  5. Выберите источник заказа, для которого должна срабатывать рассылка.
  6. Выберите отправителя уведомления.
  7. Введите тему сообщения, если выбран email-транспорт.
  8. В поле «Текст сообщения» подставится стандартный шаблон, в котором при отправке каждого сообщения вместо переменных будут подставлены актуальные значения. Например, переменная {$order.id_str} будет заменена на номер того заказа, о котором отправлено уведомление. Для просмотра полного списка доступных переменных используйте ссылку «Шпаргалка» в нижней части страницы.
  9. Настройте задачу cron для автоматической отправки триггерных рассылок. Это необходимо для того, чтобы отправка могла выполняться без вашего участия. Щелкните по ссылке «Как настроить» в боковой панели, скопируйте текст команды из всплывающей области и укажите эту команду при создании задачи cron в контрольной панели вашего хостинга.


Как настроить задачу cron в облаке Webasyst

В приложении «Облако» откройте раздел «Задания cron» и нажмите «Добавить задание cron».

Заполните поля, как показано на рисунке, и кнопкой подтвердите добавление задания.


27 комментариев

  • +1
    Нафаня Домовенок Нафаня Домовенок 10 января 2016 16:24 #

    Добрый день,

    Не получается включить cron на хостинге nic.ru

    • +1
      Нафаня Домовенок Нафаня Домовенок 15 января 2016 13:34 #

      Все настроено.

      Вот что выдается в результате на почту админу:

      Cron: 0 1 * * * www-data /usr/bin/php -q /home/*******/*****.ru/docs/cli.php shop OrderreminderSendnotif

      /bin/bash: 0: command not found

    • +1
      Юлия Юлия 17 января 2016 15:09 #

      Та же проблема.

      Служба поддержки хостинга говорит что Для запуска php-скрипта можно воспользоваться следующей командой:

      cd /home/*******/*****.ru/docs/ && /opt/php/bin/php -c /home/*******/etc/php.ini /home/*******/*****.ru/docs/cli.php

      И более ничего не должно быть в этой строке, т. к. команда такого типа:

      cd /home/*******/*****.ru/docs/ && /opt/php/bin/php -c /home/*******/etc/php.ini /home/*******/*****.ru/docs/cli.php shop followup

      или

      /opt/php/bin/php -c /home/mosbaby/etc/php.ini /home/mosbaby/mosbaby.ru/docs/cli.php shop followup

      ни к чему не приводит

      Или предлагают вариант адрес скрипта с параметрами.

      /usr/local/bin/wget -O - -q "http://nic.ru/cron.php?var1=xxx&var2=yyy"

      Но где взять эти параметры? Помогите!

      • +1
        Михаил Ушенин Михаил Ушенин Webasyst 18 января 2016 01:24 #

        Похоже, что это ограничение используемого вами хостинга. Если вам не удастся добиться от администрации хостинга обеспечения поддержки параметров при вызове PHP-скрипта в консольном режиме, видимо, остаётся только сменить хостинг.

        Попросите администрацию хостинга пояснить, чем вызвано введение такого ограничения.

        • +1
          VladimirZ VladimirZ 30 мая 2016 23:37 #

          Вот так вроде должно работать

          sh - c "/opt/php/bin/php -c $HOME/etc/php.ini $HOME/домен/docs/cli.php shop followup"

        • +2
          Игорь Игорь 23 января 2016 07:24 #

          Помогите, пожалуйста, найти решение.

          Отложенные сообщения, формирует разные ссылки при ТЕСТОВОМ сообщении и НАСТОЯЩЕМ (по крону, через 14 дней).

          При отправке тестового сообщения всё нормально, формирует ссылку вида: https://site.com/tovar/

          При отправке реального отложенного сообщения через 14 дней клиенту формирует ссылку: https://site.comhttp//site.com/tovar/

          (Вставляет посередине лишнее "http//site.com" причем без двоеточия.)

          При этом в письме есть еще ссылки на главную и в личный кабинет. Они "нормальные".

          В шаблоне сообщения указано так, как советовал Михаил на форуме https://support.webasyst.ru/936/otlozhennye-soobsh...

          <ul>
          {foreach $order.items as $item}
          {$product = $wa->shop->product($item.product_id)}
          {$product_url = $wa->shop->productUrl($product)}
          <li><a href="https://site.com{$product_url}reviews/"  target="_blank">{$item.name|escape}</a></li>
          {/foreach}
          </ul>

          CRON настроем так:

          @daily

          php /var/www/user/data/www/site.com/cli.php shop followup


          Если тестовое сообщение с правильными ссылками, значит проблема в CRON? А может в комбинации смарти+крон?

          • +1

            Как временное решение проблемы можно предложить что-то вроде:

            {$product_url = $wa->shop->productUrl($product)|replace:'http//site.com':''}

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

            • +2
              Игорь Игорь 23 января 2016 12:48 #

              Ничего не меняет. Все равно https://site.comhttp//site.com/tovar/

            • +2
              Игорь Игорь 28 января 2016 07:19 #

              Протестировал в облаке вебасист - та же история. Добавляет http//site.com

              |replace:'http//site.com':'' - не помогает

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

            • +2
              Алексей Алексей Webasyst 28 января 2016 07:32 #
              Попробуйте
              <ul>
              {foreach $order.items as $item} {$product=$wa->shop->product($item.product_id)} <li><a href="{$wa->shop->productUrl($product)|replace:'http//':'http://'}reviews/" target="_blank">{$item.name|escape}</a></li>
              {/foreach}
              </ul>
              • +1
                Игорь Игорь 28 января 2016 10:09 #

                УРАА!!! Так работает. В тестовом сообщении ссылки кривенькие, а для крона - то что надо.

                Спасибо!

              • +1
                Игорь Игорь 28 января 2016 12:26 #

                Да. Только странно все это. Делаю так:

                |replace:'http//':'https://'}

                Ему не важно - пишешь ты http:// или https://

                Ссылки кликабельные но http:// в любом из двух случаев. Не критично, конечно, но мутно.

              • +2
                Гаврила Гаврила 18 марта 2017 00:28 #

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

                Проблеме уже больше года. Неужели так и не найдено нормальное решение?

              • +1
                Денис | shopMURANO.ru Денис | shopMURANO.ru 22 марта 2016 02:56 #

                В исходном сообщении указано, что:

                Оплаченным заказ становится, после того как с ними будет выполнено действие «Оплачен» или «Выполнен».

                По факту, отложенное сообщение отправляется только после действия "Оплачен". Есть ли опция по выбору статуса заказа, после которого отправляется отложенное сообщение?

                • +1
                  Денис | shopMURANO.ru Денис | shopMURANO.ru 9 февраля 2017 13:11 #

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

                • +1
                  Марина Лернер Марина Лернер 14 марта 2017 20:25 #

                  Подскажите, у нас есть свойство товара — срок годности. Хотим отправлять триггерные рассылки пользователю по истечении данного срока. Как мы поняли сейчас предусмотрено автоматическое отправление писем с привязкой к заказу (к одному из выбранных статусов), а нужно привязать к товару. Есть ли подобные плагины или может что-то планируется?

                  • +1
                    Михаил Ушенин Михаил Ушенин Webasyst 15 марта 2017 09:37 #

                    Пока таких планов нет. Но вы можете повлиять на их появление, добавив пожелание в хабе поддержки: https://support.webasyst.ru/ideas/. Списком идей в этом разделе пользуются разработчики Webasyst и другие разработчики плагинов (в списке плагинов есть функция поиска).

                  • +1
                    Александр Элс Александр Элс 1 сентября 2017 06:51 #

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

                    Баланс вашего бонусного счета: <strong>{number_format(round($customer.affiliate_bonus, 2), 2)}</strong>

                    Выводится 0. Видимо пользователь не подтягивается. Можно ли это исправить?

                    • +1
                      Михаил Ушенин Михаил Ушенин Webasyst 1 сентября 2017 11:37 #

                      Если у вас есть доступ к исходному коду, попробуйте в файле wa-apps/shop/lib/actions/settings/followups/shopSettingsFollowupsTest.controller.php после

                      try {
                          $contact = $o['contact_id'] ? new shopCustomer($o['contact_id']) : wa()->getUser();
                          $contact->getName();
                      } catch (Exception $e) {
                          $contact = new shopCustomer(wa()->getUser()->getId());
                      }

                      добавить

                      $contact_data = $contact->getCustomerData();
                      foreach (ifempty($contact_data, array()) as $field_id => $value) {
                          if ($field_id !== 'contact_id') {
                              $contact[$field_id] = $value;
                          }
                      }

                      И в файле wa-apps/shop/lib/cli/shopFollowup.cli.php после строки

                      $contact = new shopCustomer($o['contact_id']);

                      добавьте то же самое:

                      $contact_data = $contact->getCustomerData();
                      foreach (ifempty($contact_data, array()) as $field_id => $value) {
                          if ($field_id !== 'contact_id') {
                              $contact[$field_id] = $value;
                          }
                      }
                    • +1
                      Александр Парусов Александр Парусов 13 сентября 2017 10:38 #

                      Добрый день,

                      разъясните, пожалуйста логику работы триггерных рассылок:

                      1. как работает отправка при указании: "Отправлять через 336 часов после перевода заказа в статус Выполнен" ? Похоже, что у нас пошла рассылка всем клиентам, которые очень давно делали заказ, а не только 336 часов назад.

                      2. где можно увидеть кому и когда было отправлена триггерная рассылка (в бэкенде, в текстовом логе, в БД, ...)?

                      3. как плагин определяет что по заказу уже была рассылка?

                      • +2
                        Михаил Ушенин Михаил Ушенин Webasyst 13 сентября 2017 11:13 #

                        1. Возможно, у вас в таблице shop_followup в поле last_cron_time не сохранилось время настройки триггерного сообщения. Если там хранится значение NULL, то рассылка отправится всем клиентам с подходящими заказами со времени создания магазина. Проверьте, пожалуйста.

                        Если там хранится NULL, удалите это триггерное сообщение из настроек магазина и создайте новое. После этого в поле last_cron_time должно сохраниться обновлённое время. Если так и произошло, то все следующие триггерные рассылки будут отправляться только нужным клиентам.

                        Почему могло раньше не сохраниться правильное значение времени , сказать не возьмусь — возможно, это ошибка в одном из обновлений магазина.

                        2. Факт отправки триггерной рассылки записывается в историю соответствующего заказа.

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

                      • +1
                        Александр Парусов Александр Парусов 13 сентября 2017 11:24 #

                        Спасибо

                      • +1
                        Петр Петр 3 ноября 2017 17:52 #

                        Добрый день. В триггерных рассылках я настроил, несколько заданий. Чтобы после того как был поставлен определенный статус высылалось соответствующее уведомление. Я выбрал во всех заданиях один и тот же статус клиента: Выполнен, но выбрал разные интервалы:

                        720 часов, 1440 часов, 2160 часов

                        Вопрос будет ли это работать следующим образом, что сначала после выбора статуса сервис высылает уведомление через 720 часов, потом 1440 часов ну и так далее?

                        Крон в облаке настроил. Речь про одного и того же клиента, но через разные интервалы времени

                        • +1
                          Михаил Ушенин Михаил Ушенин Webasyst 7 ноября 2017 11:13 #

                          Да, именно так. Всё, что вы указали в настройках каждой триггерной рассылки, относится только к этой рассылке, и она будет отправляться независимо от других настроенных рассылок.

                          Добавить комментарий

                          Чтобы добавить комментарий, зарегистрируйтесь или войдите