Здесь вы можете задать любые вопросы по MyChat, по работе программы, её настройке, лицензированию и т.д.
BOPOH89
Добрый день!
Планируем использовать программу у себя на предприятии.
Главным критерием было то, что история переписки хранится на сервере и даже если сотрудник очистил историю, ее все равно можно просмотреть на сервере.
Но есть один вопрос, как я понял история оповещений хранится только локально на клиентах, как ее можно ханить на сервере?
Аватара пользователя
Алексей Пикуров
Здравствуйте. История оповещений (как и история в конференциях, приватах и на доске объявлений) хранится на сервере в обязательном порядке, но в данный момент ещё нет инструмента для её просмотра на сервере.
Аватара пользователя
Алексей Пикуров
P.S. Если есть такая необходимость прямо сейчас, можно сохранять её серверным скриптом в текстовый файл, на сервере. Это не так удобно, как удалённый просмотр в браузере через WEB-интерфейс, однако, лучше, чем ничего.
BOPOH89
Да, нужно сейчас, подскажите как именно это сделать?
Аватара пользователя
Алексей Пикуров
Я напишу скрипт и выложу в этот топик. Оповещение будет сохраняться в текстовый файл.
BOPOH89
Алексей Пикуров писал(а):Я напишу скрипт и выложу в этот топик. Оповещение будет сохраняться в текстовый файл.

Спасибо за поддержку и отличную программу.
Аватара пользователя
Алексей Пикуров
Скрипт реализован, но для этого пришлось немного доработать сервер, в версии 5.2 не было обработчика нужного события на сервере. В 5.3 будет работать, сможете подставить скрипт вот так:
broadcastlogscript.png
Скрипт для MyChat Server, сохраняющий протоколы оповещений

При создании оповещения будет писаться протокол в лог-файл:
broadcastslog.png
Лог-файл, создаваемый скриптом на MyChat Server

Собственно, текст скрипта:
Код: Выделить всё
function OnCreateBroadcast(iCID, iUIN: integer; sUsersList: string; 
                           dtActualTo: double; bMustRead,
                           bReadNotify: boolean; sMsg: string): boolean;
var
  s, sName: string;
begin
  sName := mGetNickFromUIN(iUIN);

  s := 'Who: ' + inttostr(iUIN) + ' (' + sName + '), ' +
       'To: ' + sUsersList + ' must read: ';
       
    if bMustRead then s := s + 'yes' else s := s + 'no';
 
  s := s + ', read notify: ';
 
    if bReadNotify then s := s + 'yes' else s := s + 'no';
   
  s := s + ', actual to: "' +
       DateTimeToStr(dtActualTo, 'dd.mm.yyyy hh:nn') + '", ' +
       'message: "' + sMsg + '"';   
       
  Protocol(s, mGetServerFolder('LOGS') + 'broadcasts.log', true);

  result := true;
end;

begin

end.

Содержимое лога (пример):
Код: Выделить всё
[25.04.2014 20:39:35] Who: 6 (Алексей Пикуров), To: 3, must read: yes, read notify: yes, actual to: "25.04.2014 23:59", message: "L$Привет, как дела? Это тестовое оповещение!"
Аватара пользователя
Алексей Пикуров
P.S. Добавлена информация в список "Что сделано в новой версии".
BOPOH89
Благодарю!
А когда можно будет скачать новую версию?
Аватара пользователя
Алексей Пикуров
Я думаю, в мае уже выйдет, мы сейчас тестируем аудио и видеосвязь, уже почти готово.
Всё, что сделано в готовящейся версии, описываем в теме "Что уже сделано в готовящейся версии MyChat?"
BOPOH89
Добрый день!
С обработчиком событий что-то не так.
Сам скрипт работает и записывает оповещение в лог.
Но при этом у пользователя оповещение не отображается. ( Как бы не приходит).
Как только выключаешь обработчик - все налаживается.
Последний раз редактировалось BOPOH89 Ср май 28, 2014 2:11 pm, всего редактировалось 1 раз.
Аватара пользователя
Алексей Пикуров
Я проверю и отпишу здесь.
Аватара пользователя
Алексей Пикуров
Окей, всё оказалось просто.

В тексте скрипта нужно написать в конце функции: result := true;
Иначе, считается, что функция удаляет оповещение и оно не попадает в базу данных (функция возвращает false). Я поправил свой пост выше с текстом скрипта.