Добрый день!

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

Нравится

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

Я бы завязался на событие добавления записи Файл и ссылка активности. И если активность =email, то начинаем обработку, иначе выход из процесса. Далее получить размер файла из БД, если он равен нулю, то ждем 15 сек. и повторяем. Если больше нуля, то уже делаем что хотели с файлом.

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

Коллеги, известен ли кому-то способ изменить отображение Email сообщения в теле письма на странице Case?

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

Прикрепленные файлы

Нравится

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

Добрый день!

 

Для решения проблемы, можно в пакете ESN в схеме MultilineLabel в методе getStringWithLinks поправить регулярку.
Было:

var emailAddressPattern = /[\w\.]+@[a-zA-Z_]+?(?:\.[a-zA-Z]{2,6})+/gim; 

нужно: 

var emailAddressPattern = /[\w\.\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@[a-zA-Z_]+?(?:\.[a-zA-Z]{2,6})+/gim;

Эти изменения внесены в продукт версии 8.0.0

 

Если нет возможности дождаться обновления на 8.0.0, то можно разлочить пакет и внести соответствующие правки.

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

Добрый вечер, с помощью библиотеки EPPLus выгружаю файл Excel отчёта в byte[], далее нужно отправить этот файл как вложение в Email. На данный момент это все реализуется с помощью активности и добавления файла через ESQ. Возник вопрос - как не сохранять файл в базе, а сразу отправлять во вложение?

Версия 7.17 поэтому хотелось бы использовать вложение через элемент "Отправить Email", но тут возникает проблема - параметр "Файл" не принимает чистый byte[] или Stream.

Каким способом сделать Set для файла?

Если такой реализации нет, то воспользуюсь кодом отсюда.

 

Нравится

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

Вопрос всё еще актуален.

В последних релизах появился функционал генерации отчётов прямо в элементе Обработать файл. Соответственно, нет необходимости в дополнительном коде, в одном элементе можно сгенерировать файл отчёта, и далее в элементе Отправить email прикрепить его вложением. Возможно этот функционал поможет решить вашу задачу.

 

Ссылка на документацию по элементу Обработать файл.

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

Добрый день. Подскажите почему может не работать пользовательский макрос в email рассылке, который делаю согласно по образу и подобию статьи на академии https://academy.terrasoft.ru/docs/developer/elements_and_components/ema…

Нравится

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

Добрый день. 

Предоставьте макрос и выгрузку из таблицы EmailTemplateMacros для данного макроса.

Mykhailo Storozhuk, 

using System;
using Terrasoft.Core;
 
namespace Terrasoft.Configuration
{  
    /// <summary>
    /// Макрос, возвращает текущую дату +n дней от текущей.
    /// </summary>
    public class NrbEmailCurrentDatePlusMacros : IMacrosInvokable
    {
 
		public UserConnection UserConnection
        {
            get;
            set;
        }
 
        public string GetMacrosValue(object arguments)
        {
            var date = DateTime.Today;
 
            if(!arguments.Equals(null))
			{
                var days = Convert.ToInt32(arguments.ToString());
                date = date.AddDays(days);
            }           
 
            return date.Date.ToString("dd.MM.yyyy");
        }
    }
}

 

Кириллов Игорь,

 

При работе с макросом возникает ошибка "Input string was not in a correct format." на этапе конвертации Convert.ToInt32(arguments.ToString()); ,так как в строке возвращается объект и id записи, которые не преобразовать в число.

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

Добрый день, подскажите, пожалуйста, можно ли как-нибудь завязать все сообщения ответы и вообще всю цепочку сообщений-ответов чтобы запросом считать письмо и все связанные с ним сообщения?
Пробовал прокидывать в поле ActivityConnection на Activity при клике на кнопку "ответить" связь, но непонятно как в таком случае привязывать входящие письма к ответу ("re: re:" письма)

Нравится

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

Добрый день.
Признак цепочки хранится в EmailMessageData, колонка ConversationId.

EmailMessageData - хранит информацию про письма в правой панели. Также отображает под каким ящиком было синхронизировано данное письмо

Activity - активность с типом Email - это и есть синхронизированные письма.

Вы можете выгрузить все связанные письма из EmailMessageData по колонке ConversationId.

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

Подробнее о работе с цепочками emai сообщений:
https://academy.terrasoft.ru/docs/developer/elements_and_components/ema…

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

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

Нравится

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

Добрый день, Павел.

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

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

Привет, не работает маппинг полей если в качестве источника макросов указать объект созданный на основе представления, но работает с обычными объектами. Сталкивался ли кто, с использованием представления в качестве источника макросов.

Нравится

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

Добрый день!
Как проявляет себя проблема?
Возможно Вы пытались получить значения, которых нет в самой таблице представления. Найти какие поля есть и доступны в таблице представления можно через СУБД.

Криволапова Александра,

Добрый, не отображаются значения полей в итоговом письме, при использовании блока отправить email и передачи в него Id записи из представления.

 

Глеб Макаров,

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

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

Добрый день, коллеги! Столкнулся с такой проблемой. Создал шаблон email-сообщения. Когда я отправляю письмо в бизнес-процессе по этому шаблону, оно приходит без фона блока (в качестве фона используется картинка, а не заливка). Нашёл такую закономерность, что если картинку фона сжать до 15 КБ, то она приходит в качестве фона. Но при таком сильном сжатии (с 80 КБ до 15 КБ) сильно ухудшается качество. Картинка в base64 тега table в background. Как мне заставить Creatio отправить фон, не теряя при этом в качестве изображения?  

Нравится

1 комментарий
Лучший ответ

Заикин Дмитрий, добрый день!
Фоновое изображение должно отправляться независимо от размера.
Возможно проблема в блокировках изображений\вложений\файлов со стороны почтового провайдера. 
Убедитесь, что email с которого уходят письма доверенный. Также, попробуйте проверить отправку на разные почтовые провайдеры.

Заикин Дмитрий, добрый день!
Фоновое изображение должно отправляться независимо от размера.
Возможно проблема в блокировках изображений\вложений\файлов со стороны почтового провайдера. 
Убедитесь, что email с которого уходят письма доверенный. Также, попробуйте проверить отправку на разные почтовые провайдеры.

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

Возникла проблемы с передачей параметра из бизнес процесса в шаблон email. Параметр сохраняется в процессе как текст https://prnt.sc/13ikimi. Во время выполнения процесса параметр заполняется текстом и далее используется в письме https://prnt.sc/13ikpvd. Но при отправке письма параметр не подтянулся https://prnt.sc/13ikxuq. Что я делаю не так?)

Нравится

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

А у вас Service? Из опыта и обсуждения так может работать только там

Добрый день.

 

Если Вы формируете письмо программно, тогда макросы не будут срабатывать. В этом случае Вам нужно программно считать сохраненное значение параметра бизнес-процесса и подставить его в Ваш шаблон.

 

Макросы срабатывают только в случае использования уже преднастроенных шаблонов в элементе [Отправить email].

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

По инструкции https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/ra…
настроили ExchangeListenerService.
На странице диагностики работы все пунктики зеленые. Т.е. все настройки выполнены.
 

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

При добавлении возникает ошибка "Ошибка при добавлении настроек. Обратитесь к администратору системы".
 

В консоли при этом появляется ошибка

ListenerServiceFailJob error System.Security.Cryptography.CryptographicException: Заполнение неверно и не может быть удалено.\r\n   в System.Security.Cryptography.CapiSymmetricAlgorithm.DepadBlock(Byte[] block, Int32 offset, Int32 count)\r\n   в System.Security.Cryptography.CapiSymmetricAlgorithm.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)\r\n   в System.Security.Cryptography.CryptoStream.FlushFinalBlock()\r\n   в System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing)\r\n   в System.IO.Stream.Close()\r\n   в Terrasoft.Common.PasswordCryptoProvider.DecryptValue(Object value, ICryptoTransform decryptor)\r\n   в Terrasoft.Core.SecureTextDataValueType.GetValueForLoad(UserConnection userConnection, Object value)\r\n   в Terrasoft.Core.Entities.EntityColumnValue.LoadValue(Object value)\r\n   в Terrasoft.Core.Entities.EntityColumnValueCollection.ForceLoadColumnValue(String name, Object value)\r\n   в Terrasoft.Core.Entities.Entity.LoadShallow(IDataReader dataReader, Dictionary`2 columnMap)\r\n   в Terrasoft.Core.Entities.EntityCollection.LoadShallow(IDataReader dataReader, Dictionary`2 columnMap, Boolean needClear)\r\n   в Terrasoft.Core.Entities.EntitySchemaQuery.GetEntitySchemaEntityCollection(UserConnection userConnection, IDataReader dataReader)\r\n   в Terrasoft.Core.Entities.EntitySchemaQuery.<GetEntityCollectionAsync>d__343.MoveNext()\r\n--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---\r\n   в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   в Terrasoft.Core.Entities.EntitySchemaQuery.GetEntityCollection(UserConnection userConnection)\r\n   в IntegrationV2.MailboxDomain.Repository.MailboxRepository.GetAll(Boolean userMailboxesOnly, Boolean useForSynchronization)\r\n   в IntegrationV2.MailboxDomain.MailboxService.GetAllSynchronizableMailboxes()\r\n   в Terrasoft.Configuration.ListenerServiceFailJob.GetSynchronizableMailboxes()\r\n   в Terrasoft.Configuration.ListenerServiceFailJob.GetMailboxesWithoutSubscriptions()\r\n   в Terrasoft.Configuration.ListenerServiceFailJob.Execute(UserConnection userConnection, IDictionary`2 parameters)\r\nSystem.Security.Cryptography.CryptographicException: Заполнение неверно и не может быть удалено.\r\n   в System.Security.Cryptography.CapiSymmetricAlgorithm.DepadBlock(Byte[] block, Int32 offset, Int32 count)\r\n   в System.Security.Cryptography.CapiSymmetricAlgorithm.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)\r\n   в System.Security.Cryptography.CryptoStream.FlushFinalBlock()\r\n   в System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing)\r\n   в System.IO.Stream.Close()\r\n   в Terrasoft.Common.PasswordCryptoProvider.DecryptValue(Object value, ICryptoTransform decryptor)\r\n   в Terrasoft.Core.SecureTextDataValueType.GetValueForLoad(UserConnection userConnection, Object value)\r\n   в Terrasoft.Core.Entities.EntityColumnValue.LoadValue(Object value)\r\n   в Terrasoft.Core.Entities.EntityColumnValueCollection.ForceLoadColumnValue(String name, Object value)\r\n   в Terrasoft.Core.Entities.Entity.LoadShallow(IDataReader dataReader, Dictionary`2 columnMap)\r\n   в Terrasoft.Core.Entities.EntityCollection.LoadShallow(IDataReader dataReader, Dictionary`2 columnMap, Boolean needClear)\r\n   в Terrasoft.Core.Entities.EntitySchemaQuery.GetEntitySchemaEntityCollection(UserConnection userConnection, IDataReader dataReader)\r\n   в Terrasoft.Core.Entities.EntitySchemaQuery.<GetEntityCollectionAsync>d__343.MoveNext()\r\n--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---\r\n   в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   в Terrasoft.Core.Entities.EntitySchemaQuery.GetEntityCollection(UserConnection userConnection)\r\n   в IntegrationV2.MailboxDomain.Repository.MailboxRepository.GetAll(Boolean userMailboxesOnly, Boolean useForSynchronization)\r\n   в IntegrationV2.MailboxDomain.MailboxService.GetAllSynchronizableMailboxes()\r\n   в Terrasoft.Configuration.ListenerServiceFailJob.GetSynchronizableMailboxes()\r\n   в Terrasoft.Configuration.ListenerServiceFailJob.GetMailboxesWithoutSubscriptions()\r\n   в Terrasoft.Configuration.ListenerServiceFailJob.Execute(UserConnection userConnection, IDictionary`2 parameters)

 

Что не так с почтой? Что именно нужно еще настроить для корректной работы синхронизации почты?

Нравится

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

Оксана, здравствуйте!

 

Согласно ошибке, то у вас проблема с дешифрованием хэшей.

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

 

Уточните, пожалуйста:

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

- вы недавно обновлялись с версии на версию? Если да,  то с какой версии и на какую (нужна точная версия)?

- какой тип почтового провайдера вы добавляете (Exchange, Gsuite и т.д.)?

Вильшанский Дмитрий,

Да, действительно. В MailboxSyncSettings оказался ящик без действующего пароля. Спасибо!

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