Любые идеи по развитию MyChat. Запросы на новые функции, предложения по улучшению уже работающих сервисов. Если вы знаете, что нужно добавить в MyChat — welcome!
Аватара пользователя
switchman
Я уже предлагал это, еще в новостарой поддержке.

Суть в том, что сотрудники, часто бывает, мигрируют между подразделениями. В таком режиме было бы очень удобно, чтобы и в чате миграция отображалась по-факту. Это можно реализовать, привязав подразделения кампании к NetBIOS -именам компьютеров, установленных в подразделении. Вошедший, в чат, на этом компьютере пользователь, автоматом переводится в текущее подразделение и руководство счастливо! Сейчас, чтобы гарантированно написать в нужное подразделение, смотрим в свойства пользователя. Раз в два месяца - перелопачивание базу, дабы распихать всех по-факту.

ЗЫ: Ждем ФОРУМА, поэтому сидим на 4.14. Если, то, что выше, уже реализовано, прошу прощения!
Аватара пользователя
Алексей Пикуров
День добрый.
switchman писал(а):Я уже предлагал это, еще в новостарой поддержке.

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

Люди физически пересаживаются с компьютера на компьютер? Или ходят по подразделениям компании со своими ноутбуками? Поясните подробнее, я не совсем точно вас понял.
Аватара пользователя
switchman
Именно пересаживаются... Никаких ноутбуков. Проще говоря, подразделения, это магазины сети. Продавцы часто гоняются из магазин в магазин и это большая работа - отслеживать ротацию и оперативно вносить изменения. Сами они никогда этого не сделают.
Аватара пользователя
switchman
Кстати говоря, при миграции с ноутбуками предложение не имело бы смысла. У меня все нетбиос-имена - это идентификаторы магазинов + номер компьютера, у кого-то это могли быть номера кабинетов, названия департаментов.... Если-б я мог, по этим признакам, добавлять компьютеры в подразделения, а пользователей бы по ним раскидывало автоматом, при логине, было-бы ТО, ЧТО НАДО!
Аватара пользователя
Алексей Пикуров
Насколько я понимаю решение проблемы, если бы на сервере был скрипт, который будет сам заниматься этим делом, то было бы круто.

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

Такой вариант вас устроит?
Аватара пользователя
switchman
Безусловно. Спасибо!
Аватара пользователя
Алексей Пикуров
Тогда вам придётся обновиться на последнюю версию. Обновитесь, и совместно с вами сделаем то, что вам нужно.
Аватара пользователя
Алексей Пикуров
Покажите пожалуйста примеры именования ваших компьютеров, несколько разных NETBOIS-имён и соответствия подразделениям, чтобы было ясно, как писать логику скрипта.

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

Скрипт вешается на событие OnUserLogin (не забудьте галку "Включить скрипт"):
netbiosnamestocompanydepartments.png
netbiosnamestocompanydepartments.png (50.16 КБ) Просмотров: 2277

Исходный текст скрипта:
Код: Выделить всё
function OnClientLogin(iCID, iLoginUIN, iLoginState: integer; sLoginIP, sLoginMAC,
                       sLoginHardwareID, sLoginCompName, sLoginVersion: string): boolean;
var
  sNewCompName, sOldCompName: string;
  iDeptID: integer;
begin
  sNewCompName := sLoginCompName; 
  sOldCompName := mGetUserAttribute(iLoginUIN, 'COMPUTER_NET_NAME');
 
    if sNewCompName <> sOldCompName then begin
      if pos('TOSHIBA', sNewCompName) > 0 then iDeptID := mGetDepartmentIDByTextPath('Developers\Notebooks') else
      if pos('BUHGALT', sNewCompName) > 0 then iDeptID := mGetDepartmentIDByTextPath('Finance') else
      if pos('MARKET', sNewCompName) > 0 then iDeptID := mGetDepartmentIDByTextPath('External\Freelance\Marketing');
     
      if iDeptID <> -1 then mUpdateUserDepartment(iLoginUIN, iDeptID);
    end;
 
  result := true;
end;

begin

end.


Логика такая:
  1. после успешного логина юзера смотрим его NETBIOS имя и сравниваем с тем, что было в прошлый раз (функция mGetUserAttribute);
  2. если имена не совпадают, это означает, что пользователь пересел на другой компьютер, а значит, надо сменить ему департамент;
  3. смотрим, чему равно название компьютера и подбираем по нему то подразделение, которому он должен соответствовать, получаем ID департамента;
  4. назначаем пользователю этот новый департамент.

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

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

Скрипт будет работать в версии 5.10 и выше.