Добрый день!

Возникла необходимость загрузки не всей входящей почты из почтового ящика MS Outlook, а по условию (фильтру), например, только от определённых отправителей или наоборот исключить загрузку почты от списка отправителей.

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

Подскажите, пожалуйста, есть ли возможность модернизировать стандартный механизм загрузки почты и добавить в него инструменты фильтрации?

Нравится

5 комментариев

Не совсем понятно, что значит «почты из почтового ящика MS Outlook». Это может быть или корпоративный Exchange-сервер Вашей организации, или веб-почта Outlook.com (бывший Hotmail).

Только в старых версиях системы: 3.Х, 5.Х и первые версии 7.Х интегрировались с почтовой программой на локальном компьютере, а сейчас 7.Х работает с сервером напрямую по протоколам IMAP/SMTP или MS Exchange.

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

Как выбрать нужную папку, описано в статье:

chapter_imap_synchronization_yahoo_folders_select.png

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

Зверев Александр,

 Добрый день! Спасибо за ответ!

Поясню ситуацию: есть корпоративный почтовый сервер MS Exchange, на котором хранится почта пользователей. В этой почте очень много лишних писем, которые нет смысла загружать в CRM, и соответственно есть переписка с клиентами, которую хотелось бы загружать в CRM.

На сколько я знаю, правила MS Outlook, которые пользователь создает для распределениям почты по папкам, работают только на стороне клиента, т.е. если мой Outlook не запущен, то все письма будут скапливаться в папке "входящие", до тех пор пока не запустится клиент Outlook и не отработаются правила.

Вручную переносить почту по папкам нет никакой возможно, это нужно автоматизировать.

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

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

Вот и вот информация, как настраиваются правила на уровне сервера Exchange:

You can use mail flow rules (also known as transport rules) to identify and take action on messages that flow through the transport pipeline in your Exchange 2016 and Exchange 2019 organization. Mail flow rules are similar to the Inbox rules that are available in Outlook and Outlook on the web (formerly known as Outlook Web App). The main difference is mail flow rules take action on messages while they're in transit, and not after the message is delivered to the mailbox. Mail flow rules contain a richer set of conditions, exceptions, and actions, which provides you with the flexibility to implement many types of messaging policies.

По поводу возможности доработок, нужно изучать код в схеме процесса LoadExchangeEmailsProcess и вызываемой из неё логике схемы ExchangeUtility.

Зверев Александр,

Зверев Александр пишет:

Вот и вот информация, как настраиваются правила на уровне сервера Exchange:

Спасибо за информацию, будем изучать!

 

Зверев Александр пишет:

По поводу возможности доработок, нужно изучать код в схеме процесса LoadExchangeEmailsProcess и вызываемой из неё логике схемы ExchangeUtility.

Т.е. доработать эти процессы можно самостоятельно или с помощью сторонних разработчиков (партнёров террасофт)? Эти процессе не закрыты от модификации?

Для доработки нужно создавать свои схемы в пакете Custom  и переопределять в них базовую логику.

Учтите, что замещать можно не всё (например, модули специально запрещено), да и часть логики сделана вообще в ядре и недоступна для просмотра и правок, судя по:

using Terrasoft.ExchangeApi.Interfaces;
using Terrasoft.Sync.Exchange;

В конфигурации этих схем нет.

Показать все комментарии

Здравствуйте.

На одном компьютере выпадает ошибка "OLE error 80020102" (скрин в приложение) при попытке отправить письмо, когда Outlook запущен. Когда Outlook закрыт ошибка нет, открывается окно отправки и письмо отправляеться.

Под администратором пробовал: выключать, затем включать интеграцию (TSMSOfficeLibraryConfigurator); перерегистрировать библиотеки TS; установить другой Outlook.
Не помогло. Подскажите что еще можно сделать? Кроме переустановки Windows.

Нравится

1 комментарий

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

Показать все комментарии

Проблема
Не загружается надстройка Terrasoft в Outlook.
При включении надстройки вручную, надстройка не появляется.

В окне [Надстройки для модели компонентов объектов (COM)] видим сообщение: Выгружен (Unloaded)


Решение

Перед решением данной проблемы необходимо ознакомится со статьями

Удаляем обновление (отключаем):
KB3114409 - после установки автоматических обновлений Windows (KB3114409), Office 2010 Outlook запускается в безопасном режиме, письма не привязываются, и скрыто много полей, вопрос решается удалением обновления

Исправление проблемы

  1. Открываем реестр Windows для редактирования (C:\Windows\regedit.exe)
  2. Переходим в ветку HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Resiliency (16.0 - Outlook 2016, 15.0 - Outlook 2013, 14.0 - 2010, 13.0 - 2007)
  3. Находим необходимый нам ключ

  4. Удаляем наш ключ (если нашли именно наш ключ иначе удаляем все) и запускаем (перезапускаем) Outlook

Нравится

Поделиться

0 комментариев
Показать все комментарии

Проблема
Настройка в Outlook присутствует, но рассылка не происходит.
Не открываются/не создаются письма в Terrasoft.

Решение
Последовательность действий для понижения безопасности Outlook:

  1. В Outlook выполните: Файл -> Параметры
  2. [Центр управления безопасности] -> [Параметры центра управления безопасности]
  3. [Программный доступ] -> [Никогда не предупреждать о подозрительной активности]
  4. [Программный доступ] -> [Включить режим предотвращения выполнения данных], снять галочку (этот пункт можно пропустить)
  5. [Программный доступ] -> [Включить все макросы], а также установить галочку в поле [Применять параметры безопасности макросов к установленным надстройкам]
  6. Перезапускаем Outlook

Важно
Понизить параметры безопасности Outlook может только пользователь имеющий права администратора.

Нравится

Поделиться

0 комментариев
Показать все комментарии

Добрый день. У нас на версии Terrasoft 3.1 сегодня при попытке соединения с Outlook возникла такая ошибка:

При нажатии Соединиться.
Библиотеку удаляли и перерегистрировали, не помогало.
Наверняка решение какое-то простое, но мы его пока не знаем. Помогите пожалуйста.

Нравится

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

Здравствуйте.
Однозначно ответить сложно, но точно - проблема локальная. Возможно Вы удаляли папку Cache при запущенном Outlook и Terrasoft. Далее при каких-то действиях система не находит эту директорию и возникает такое сообщение. Попробуйте проверить, что отсутствуют процессы Outlook и Terrasoft, переименовать папку Cache (произвольно) и выполнить действия заново.

Если мне не изменяет память, то папки Cache в террасофт 3.1 (в программ файлз\террасофт) вообще быть не должно. На всякий случай создали (ее не было), но она пустая.

А напомните, где в этой версии чистится кеш?

Папка Cache в 3.1 находится в директории, куда установлен Terrasoft. Создавать руками её не нужно. Она должна автоматически создаться. Попробуйте её удалить и перезапустить приложение. Возможно у Вас какие-то проблемы с правами доступа. Групповые политики, например.

Все получилось, спасибо

Показать все комментарии

Здравствуйте.

Проблема такая: не заносятся некоторые письма в Террасофт из Аутлука, в чем причина, непонятно. Закономерность определить не удалось. Из-за чего такое может происходить? У меня на сохранение письма стоит запуск БП в функции SaveMailItem, но метод запуска БП стоит уже после сохранения письма.

Вот код функции на всякий случай:

//-----------------------------------------------------------------------------
// scr_MSOutlookLibrary
//-----------------------------------------------------------------------------

function SaveMailItem(MailItem, Options) {
        var CanSaveInDB = true;
        var Bindings = null;
        /* MODULE INCIDENTS */
        var Incident;
        /* ENDMODULE INCIDENTS */

        var IsInsertMode = MSOutlookLibrary.MailDataset.IsEmptyPage;
       
        if (Options.AutoBinding) {
                // AutoBinding mode
               
                // Check if message allready integrated
                if (!IsInsertMode) {
                        if (Options.IsManual) {
                                if (!Options.Silent) {
                                        ShowInformationDialog("Сообщение уже интегрировано в Terrasoft");
                                }
                        }
                        return;
                }
               
                Bindings = GetBindingMailLinks(MailItem, Options.IsReceiving);
                CanSaveInDB = (Bindings.Count > 0);
                /* MODULE INCIDENTS */
                if (Options.IsReceiving) {
                        Incident = GetIncidentDataBySubject(MailItem.Subject);
                        CanSaveInDB = (Bindings.Count > 0) || (Incident != null);
                        if (Incident) {
                                Options.AddLinks = [];
                                var Link = GetMessageLink('tbl_Incident', Incident.ID);
                                if (Link) {
                                        Options.AddLinks.push(Link);
                                } else {
                                        Incident = null;
                                }
                        }
                }
                /* ENDMODULE INCIDENTS */
        } else {
                // Manual integrate mode
                if (!Options.Links) {
                        Options.Links = [];
                }
                if (!Options.AllLinks) {
                        Options.AllLinks = [];
                }
                CanSaveInDB = (Options.Links.length > 0) ||
                        (Options.AllLinks.length > 0);
                /* MODULE INCIDENTS */
                var Incident = HasLink(Options.AllLinks, 'tbl_IncidentMessage');
                /* ENDMODULE INCIDENTS */
        }
       
        if (!CanSaveInDB) {
                if (Options.IsManual) {
                        RemoveOutlookMessageProperties(MailItem, false);
                        try {
                                MailItem.Subject = MailItem.Subject;
                                MailItem.Save();
                        } catch (e) {
                        }
                }
                return;
        }
        MSOutlookLibrary.IsChangeMessageFileSize = false;
        var MaxFileSize = GetSystemParameterValueEx('MSOutlookMaxFileSize', false);    
        if (MailItem.Size/1048576 > MaxFileSize) {
                RemoveAllMailEmbeddedAttachment(MailItem);
                MSOutlookLibrary.IsChangeMessageFileSize = true;
        }
        var FileName = SaveMailItemToFile(MailItem, false);
        if (MSOutlookLibrary.IsChangeMessageFileSize) {
                MSOutlookLibrary.MessageFileSize = GetFileSize(FileName);
        }
        var MessageID = SaveMailItemToDatabase(MailItem, Options.IsReceiving);
        if (!MessageID) {
                return;
        }
       
        var ContentDataset = GetSingleItemByCode('ds_MailMessageContent');
        var ContentField = ContentDataset.DataFields.ItemsByName('MessageContent');
        ContentField.IsEnabled = true;
        ApplyDatasetIDFilter(ContentDataset, MessageID, true);
        ContentDataset.Open();
        try {
                if (!IsDatasetEmpty(ContentDataset)) {
                        ContentDataset.Edit();
                        if (ContentField) {
                                ContentField.LoadFromFile(FileName);
                                ContentDataset.Post();
                        }
                }
        } finally {
                ContentDataset.Close();
                ApplyDatasetIDFilter(ContentDataset, null, false);
        }
        if (Bindings && (Bindings.Count > 0)) {
                InsertNewLinks(Bindings, MessageID, Options.Links);
        }
        InsertAddLinks(Options.Links, MessageID);
        InsertAddLinks(Options.AddLinks, MessageID);
       
        var Session = GetMAPISession();
        var MapiMessage = Session.WrapMessage(MailItem.MAPIOBJECT);
        MapiMessage.SetSMTPHeader('X-TSMessageID', MessageID);
        var TSFlag = true;
        if (Options.AutoBinding) {
                TSFlag = !!Bindings && (Bindings.Count > 0);
        }
       
       
        //--------------------------------------------------------------------------
        //MY_WORK
        //--------------------------------------------------------------------------
        var ContactID = Connector.CurrentUser.ContactID;
        var UserID = GetDatasetFieldValueFromDatasetByUSI('ds_User', 'UserContactID', ContactID, 'ID');
        var UserInGroup = Services.GetNewItemByUSI('ds_UserInGroup');
        ApplyDatasetFilter(UserInGroup, 'UserID', UserID, true);
        UserInGroup.Open();
        var Flag2 = false;
        for (UserInGroup.GotoFirst(); !UserInGroup.IsEOF; UserInGroup.GotoNext()){
                if (UserInGroup('GroupID') == '{2858B193-8FC6-4D36-BD55-A6F80D69590B}') {
                        Flag2 = true;          
                }
        }
        UserInGroup.Close();
        Cycle = 0;
        if (Flag2 == true) {
                var RecordID = MessageID;
                var RecipientAddress = GetDatasetFieldValueByID('ds_MailMessage', RecordID, 'RecipientAddress');
                var SenderAddress = GetDatasetFieldValueByID('ds_MailMessage', RecordID, 'SenderAddress');
//для СБЕРБАНКА
                if (!!~SenderAddress.indexOf('servicedesk@mail.ca.sbrf.ru') ||
                !!~SenderAddress.indexOf('sasmolin@sberbank.ru') ||
                !!~SenderAddress.indexOf('iskonovchenko@sberbank.ru') ||
                !!~SenderAddress.indexOf('anvegorov@sberbank.ru')) {
                        CreateIncidentSB(RecordID);    
//для Х5
                } else if (!!~SenderAddress.indexOf('noreply@x5.ru')) {  
                        CreateIncident(RecordID);
//для отчетов диспетчера
                } else if (!!~SenderAddress.indexOf('oss@c-centre.ru')){
                        CreateIncidentReport(RecordID);
                }
        }  
        //--------------------------------------------------------------------------
        //END OF MY_WORK
        //--------------------------------------------------------------------------
       
       
        /* MODULE INCIDENTS */
        if (!Options.AutoBinding) {
                TSFlag = HasOtherLink(Options.AllLinks, 'tbl_IncidentMessage');
        }
        MapiMessage.SetProperty(IntegrateSDUserPropertyName, mptBoolean, !!Incident);
        /* ENDMODULE INCIDENTS */
        MapiMessage.SetProperty(IntegrateTSUserPropertyName, mptBoolean, TSFlag);
        try {
                MapiMessage.Save();
        } catch (e) {
        }
        /* MODULE INCIDENTS */
        if (Incident) {
                AddReminderByIncident(Incident);
        }
        /* ENDMODULE INCIDENTS */
        return true;
}

Нравится

5 комментариев

Поправка: не заносятся именно автоматически письма, в ручную заносятся.

В настройках E-mail все галки стоят

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

да есть такой контакт. Дело в том, что иногда два письма почти совершенно одинаковых (один и тот же шаблон, регулярные сообщения). Но одно занеслось, а другое нет. Проверяли так, выделили все письма за промежуток времени, и нажали "Автопривязка", он нашел из 20 где-то 5 не занесенных в Террасофт, хотя синхронизацию и террасофт не выключали. Почему-то иногда он пропускает письма. какие еще могут быть причины?

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

Показать все комментарии

Здравствуйте!

Синхронизируемся с Outlook, периодически выскакивает такое окно:

Можно ли это как-нибудь отключить или настроить интервал этого уведомления?

Нравится

1 комментарий

Добрый день!

Для решения данной проблемы можно увеличить значение (60 мин. и более) системного параметра «UpdateActiveSessionPeriod»:

В случае использования смешанного типа лицензий (конкурентных и именных одновременно) - запретить пользователям с именными лицензиями использовать конкурентные.

Настройка выполняется в разделе «Администрирование». Запрет\Разрешение можно давать как пользователям так и группам:

Необходимо перейти в меню Инструменты, раздел Администрирование, вкладка Конкурентные лицензии, меню Разрешения на продукты лицензирования.

В данном разделе Вы сможете настроить права использования лицензий.

С уважением,
Белецкий Арсений
Группа компаний Terrasoft

Показать все комментарии

Добрый день!

Есть проблема с синхронизацией Service Desk 3.4.0.54 с MS Outlook 2010.
Все вроде бы явно синхронизировано (аутлук видит террасофт, а террасофт видит аутлук). При отправке сообщения из террасофта, сообщение отправляется и сохраняется в аутлуке, но в базу террасофта не записывается. То же самое и с входящими сообщениями. Заметил особенность: если в аутлуке в меню "Интеграция с Террасофт" выставить контакт, то письмо автоматически сохраняется в базу. Как настроить это в автоматический режим?

Нравится

6 комментариев

В настройках пользователя -> вкладке E-mail стоят все галки

А все, вопрос закрыт. Видимо настройки применились просто не сразу.

Дмитрий, приветствую!

Судя по вашему описанию видно, что интеграция писем в Terrasoft происходит, но только в том случае, когда Вы это делаете в ручном режиме.

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

Для решения вопроса, попробуйте:
1. Создать (или обновить текущий) контакт, в котором указать свой личный почтовый ящик;
2. Написать письмо со своего почтового ящика;
3. Проверить, интегрировалось ли письмо в Terrasoft.

Также, хочу обратить Ваше внимание на то, что e-mail должен быть указан не только в карточке контакта, но и на детали [Средство связи].

С уважением,
Белецкий Арсений
Группа компаний Terrasoft

Существует ли синхронизация Адресной книги с контактами TS?
ИЛИ хотя бы задумки какие-то?

Здравствуйте, Алекс!

Синхронизация контактов MS Outlook и приложения Terrasoft 3.X возможна. Подробная информация изложена в технической документации:


Terrasoft CRM: Руководство пользователя
- стр. 134, 138

Terrasoft 3.X: Руководство администратора - стр.142

"Кубриш Сергей" написал:

Здравствуйте, Алекс!

Синхронизация контактов MS Outlook и приложения Terrasoft 3.X возможна. Подробная информация изложена в технической документации:


Спасибо, Сергей! Как-то я без внимания к этому вопросу отнесся :sad:

Показать все комментарии

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

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

Чтобы это заработало, мне пришлось:
1. Создать пользовательский запрос на основе таблицы “Контакты” с необходимыми полями и узнать его ID. ID я узнал через MS SQL Server Management Studio .
2. Добавить в "Системные настройки" параметр «CurrentUserDetailQuery» и присвоить ему значение ID

3. Доработать функцию GetMacrosParserByUserQuery в модуле scr_MacrosUtils

function GetMacrosParserByUserQuery(UserQuery, RecordID) {
        var Parser = new Object();
        Parser.Macroses = new Array();
        Parser.Variables = GetNewDictionary();
        LoadSysVariables(Parser.Variables);
        //Дополнительная информация о пользователе
        var CurrentUserDetailQuery=System.GetSystemSettingValue('CurrentUserDetailQuery', 0);
        var ContactDetailQuery = CreateUserQueryObject(CurrentUserDetailQuery)
        LoadVariablesFromUserQuery(Parser.Variables, ContactDetailQuery, Connector.CurrentUser.ContactID);     
       
        //Дополнительная информация о пользователе
        if (UserQuery) {
                LoadVariablesFromUserQuery(Parser.Variables, UserQuery, RecordID);
        }
        return Parser;
}

и функцию GetMacrosesInfo в модуле scr_MSOutlookLibrary
function GetMacrosesInfo(Obj, TemplateID) {
        var Info = new Object();
        Info.SysMacrosList = new Array();
        Info.SysMacrosList.push(["Текущая дата", '#' + "Текущая дата" + '#']);
        Info.SysMacrosList.push(["Текущий пользователь", '#' + "Текущий пользователь" + '#']);
        Info.SysMacrosList.push(["Текущий контакт", '#' + "Текущий контакт" + '#']);
        Info.SysMacrosList.push(["Цитировать", '#' + "Цитировать" + '#']);
        //Дополнительная информация о пользователе
        var CurrentUserDetailQuery=System.GetSystemSettingValue('CurrentUserDetailQuery', 0);  
        var UserQuery = CreateUserQueryObject(CurrentUserDetailQuery);
        if (UserQuery.Error) {
                return;
        }
        var Column;
        for (var Key in UserQuery.Columns) {
                Column = UserQuery.Columns[Key];
                Info.SysMacrosList.push([Column.Caption, '#' + Column.Caption + '#']);
        }
    //Дополнительная информация о пользователе
        Info.QueryMacrosList = new Array();
        try {
                if (IsEmptyGUID(TemplateID)) {
                        return;
                }
                var Dataset = GetSingleItemByCode('ds_MailTemplate');
                ApplyDatasetIDFilter(Dataset, TemplateID, true);
                Dataset.Open();
                try {
                        if (IsDatasetEmpty(Dataset)) {
                                return;
                        }
                        var QueryID = Dataset.Values('QueryID');
                        if (IsEmptyGUID(QueryID)) {
                                return;
                        }
                        Obj.QueryID = QueryID;
                        var UserQuery = CreateUserQueryObject(QueryID);
                        if (UserQuery.Error) {
                                return;
                        }
                        var Column;
                        for (var Key in UserQuery.Columns) {
                                Column = UserQuery.Columns[Key];
                                Info.QueryMacrosList.push([Column.Caption, '#' + Column.Caption + '#']);
                        }
                } finally {
                        Dataset.Close();
                        ApplyDatasetIDFilter(Dataset, null, false);
                }
        } finally {
                return Info;
        }
}

Версия программы 3.4.

Нравится

Поделиться

0 комментариев
Показать все комментарии

Если вы используете Microsoft Outlook для работы с электронной почтой, его можно применить и для просмотра свежих записей в Terrasoft Community. Используем для этого технологию RSS

Для добавления новостной ленты нужно выбрать в списке папок слева папку "RSS Feeds" и в её контекстном меню выбрать пункт "Add a New RSS Feed...".

добавление RSS-ленты

В открывшемся окошке вводим адрес, в нашем случае это http://www.community.terrasoft.ru/frontpage/feed.

ввод адреса ленты

И получаем папку со свежими сообщениями на Community. Если тема заинтересовала, можно перейти к интересующему сообщению в браузере, ссылка есть и в конце, и в начале (блок под именем автора).

сообщения в сообществе

Для получения записей, доступных только зарегистрированным пользователям, нужно авторизироваться на Community в Internet Explorer.

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

При желании папку с Terrasoft Community можно переименовать и сделать избранной.

Формат RSS поддерживают и другие почтовые клиенты, например, Mozilla Thunderbird.

Нравится

Поделиться

0 комментариев
Показать все комментарии