r13 - 21 Mar 2013 - 15:49:51 - Sergej ZnamenskijYou are here: TWiki >  IS4UGP Web > EMailConference

Рассылка оповещений о важных датах конференции.

События, которые требуют оповещения

Начало приема тезисов.

  • За два месяца до события. Письмо о конференции должно быть отправлено всем персонам системы.

Завершение приема тезисов.

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

Распределение статей на рецензирование

  • За неделю. Письмо о собрании ПОК. Оповестить членов ПОК о проведении собрания, на котором будут распределяться статьи по рецензентам.
  • Сразу после. Всем рецензентам отправляется приглашение принять участие в рецензировании.

Как организовано оповещение

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

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

Универсального и простого интерфейса для создания и рассылки таких писем нет. Проблема сейчас решается так:

на сервере edu.botik.ru есть несколько скриптов, которые собирают нужную информацию, формируют письмо и отправляют выбранным персонам. Администратор следит за основными датами, в определенный момент администратор запускает нужный скрипт.

Важно! Скрипты приходится иногда подстраивать под новую конференцию. Запускать их без предварительной проверки категорически не рекомендуется.

Пример

Рассмотрим на примере одного скрипта принцип работы.

При помощи скрипта мы будем рассылать информацию о конференции всем персонам системы.

#!/usr/bin/perl

use utf8;
use open ":utf8";
use Encode;

use Data::Dumper;
use Nadmin::Upis;

# путь до директории, в которой лежат файлы базы данных
my $path = "/var/local/lattice";

# логин пользователя, от имени которого будем отправлять письма
my $login = 'tiel';

my $node = '0';
my $upis = new Nadmin::Upis($path, $login, $login);

# строим пользовательское дерево, хэш $nodes содержит данные, доступные пользователю 
my $nodes = $upis->get_personal_tree('0','0', time());

1. Формируем хэш, который в качестве ключей содержит id персон, которым мы будем отправлять письмо.


# получаем список персон, у который есть роль @user_with_person, то есть, список
# персон, которые прошли до конца регистрацию, имеют вход в систему. 
#my %persons_to_mail = map {$_ => 1} @{$nodes->{$node}->{'list_user_with_person'}->[0]->[0]};

# для отладки скрипта можно попробовать для начала отправить письмо себе, здесь 253 это id 
# персоны пользователя tiel, 
my %persons_to_mail = (253 => 1);

my @persons_id = keys %persons_to_mail;

my $num = 0;

foreach (@persons_id) {
        $num++;

    my $h = {name => $nodes->{$_}->{имя}->[0]->[0]." ".$nodes->{$_}->{отчество}->[0]->[0],
             email => $nodes->{$_}->{email}->[0]->[0],
                         f => $nodes->{$_}->{фамилия}->[0]->[0],
                };

    push @persons, $h;
}

my $str = Dumper(\@persons);
$str =~ s/\\x\{([0-9a-f]+)\}/pack('U', hex($1))/sge;
 
warn $str . "\n". " ------------------------------ \n ";

2. Рассылаем письмо всем персонам из массива @persons. Содержимое письма в данном случае одно и тоже. В теле письма изменяется только обращение к персоне $p->{name} .


foreach my $p (@persons){
        
            if ($p->{email}){
                my $subject = 'XVII Молодежная научная конференция «Наукоемкие информационные технологии»';
               
               # формируем тело письма 
               my $text = 
"Здравствуйте, ".$p->{name}.".\n".

"
XVII Молодежная научная конференция «Наукоемкие информационные технологии»
приглашает ...

Об условиях участия можно узнать на сайте http://edu.botik.ru/sit2013

--
Технический комитет конференции";

#warn $text;

                  my $t_user =  $p->{f}." ( ". $p->{email} ." )";
                  warn $t_user;

                  # пробуем отправить письмо, сохраняем результат вызова функции в $res, для отображения в логе
                  #my $res = Nadmin::Utils::send_mail($to_user, $subject, $text);
                  #warn "$t_user $res \n";
            }   
}
warn "всего писем ". scalar keys %persons_to_mail;

 

-- Nadezhda Zhivchikova - 28 Dec 2012

  • Может быть, за три дня до окончания рецензирования тоже стоит всех известить?
  • Поскольку всё в utf-8, то наверное в скрипте «» вместо «» , здесь так не смотрится потому что на вики такие символы кодировкой не поддерживаются.
-- Sergej Znamenskij - 21 Mar 2013
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r13 < r12 < r11 < r10 < r9 | More topic actions
 
Powered by TWiki

This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback