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

Нравится

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

Алексей, а какие именно скрипты используете для отправки и замены макросов? Откуда вообще взялся жёлтый цвет, он был в сохранённом в справочнике шаблоне письма?

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

var contactEmail = Get<string>("ContactMail");
var senderEmail = Get<string>("SenderEmail");
var caseId = Get<Guid>("CaseId");
var templateId = Get<Guid>("TemplateEmail");
var userConnection = UserConnection.AppConnection.SystemUserConnection;
var emailTemplateMacrosManager = new EmailWithMacrosManager(userConnection);
if (UserConnection.GetIsFeatureEnabled("EmailMessageMultiLanguageV2")) {
	_log.Debug("EmailMessageMultiLanguageV2=true");
	emailTemplateMacrosManager.SendEmailFromTo(caseId, templateId, senderEmail, contactEmail);
} else {
	var emailTemplateStore = new EmailTemplateStore(userConnection);
	var emailTemplateLanguageHelper = new EmailTemplateLanguageHelper(caseId, userConnection);
	var languageId = emailTemplateLanguageHelper.GetLanguageId(templateId);
	var templateEntity = emailTemplateStore.GetTemplate(templateId, languageId);
	emailTemplateMacrosManager.SendEmailFromTo(caseId, templateEntity.PrimaryColumnValue, senderEmail, contactEmail);
}
return true;

 

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

 

Сама логика с жёлтым цветом реализована в MacrosHelperV2:

private const string MacrosHighlightsTemplate = "<span class=\"unhandled-macro\" style=\"background-color:#fff94f;\">[#{0}#]</span>";
...
/// <summary>
/// Returns the DOM markup to highlight value.
/// </summary>
/// <param name="value">Text that needs to be highlighted.</param>
/// <returns>DOM markup.</returns>
private string GetHighlights(string value) {
	string highlight = string.Format(MacrosHighlightsTemplate, value);
	return highlight;
}
...
/// <summary>
/// Highlights macroses in template text.
/// </summary>
/// <param name="template">Template text.</param>
/// <param name="macrosInfo">Macroses list.</param>
/// <returns>Template text with highlights.</returns>
protected virtual string ReplaceMacros(string template, List<MacrosInfo> macrosInfo) {
	string result = template;
	foreach (MacrosInfo item in macrosInfo) {
		string macrosDisplayValue = string.Format(MacrosTemplate, item.Alias);
		string highlights = GetHighlights(item.Alias);
		result = result.Replace(macrosDisplayValue, highlights);
	}
	return result;
}

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

У Вас используются функции из схем EmailWithMacrosManager (SendEmailFromTo и GetTemplateBody), BaseEmailWithMacrosManager (GetTemplateBody), GlobalMacrosHelper(GetTextTemplate) и MacrosHelperV2 (GetTextTemplate, GetHighlightedTemplate, ReplaceMacros и GetHighlights).

 

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

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

Добрый день! После прочтения инструкции Как управлять подписками на разные типы рассылок остались непонятны следующие моменты:
Конкретно про пункт 1:
Создайте на своем сайте страницы, где клиент может выразить согласие получать те или иные материалы от вашей компании. Настройте их в качестве страниц переадресации в ваших лендингах.
Как однозначно сопоставить пользователя Creatio, который пришёл отписаться от конкретной рассылки и того, кто на этой странице лендинга?
Можно ли, чтобы ссылка работала ограниченное время?
Спасибо.

Нравится

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

Здравствуйте, Сергей!

 

Как однозначно сопоставить пользователя Creatio, который пришёл отписаться от конкретной рассылки и того, кто на этой странице лендинга?

 

Если указать собственный адрес страницы  отписки, то во время отписки на неё прийдеёт запрос вида:

https://www.google.com/?contactId=29b86521-2357-41a0-8070-8ffa36a33c94&bulkEmailRecipientId=9ae70df0-cc21-11ea-ac9f-00505689fb16&emailId=1c9a5d9c-0d06-4d29-a368-f86f2abcee13&success=True&emailaddress=pupkinv%40gmail.com

Где:  https://www.google.com – значение системной  настройки redirectUnsubscribersTo. Как видно из ссылки, мы получаем параметры contactId, bulkEmailRecipientId, emailId, что даёт возможность идентифицировать  получателя рассылки как в системе Creatio так и в конкретной рассылке, из которой потом можно узнать её тип.

 

Можно ли, чтобы ссылка работала ограниченное время?

 

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

 

Сейчас в академии в статье написано:

 

Настройка подписки на разные типы рассылок не предусмотрена в базовой конфигурации Creatio. Для ее реализации требуются доработки с участием разработчика.

 

Готового решения нет. Если желаете использовать свою страницу отписки, далее нужно самостоятельно отвечать за настройки интеграции с Creatio любым Вам известным методом. Главное помнить — если некорректно настроить интеграцию и отправлять рассылки отписавшимся получателям, то со временем все письма с этого аккаунта будут попадать в спам.

Здравствуйте, Сергей!

 

Как однозначно сопоставить пользователя Creatio, который пришёл отписаться от конкретной рассылки и того, кто на этой странице лендинга?

 

Если указать собственный адрес страницы  отписки, то во время отписки на неё прийдеёт запрос вида:

https://www.google.com/?contactId=29b86521-2357-41a0-8070-8ffa36a33c94&bulkEmailRecipientId=9ae70df0-cc21-11ea-ac9f-00505689fb16&emailId=1c9a5d9c-0d06-4d29-a368-f86f2abcee13&success=True&emailaddress=pupkinv%40gmail.com

Где:  https://www.google.com – значение системной  настройки redirectUnsubscribersTo. Как видно из ссылки, мы получаем параметры contactId, bulkEmailRecipientId, emailId, что даёт возможность идентифицировать  получателя рассылки как в системе Creatio так и в конкретной рассылке, из которой потом можно узнать её тип.

 

Можно ли, чтобы ссылка работала ограниченное время?

 

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

 

Сейчас в академии в статье написано:

 

Настройка подписки на разные типы рассылок не предусмотрена в базовой конфигурации Creatio. Для ее реализации требуются доработки с участием разработчика.

 

Готового решения нет. Если желаете использовать свою страницу отписки, далее нужно самостоятельно отвечать за настройки интеграции с Creatio любым Вам известным методом. Главное помнить — если некорректно настроить интеграцию и отправлять рассылки отписавшимся получателям, то со временем все письма с этого аккаунта будут попадать в спам.

Понятно, спасибо!

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

Всем привет. При отправке bulk рассылки система выдает ошибку: 

Изображение удалено.

В системных настройках включила функцию:
 

 

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

Нравится

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

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

 

Если после обновления на 7.13.3 не работает дизайнер шаблонов рассылок, если нет отображения шаблонов в рассылках в дизайнере, необходимо включить следующие фичи: BulkEmailDynamicContentBuilder и DynamicContentClickHeatmap, вылогиниться и зайти снова.

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

Сейчас система Cretio не умеет работать с цифровой подписью электронных писем от слова Совсем. Если письмо подписано цифровой подписью, то вместо вложений получаем файл smime.p7m.

Но и при отправке писем система их не подписывает подписью. При переходе на Creatio наши клиенты нас просто не поймут, когда начнут получать письма без подписи.

Насколько знаю есть задача на команде разработки по реализации функционала с подписью. Давайте поднимем приоритет данной задачи.

Нужна корректная работа системы с письмами, подписанными цифровой подписью, и подписание писем при отправке.

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

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

 

На данный момент работа с почтой с электронной цифровой подписью не поддерживается системой Creatio. В связи с этим при отправке/получении письма с электронной цифровой подписью вместо вложений получаем файл smime.p7m.

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

 

Фактически, по умолчанию, для подписанных подписью писем, EWS отдает дополнительно файл вложение smime.p7s. В этом вложении все вложения из исходного письма. В ews есть методы что бы конвертировать этот файл в привычные вложения. 

 

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

Раз задача не сложная, то почему же мы до сих пор не видим это в коробке.

А во вторых я предлагаю работу не только на прием и разбор вложений на файлы, но и на отправку. Чтобы при отправке письма подписывались подписью, как это делает Outlook. На это примеры есть? Внедрения были?

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

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

Недавно вышло бесплатное дополнение  MIME attachment processing, реализующее нужную Вам функциональность при приёме писем:

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

Мотков Илья,

я его установил. Вылетает ошибка. Разработчик на канал поддержки не отвечает. Обращался к ним как раз 8.07.2020.

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

Алексей Следь,

Спасибо за помощь и содействие!!!

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

Подскажите как решить вопрос отправки email всем участникам проекта при добавлении активности по проекту конкретной категории.

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

 

Спасибо

Нравится

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

Добавляете элемент "Читать данные", в котором отфильтровать всех участников данного проекта, которым не было отправлено данного письма. 
Читать первую запись, отправлять письмо. Вернуться обратно к элементу "Читать данные". И так по кругу, пока всем не будут отправлены письма.

Единственное, что если вы используете стандартный элемент Send email, то нигде в системе не остается следов о том, что письмо участнику было добавлено. Тогда можно сделать поле в объекте участника и отмечать в нём факт отсылки.

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

Добрый день.

Сейчас при выставлении статуса Resolved выходят задачи на "ручную" отправку Email клиенту. Поле From не заполнено.

Цель: сделать автоматическую отправку.

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

В разных документах находили инструкции типа:

  1. для версии 7.12.2 и ниже или
  2. In the “Service team email“ system setting, specify the email that will be used for automatic emailing

Но у нас версия Service Enterprise 7.15. Настройки из варианта 2 нет в системе.

Заранее спасибо!

Нравится

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

По идее, должно автоматически отправляться и так. Проверьте есть ли нужная запись в указанном по ссылке справочнике.

Возможно, в системе не настроен общий ящик?

Александр, спасибо за совет.

Общий ящик действительно был не настроен. НО после его настройки email все равно не отправлялись автоматом. При открытии задачи на отправку было видно, что поле From пустое (хотя выбрать общий ящик из выпадающего списка можно).

Решение нашел здесь: 

https://community.creatio.com/questions/email-sending

Нужно указать email для отправки в системной настройке: SupportServiceEmail

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

Добрый день.

Есть задача - шифровать email письма (например, как в Outlook).

Есть ли такая возможность в Creatio? Если нет, то прошу подсказать возможные варианты доработки.

Второй вопрос: можно ли из Creatio инициировать открытие Outlook (с передачей адресатов, темы и тела письма, вложений)?

Нравится

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

Добрый день.

Creatio - это не почтовый клиент, это срм-система, которая для отправки писем использует сторонние почтовые клиенты.

1. Насколько мне известно, в Creatio нет возможности настроить шифрование писем. Вы можете настроить шифрование писем в своем почтовом клиенте, например, в Outlook, и проверить, в каком виде отправленные и полученные письма будут отображаться в срм.

В Creatio есть возможность управлять правами доступа к почтовому ящику и его содержимому. Эта опция доступна в окне настройки почтового ящика.

2. В окне настройки почтового ящика Вы можете настроить загрузку входящих писем из почтового клиента. Для некоторых почтовых клиентов Вы можете даже указать из каких папок загружать письма.

Подробнее посмотрите в статье на Академии.

Добрый день.

Creatio - это не почтовый клиент, это срм-система, которая для отправки писем использует сторонние почтовые клиенты.

1. Насколько мне известно, в Creatio нет возможности настроить шифрование писем. Вы можете настроить шифрование писем в своем почтовом клиенте, например, в Outlook, и проверить, в каком виде отправленные и полученные письма будут отображаться в срм.

В Creatio есть возможность управлять правами доступа к почтовому ящику и его содержимому. Эта опция доступна в окне настройки почтового ящика.

2. В окне настройки почтового ящика Вы можете настроить загрузку входящих писем из почтового клиента. Для некоторых почтовых клиентов Вы можете даже указать из каких папок загружать письма.

Подробнее посмотрите в статье на Академии.

Алла Савельева пишет:
которая для отправки писем использует сторонние почтовые клиенты

Это как? По-моему, Creatio напрямую общается с почтовым сервером без использования сторонних почтовых клиентов. 

Интеграция с локально запущенным Outlook была в 3.Х, также в 5.Х и ранних 7.Х была отдельная программа-плагин Outlook Connector. Сейчас — напрямую.

Владимир Соколов пишет:
Это как? По-моему, Creatio напрямую общается с почтовым сервером без использования сторонних почтовых клиентов. 

Спасибо, что обратили внимание на этот момент.

Это моя опечатка( Имела ввиду не почтовый клиент, а почтовый сервис)

А по сути вопроса, при шифровке просто в текст письма добавляется блок символов, содержащих зашифрованный текст, то его можно формировать программно, если добавить в систему C#-библиотеку с реализацией шифрования.

Или на уровне браузера, возможно, браузерный плагин Mailvelope подхватит ввод шифрованного текста в интерфейсе отправки письма.Encypted message back to webmailer

 

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

Какая деталь в Контакте отвечает за email, отправленные через Terrasoft?

Почему-то email, отправленные через email-рассылки, не добавляеются в Активность email.

Интересно видеть, в каких email-рассылках и кампаниях учавствует Контакт

Нравится

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

На закладке История в карточке контакта найдете обе детали

На закладке История в карточке контакта найдете обе детали

Владимир Соколов, Я удалил деталь Рассылки Email. Подскажите, что у вас стоит в Колонка детали и в Колонка объекта у этой детали?

Александр, там так:

Зверев Александр, Спасибо!

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

Есть БП, в котором в элементе "Сценарий" получается локализованный шаблон Email c помощью конструкции:

MacrosHelperServiceRequest request = new MacrosHelperServiceRequest();
request.EntityId = activeRowId;
request.TemplateId = emailTemplateId;
request.EntityName = entityName;
			
var macrosHelperService = new MacrosHelperService(new GlobalMacrosHelper(), _uc);
MacrosHelperServiceResponse result = macrosHelperService.GetMultiLanguageTextTemplate(request);

Шаблон формируется.
НО только если не стоит галочка  "Выполнять следующие элементы в фоновом режиме"
Если галочка стоит, то получаем ошибку в журнале БП:

System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
   в Terrasoft.WebApp.Global.<>c.<WorkspaceDependenciesInitializer>b__24_0(IContext context)
   в Ninject.Activation.Provider`1.Create(IContext context)
   в Ninject.Activation.Context.ResolveInternal(Object scope)
   в Ninject.Activation.Context.Resolve()
   в Ninject.KernelBase.Resolve(IRequest request, Boolean handleMissingBindings)
   в Ninject.ResolutionExtensions.Get[T](IResolutionRoot root, IParameter[] parameters)
   в Ninject.Activation.Provider`1.Create(IContext context)
   в Ninject.Activation.Context.ResolveInternal(Object scope)
   в Ninject.Activation.Context.Resolve()
   в Ninject.KernelBase.Resolve(IRequest request, Boolean handleMissingBindings)
   в Ninject.Planning.Targets.Target`1.ResolveWithin(IContext parent)
   в System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   в System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   в System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   в Ninject.Activation.Providers.StandardProvider.Create(IContext context)
   в Ninject.Activation.Context.ResolveInternal(Object scope)
   в Ninject.Activation.Context.Resolve()
   в Ninject.KernelBase.Resolve(IRequest request, Boolean handleMissingBindings)
   в Ninject.ResolutionExtensions.Get[T](IResolutionRoot root, String name, IParameter[] parameters)
   в Terrasoft.Core.Factories.ClassFactory.GetInstance[T](Func`1 action)
   в Terrasoft.Configuration.MLangContentFactory.GetDefaultIterator(String schemaName)
   в Terrasoft.Configuration.MLangContentFactory.GetContentKit(String iteratorTagName, String storeTagName)
   в Terrasoft.Configuration.MacrosHelperService.GetMultiLanguageTextTemplate(MacrosHelperServiceRequest request)

Есть подозрение на отсутствие UserConnection при фоновом режиме вызова.
Т.к. при вызове виртуального метода  MLangContentFactory.GetContentKit (в MacrosHelperService.GetMultiLanguageTextTemplate) в конструктор объекта MLangContentFactory не передается UserConnection.

Кто сталкивался с подобной проблемой в фоновых БП и как её можно решить?
Схемы 

Нравится

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

Игорь, привет! Я бы забил на галочку, больше потеряешь времени и нервов на поиски) Проще просто вручную обернуть действие с помощью Task.Factory.StartNew, если нужно без блокировки потока. Правда, отслеживать и логировать, если что-то в helper'e пойдет не так, придется вручную, т.к. всегда будешь получать в процессе "ок"

Не знаю, как сейчас, но когда-то для перевода в фоновый режим достаточно было поставить ожидание по таймеру 1 сек

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

Такое ещё может быть, если вызывается по таймеру БП с генерацией печатной формы.
Часть кода в сервисах генерации печатных форм не умеют так работать.
См. обсуждения: 1, 2, 3 и 4.

В этих темах предлагаются разные доработки и обходные варианты получения UserConnection.

Мотков Илья пишет:

Такое ещё может быть, если вызывается по таймеру БП с генерацией печатной формы.
Часть кода в сервисах генерации печатных форм не умеют так работать.
См. обсуждения: 1, 2, 3 и 4.

В этих темах предлагаются разные доработки и обходные варианты получения UserConnection.

Так в том то и дело, что в рамках своего класса я передаю UserConnection.
А в базовом веб-сервисе MacrosHelperService.GetMultiLanguageTextTemplate при вызове 
MLangContentFactory.GetContentKit в конструктор класса MLangContentFactory оно не передается.

Значит, базовый класс не предусматривает такой передачи UserConnection и нужно делать свой доработанный, как поступали с сервисом печатных форм в примерах по ссылкам.

Лопатин Константин Николаевич пишет:

Игорь, привет! Я бы забил на галочку, больше потеряешь времени и нервов на поиски) Проще просто вручную обернуть действие с помощью Task.Factory.StartNew, если нужно без блокировки потока. Правда, отслеживать и логировать, если что-то в helper'e пойдет не так, придется вручную, т.к. всегда будешь получать в процессе "ок"

 Task.Factory.StartNew не помог.

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

Добрый день. Возникла проблема с передачей параметров бизнес-процесса в тело письма.

Так сконфигурирована отправка.

В тело письма вставлен параметр через "молнию" на панели. Само тело - обычный текст.

 

Параметр - статичная строка, которая нигде в процессе не меняется.

HTML вставки параметра выглядит так:
<img alt="[#Тестовый текст#]" data-type="ProcessParameter" data-value="[#[IsOwnerSchema:false].[IsSchema:false].[Parameter:{f1f5e15e-535c-4266-af02-37716991eb7d}]#]" /><br />

Итоговое письмо после получения выглядит так:

Т.е. параметры не вставляются во время отправки.

Пробовал:
1. Смена почтового провайдера (Office 365, Gmail, Yandex). Опробованы были как и почтовые ящики в роли рассылаемого, так и в роли принимаемого. Результат не изменился.

2. Тест с различными параметрами и различными типами параметров (дата-время, целые числа, строки).

3. Всеразличные перегенерации всех исходников для всех элементов, перекомпиляции всего.

4. Смотреть данные через автогенерируемую страницу перед отправкой. Данные имеются и корректны.

5. Тестирование на версии 7.12.3.980 (Marketing) Там параметры корректно вставляются и письмо с теми же почтовыми провайдерами попадает на почту в необходимом виде.

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

В чем ещё может быть проблема? Заранее спасибо.

 

 

Нравится

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

Для начала нужно выяснить, дело в продукте или в версии. Попробуйте проделать на Marketing 7.14. Работает ли там настроенная Вами логика?

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