переотправка автоматических отчетов

Добрый день.
предлагаю ввести функцию ручной переотправки отчетов, формируемых автоматически.
бывает необходимо, если вдруг не дошло письмо по какой-либо причине.
также предлагаю ввести несколько дополнительных опций в функционал автоматических отчетов:
1 - проверка целостности отправляемых данных (иногда отправляется суточный отчет с неполными почасовыми данными - это не есть хорошо, напрягает получателя)
2 - актуальность отчета в днях, в случае, если отчет не ушел с сервера по причине отказа почтовой службы, нужно ли его переотправлять в следующие сутки или в течение нескольких суток (актуальность подразумевает под собой очередь актуальных отчетов по принципу pipe.
3 - связанный с предыдущим пунктом - проверка результата отправки отчета. (а - отлуп сервера; б - ответ о получении от получателя)

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

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

  1. готовы обсудить в отдельной теме
  2. уже есть в списке вопросов (очередь отправки для SMS и e-mail сообщений)
  3. поясните подробнее - непонятно чего вы хотите от системы после проверки результата

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

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

Как определить отсутствие ответа получателя?

Ваше описание алгоритма какое-то путанное. Общепринятый порядок действий обычно следующий:

  1. При отправке сообщение помещается в очередь
  2. Сервер сканирует очередь с заданным интервалом, выбирая сообщения у которых подошло время отправки и пытается отправить их
  3. При успешной отправке сообщение удаляется из очереди
  4. При ошибке отправки, время отправки сообщения сдвигается в будущее на заданный интервал
  5. Сообщение остается в очереди, пока не будет отправлено, удалено пользователем или не истечет время, отведенное на отправку сообщения

Максимальное время пребывания сообщения в очереди может задаваться как для отдельного сообщения, так и для всей очереди (например, через системные параметры). Успешной отправкой считается факт отправки SMS-сообщения через GSM-модем или передача e-mail сообщения SMTP-серверу.

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

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

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

P.S. В будущем мы хотим реализовать сводку по объекту учета, которая бы открывалась при двойном щелчке по объекту (этот вопрос не влез в голосование, т.к. там лимит в 10 вопросов). Одним из элементов сводки будет список последних сформированных отчетов, с возможностью быстрой печати, экспорта и отправки.

Достаточно определить получение письма сервером адресата. (уведомление о доставке, уведомление о прочтении, SMTP и клиентские почтовые программы такое умеют). Хотя, для меня этот функционал находится ниже чем ручная переотправка или валидация полноты данных при отправке

Ваше описание алгоритма какое-то путанное. Общепринятый порядок действий обычно следующий:

  1. При отправке сообщение помещается в очередь
  2. Сервер сканирует очередь с заданным интервалом, выбирая сообщения у которых подошло время отправки и пытается отправить их
  3. При успешной отправке сообщение удаляется из очереди
  4. При ошибке отправки, время отправки сообщения сдвигается в будущее на заданный интервал
  5. Сообщение остается в очереди, пока не будет отправлено, удалено пользователем или не истечет время, отведенное на отправку сообщения

Максимальное время пребывания сообщения в очереди может задаваться как для отдельного сообщения, так и для всей очереди (например, через системные параметры). Успешной отправкой считается факт отправки SMS-сообщения через GSM-модем или передача e-mail сообщения SMTP-серверу.

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

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

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

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

Почти год спустя предлагаю вернуться к теме. Это актуально до сих пор.

В версии 3.07 R18 будет переработана очередь отправляемых сообщений. При отправке сообщения (SMS или email) сервер проверяет прошла ли отправка успешно. Если был какой-то сбой (недоступен GSM-модем, или SMTP-сервер вернул ошибку), сообщение будет поставлено в очередь ожидания и будет произведена ещё одна попытка отправки через 30 минут. Попытки будут производиться до тех пор пока не истечёт “время жизни” сообщения. По умолчанию этот параметр равняется одним суткам.

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