Отложенная отправка письма клиенту

Я вам пишу…чет вдруг в субботу.

Эта милая барышня с картинки всем своим видом как бы намекает на тему сегодняшнего обсуждения. Да, речь пойдет о письмах. Я бы даже уточнила – о несвоевременных письмах. И о том, как эту несвоевременность преодолеть функционалом ПланФикса. 

Вообще, тема появилась на форуме, нам задали вопрос – каким образом в ПланФиксе организовать отправку письма, если оно написано на выходных, а отправить нужно в будний день? Не каждый адресат обрадуется письму в выходные, особенно по рабочим вопросам.

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

Там же, на форуме мы предложили еще одно решение этой задачи – через автоматический сценарий. Все таки в век технологий живем, нужно больше действий доверять роботам.

Возможно, среди наших читателей есть те, кто предпочитает смотреть, а не читать — на нашем канале в YouTube появился ролик, демонстрирующий все нюансы настроек. Добавлю-ка я его и в заметку тоже. Артём старался 🙂

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

Пользовательские поля – помощники

Создаем два пользовательских поля:

1. «Следующий контакт с клиентом» — поле типа Дата и время, в нем будет устанавливаться дата и время следующего контакта с клиентом.

2. «Отложенное письмо» — Поле типа Текст, в нем будет храниться текст письма.

Добавляем эти поля в шаблон — это мы уже умеем,  процесс подробно описан в этой статье Справочного центра.

Сценарий, который работает без выходных

Вот настроенный сценарий, который отправляет письмо в установленную дату:

Сценарий для отправки письма
Сценарий для отправки письма.
По клику картинка откроется в новом окне и большем размере.

Теперь разберем по этапам, что делает сценарий. Он сработает в установленный нами момент времени и проверит, есть ли текст письма в поле «Отложенное письмо»:

Первый этап сценария - проверка условий срабатывания
Первый этап сценария — проверка условий срабатывания.
По клику картинка откроется в новом окне и большем размере.

Сценарий выполняет действия от имени того, кто общается с клиентом:

Выбираем, от чьего имени отправляются письма
Выбираем, от чьего имени отправляются письма.
По клику картинка откроется в новом окне и большем размере.

Затем переходит к решительным действиям – отправке письма:

Отправляем письмо клиенту
Отправляем письмо клиенту.
По клику картинка откроется в новом окне и большем размере.

Обратите внимание, в поле «Уведомить об этом» нужно указать ту роль, в которой находится получатель письма в задаче.

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

Тут бы можно было и закончить процесс настройки, но почему бы не создать себе дополнительное удобство — очистить оба поля после отправки письма. Это делаем такой настройкой:

Очищаем поля после отправки письма
Очищаем поля после отправки письма.
По клику картинка откроется в новом окне и большем размере.

Вот и все премудрости. Как видите, ничего сложного, а полезностей много.

Осталось только в карточке задачи, созданной по шаблону с новыми полями, установить дату и время отправки письма. И в поле «Отложенное письмо» добавить текст для клиента:

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

Все, дело сделано. ПланФикс в нужный день в заданное время отправит письмо клиенту. Теперь можно выпить чашечку кофе и сделать легкую разминку. Выходной все-таки.

Этот кейс будет полезен для новичков — любителей поработать на выходных. Опытные пользователи наверняка могут подсказать и другие решения — будет интересно увидеть их в комментариях.


Новостями, кейсами и опытом коллег мы делимся не только в блоге, но и в соцсетях тоже. Мы есть в Facebook, ВКонтакте, Telegram, Twitter и YouTube-канале. Желающие могут подписаться и получать новости оперативно.

24 комментария

  1. Аватар

    Увидел заголовок и преждевременно обрадовался. 🙂 Обращались в поддержку с просьбой реализовать функционал отложенного комментария. И кейс описывали. Он может быть не только про внешний контакт. Некоторые руководители, например, любят разгребать текучку, либо вечером (после рабочего дня), либо утром (непосредственно, до рабочего дня). Ну и в выходные порой, да. А значит им нужно дать ответы и/или задать вопросы своим сотрудникам. Нормальный руководитель не хочет беспокоить своих сотрудников рабочими уведомлялками за пределами рабочего времени, он хочет написать комментарий и запланировать его отправку на рабочее время. Этого функционала нет, а он очень нужен.
    Ну и да, городить огород из сценария и доп. полей на микродействие (а в парадигме нового чат-интерфейса это именно так уже воспринимается) – это перебор. Хорошая попытка, но нет. Ждем нормального функционала отложенных комментариев.

    1. Аватар

      Я в основном работаю по поздним вечерам/ночам и в выходные своих сотрудников, поэтому полностью поддерживаю запрос на добавление отложенной отправки комментария. Крайне необходимая вещь. И для задач с сотрудниками и для уведомлений внешних контактов. Сейчас ооочень часто оставляю комментарии сотрудникам, написанные ночью, в режиме черновика, чтобы не беспокоить сотрудников, а потом на следующий день отправляю их. Основная проблема ещё и в том, что этот мой “следующий день” начинается тогда, когда рабочий день сотрудников уже заканчивается и выполнить нужное они могут только уже в следующий свой рабочий день, а могли бы в этот, прямо с утра. И всегда стоит дилема “Что делать?”: будить среди ночи уведомлялкой и будет всё сделано с утра или же не будить и будет сделано через день…

      P.S. Кстати, одна из причин перехода из общения в Вайбере на общение в Телеграм – это была как раз возможность отложенной отправки и отправки без звука.

  2. Аватар

    Я однажды писал о необходимости отложенной отправки комментария, независимо от канала связи.
    Например, это может быть полезно:
    1. Комментарий отправили клиенту, вместо того, чтобы отправить сотруднику (это самое неприятное)
    2. Допущенные ошибки в комментарии
    3. Случайно отправленный недописанный комментарий
    4. Ситуация из задачи – отправка после выходных\утром

    Было бы неплохо иметь такую возможность. Или хотя бы задержку в 5-10 сек перед фактической отправкой уведомления получателю с момента нажатия “отправить” – чтобы было время включить заднюю))

  3. Дмитрий Гончаренко

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

    1. Почему не сделать нативную задержку отправки?
    – Потому что нужна она мало кому и изредка, а мозолить глаза в интерфейсе будет всем и всегда. Даже если это маленькая галочка или отдельный пунктик. Даже если включать в настройках отдельного сотрудника. Все это дополнительно нагружает и так не самый простой интерфейс системы и ухудшает юзабилити. Поэтому мы очень придирчиво оцениваем каждую новую “галочку”, особенно в таких частых операциях, как добавление комментария. В данном случае соотношение “польза/вред” мы оцениваем как недостаточное для того, чтобы в это ввязываться.

    2. Почему в принципе не откладывать отправку всех комментариев до начала рабочего времени?
    – Подробно отвечал ранее в соответствующей теме на форуме.
    https://forum.planfix.ru/viewtopic.php?f=42&t=3844&p=32804

    3. Почему не сделать задержку или отмену в течение 5-10 сек как в Gmail?
    – Можно, но очень затратно в плане поддержания (существенно повышает требования к серверным мощностям для работы дополнительных очередей) + создает поле для накладок (“задержанный” комментарий добавился в задачу позже, чем отправленный без задержки другим пользователем и т.п.). Задача лежит в очереди, но не двигается.

    Отдельно скажу, что подход “Настрой себе сам как нужно” это не костыли, а один из столпов, на которых стоит ПланФикс 🙂

    1. Аватар

      Здравствуйте, Дмитрий. Спасибо за ответ. Поскольку последняя Ваша ремарка имеет отношение к моему комментарию в Телеграм, считаю правильным ответить и развить тему.
      1. “Настрой себе сам как нужно” в контексте переписки со Степаном было про цифровую гигиену, а не про сам Планфикс и его столпы.
      2. Еще раз внимательно перечитал тему на форуме. С момента нашего обращения по этому вопросу там мало что изменилось. Без ответа остаются вопросы:
      2.1. Почему отложенные напоминания не несут в себе такой серьезной нагрузки, а отложенные комментарии – да? В чем принципиальная разница, вроде же в рамках одной сущности мыслим (действия же)?
      2.2. Почему основным вариантом рассматривался “накопились и гавкнулись одним общим скопом”? Каким принципиальным столпам мешает реализация отложенных комментариев по конкретному таймингу? Как в ТГ – выбрал дату и время и отложил в отправку? На пользовательской стороне это не будет выполнять эффект “размазывания” нагрузки?
      2.3. Ок, даже если в ПФ это будут затыки в очереди, на форуме писали, что в API Телеграм есть отложенные. Почему бы не подружить бота с этим функционалом и полностью снять вопрос нагрузки со стороны ПФ?

      В заключении скажу прямо, но не в обиду, а на подумать. Дмитрий, складывается впечатление, что действительно важные фичи, которые прям повлияют на продуктивность менджмента, часто пролетают мимо стека разработки исключительно потому, что о них не говоря в публичной плоскости. Ну или команда ПФ так отмазывается от трудоемких задач – ссылаясь на отсутствие запроса. Нет запроса – нет места в стеке. Это как с обещанными несколько лет назад личными задачами (вы не представляете, какой велосипед я себе накрутил, чтобы реализовать в ПФ метод работы с потоком по Дорофеевским Джедайским техникам!). Откровенно говоря, я всю команду перетащил и партнеров уговорил на смену CRM именно из-за планов по личным задачам.

      Опираться на публичный фидбэк в стратегических (и обещанных, повторюсь уже давно) решениях не всегда корректно. Публичный фидбэк, зачастую, дает сообщество интеграторов и методистов/идеолгов, которые занимаются внедрением как ремеслом. Им личные задачи или отложенные комментарии не очень актуальны. Хотите объектива – проведите массовый опрос пользователей, как это делают многие продукты. Прям, чтобы конечный пользователь получил уведомление (задачу) и прошел опрос. И спросите – где у них болит. Может оказаться, совсем не там, где вы “щупаете”.

      С уважением к труду команды Планфикс.

      1. Дмитрий Гончаренко

        Здравствуйте, Артём!

        1. Я без персоналий, просто все, что бросилось в глаза постарался собрать в одном комментарии)

        2. Давайте лучше со всем этим продолжим на форуме – я не зря на него дал ссылку. комментарии в блоге плохо приспособлены для длинного общения, да и пользы там будет больше. Можете прямо эти вопросы там разместить, я отвечу.

        По заключению:

        – Мы опираемся не столько на публичную плоскость (ее ограничения понятны и Вы их правильно описали), а на наличие запросов от разных людей. Эти запросы мы собираем по всем каналам, но наиболее ценными являются запросы, которые содержат описания реальных бизнес-ситуации, в которых предлагаемое решение очень поможет. Они, как правило, как раз непубличны и приходят к нам из пользовательских аккаунтов.

        – Собираем мы их не просто “в голову”, а фиксируем в виде ссылок в чек-листе задачи-запроса, чтобы потом получить вот такой фильтр задач, отсортированный по количеству запросов: https://p.pfx.so/pf/rk/Vs8eIR.jpg

        – Это не значит, что потом мы идем строго по этому фильтру. Во-первых, есть стратегические задачи, которые у нас никто не попросит. Во-вторых, по запрашиваемым нужно оценивать сложность разработки и поддержания предлагаемой фичи, которые могут оказаться не в ее пользу. Но в любом случае количество запросов позволяет добавить объективности в наши ощущения “что важнее делать прямо сейчас”. Также это реальная возможность для любой задачи, даже той что мы считаем бесперспективной, набрать голоса и пробиться в релиз. Наше мнение может меняться под влиянием аргументов, так уже было не раз.

        – Конкретно по личным задачам: это очень прикольная фича, я бы сам с удовольствием ей пользовался, т.к. личные дела я фиксирую в ПФ и сейчас их видят мои коллеги-администраторы, что не нужно ни мне, ни им. При этом она сложна в реализации и имеет очень неприятный побочный эффект в виде замедления работы системы для администраторов, даже если они не планируют пользоваться Личными задачами. Объясняется это тем, что сейчас все выборки из базы данных для администраторов не проверяют наличие у них доступа к задачам (на то они и администраторы, чтобы видеть все), а после введения Личных задач должны будут проверять. А это основная составляющая, замедляющая любые выборки задач в ПФ. И эту штуку не вынесешь даже на уровень настроек “Буду/не Буду использовать Личные задачи” – просто все станут работать медленнее. Соответственно, эти 2 фактора (сложность + замедление работы) тормозят появление Личных задач. Хотя даже несмотря на это мы в последнее время уже пару раз их обсуждали и актуализировали проблемы и варианты решения, потому что потребность в ЛЗ никуда не делась.

        Пишу обо всем этом подробно, чтобы дать хоть какую-то картинку того, что находится в “черном ящике” системы принятия решений об очередности доработок ПФ. Лень раработчиков и нежелание делать то, что нужно людям, это точно не про нас)

    2. Аватар

      Дмитрий, добрый!
      Эта тема про задержку отправки коммента муссируется на форуме года так с 2017 ))
      https://forum.planfix.ru/viewtopic.php?f=48&t=3964&p=21082

      Разве там серверные мощности нужно дополнительно задействовать? Насколько я понимаю, это реализуется именно на тонком клиенте (браузере) по js-таймеру, например (собственно, другого варика и нет).
      1. Коммент отправлен (на самом деле, никакой запрос никуда еще не ушел из брузера), повисла кнопка/ссылка “Отменить отправку” и обратный отсчет.
      2. Оператор ЭВМ нажал “Отменить отправку” и фсё. Никакие сервера и очереди не подключались.

        1. Аватар

          В разрезе Планфикс – да, без серверной части Планфикс не обойтись (или сидеть и не выключать клиентскую … тот же браузер).

          Но тут есть три момента:
          – если рассматривать только почтовые отправления, то можно использовать возможности почтового сервера (но не совсем «правильно», кроме почты есть куча направлений …)
          – можно переложить на клиентскую часть, например на мобильное приложение (оно ведь «никогда не спит», в отличии от браузера). То есть комментарий отображается отложенным, а подтолкнуть его в назначенное время может любой браузер под любым пользователем, который имеет доступ к этой задаче или мобильное приложение у пользователя, имеющего доступ к задаче с отложенной отправкой (так например работает тот же WordPress,когда нет доступа к cron (режим по умолчанию)
          – реализация отложенных уведомлений на уровне сервера силами Планфикс, несёт на сервера гораздо меньшую нагрузку, чем аналогичный сценарий созданный пользователем, то есть вообще непонятного почему не реализовано (к дополнению к комментарию Артема)

          1. Дмитрий Гончаренко

            Любая попытка переложить эту работу на клиент – неважно, браузер или приложение – неизбежно будет приводить к тому, что в ощутимом проценте случаев сообщения не будут доставляться вовремя или вовсе. Гарантированно это будет работать только при серверном решении.

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

            1. Аватар

              По опыту – больше не добавляют. И вообще забывают, что такая функция есть.

              А вот запросы «как отменить письмо, я его отправила а потом перечитала» – относительно частые (очень относительно, тоже редкие), из-за чего приходится в некоторых организациях делать отложенную отправку всех писем по всем (и тогда в течении, например 10 минут, можно «отменить» письмо)

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

              Все это легко реализуется на любом корпоративном почтовом сервере (по сути их только «два»: Lotus Domino и Exchange,первый в России редкость, второй – повсеместен)

              Что касается нагрузки. То с точки зрения реализации это ничем не отличается от напоминаний. Просто еще один тип невидимого напоминания (который меняет статус комментария и реально его отправляет …). Сама отправка комментария – те же ресурсы сервера. Реализация – явно «проще» на уровне сервера и ближе к «ядру» – то есть занимать серверного времени и мощностей будет меньше (намного ли меньше – тут вам виднее, возможно не намного).

              Более того, никто не мешает совместить отправку уровня клиента и уровня сервера (сервер подключается тогда, когда клиент не отработал). Это правда требует транзакционности (но тут уже ваша внутренняя кухня … стоит ли овчинка выделки). И не только в отложенных комментариях.

              1. Дмитрий Гончаренко

                Есть ощущение, что мы говорим о разном. Я в своих комментариях говорю исключительно о кейсе “Отправка уведомлений утром / в назначенное время нужного дня” и не касаюсь кейса “Отправлять сообщения с автозадержкой в ХХ секунд/минут”. Это разные кейсы и технологические решения для них тоже могут быть разными.

                Это я не только о последних комментариях Андрея, а о предыдущем комментарии Дениса тоже.

    3. Аватар

      1. В чём глобальная разница между Напоминанием с текстом в определённое время и воображаемым “Отложенным комментарием”?

      Интерфейс не перегрузиться из-за одного выпадающего списка https://cln.sh/adMlux

      2. Согласен, что аккумулировать очереди сообщений в каком-либо брокере − плохая идея.

      3. Не должно создать нагрузку на сервер. Кейс − увидел что отправил “не то”, и по-быстрому отменил. Задержка перед отправкой − должна отрабатывать на клиенте(в браузере), условный setTimeout оборачивающий вашу функцию отправки на onclick с кнопки Отправить (технически конечно чуть сложнее, но суть понятна, и что нагрузки на бэкенд не будет)

      =====

      Способ описанный в посте/видео − слабоприменим на аккаунтах где много шаблонов и процессов.

      1. Дмитрий Гончаренко

        1. Глобальной разницы нет. Просто еще одна “пимпочка” в интерфейсе.

        3. Нельзя без этого. Будут вечные срывы и жалобы. Мы исследовали этот момент, все удачные решения (тот же GMail, например) используют серверную задержку, а не играются на клиенте.

        1. Аватар

          1. Странно что глобальной разницы нет, и в теории это может релизнуться в простом виде, а сейчас решение предлагается в стиле “Челленж: Проходим Dark Souls на руле и педалях” (Минимум ещё два владельца аккаунтов с 10+ шаблонов и процессов думают так же).

          3. Я постараюсь вспомнить и скинуть в саппорт пример реализации. Точно что-то было с выносом из основного потока в service worker.

  4. Аватар

    Мда, тяжелый случай …
    Сценариями (и гораздо более сложными, на самом деле) это реализуется.
    Но к «отложенной» отправке не имеет абсолютно никакого отношения.
    Совсем. Это просто сценарий, нагружающий ваши сервера, и да, вид сбоку это «отложенная отправка» … но что делать если отправить нужно прямо сейчас? А как все письма наружу делать отложенными ??????

    Отложенная отправка прекрасно реализована в Exchange сервере (тот же Офис 365). И все что нужно для реализации, работа с почтой по протоколу MAPI (реализуется крайне просто на JS,так на внутренний портал вывести число непрочитанных писем – пара строчек на JavaScript …. которые абсолютно не нагружают сервер!!! (Клиент по факту напрямую запрашивает почтовый сервер).

    Перегруженный интерфейс? Вы о чем? Сделайте как в WEB Outlook.Кнопка «Отправить» со стрелочкой вниз. Простое нажатие – отправка с настройками по умолчанию (сразу или с определенной задержкой). На стрелочку вниз – выбираешь дату и время отправки. Письмо до отправки можно изменить или отменить отправку …

    И это функционал должен быть (имхо) всего Планфикс!!!! Да, если в уведомлении участвует почтовые адреса, возможно стрелочка должна появляться только для почтовых серверов, поддерживающих такую работу.
    И когда отправить «действие» сейчас или в конкретную дату должно быть и в сценариях …

    Не хотите использовать MAPI и чтобы оно работало с любой почтой – значит реализация на уровне Планфикс. Внутри это будет тот же сценарий, но отображение!!! Отображаться комментарий должен соответствующим образом (что он в процессе отправки и его еще можно изменить … и если комментарий позже отправлен сразу, они должны меняться местами, и видно должно быть сразу, а не поиском определенного поля …. и полей таких не заводить целую кучу, ведь отложенных действий/комментариев по одной задаче может быть множество!!!!)

    1. Аватар

      При всё удобстве MS Exchange (тут ещё отзы́в непрочитанного письма можно припомнить), не все могут сделать его себе бесплатным, а платный будет выходить дороже Планфикса.

      Не думаю что разработчики будут переводить работу всех емайлов с простого понятного smtp/imap на какие-либо проприетарные протоколы.

      1. Аватар

        Для отложенного комментария нужно сделать всего две вещи:
        – галка (с датой и временем), что комментарий отложенный
        – выделять отложенный комментарий другим цветом

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

        В этом случае не нужно:
        – отдельное поле с отложенным комментарием
        – отдельное поле с файлами, которые нужно добавить в комментарий
        – отдельное поле с контактами, которых нужно уведомить (при этом как-то проверить, что у них задано поле e-mail …)

        Поле с датой отложенного уведомления, – да нужно в обоих случаях.

        Что касается интеграции с Exchange. Офис 365 стоит копейки, на самом деле его не сложно оформить и бесплатно (мы помогаем, например, будет с некоторыми ограничениями но полностью бесплатно).
        При этом да, это отдельная интеграция, и Планфикс ее реализовывать имеет смысл, только для разгрузки своих серверов (тогда отложенное уведомление ложится на плечи почтового сервера, и легко отменяется …)

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