Поделиться через


Добавление динамического содержимого в сообщения электронной почты

Совет

Если вы хотите попробовать Dynamics 365 Customer Insights бесплатно, вы можете зарегистрироваться для использования 30-дневной пробной версии.

Внимание

Эта статья применима только к исходящему маркетингу.

Динамическое содержимое разрешается непосредственно перед отправкой сообщения указанному человеку. Обычно динамическое содержимое используется для слияния информации из записи контакта получателя (например, имя и фамилия), размещения специальных ссылок, а также размещения сведений и ссылок из параметров содержимого. Если вы умеете работать в коде, можно также создать настраиваемую логику, содержащую условные операторы, циклы for-each и т. д. Динамическое содержимое может использоваться в любом месте основного текста сообщения, а некоторые типы динамических значений можно также использовать в полях заголовка сообщения (тема, адрес отправителя и имя отправителя).

Использование параметров содержимого для настройки репозиториев стандартных и обязательных значений для сообщений электронной почты

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

Dynamics 365 Customer Insights - Journeys поставляется с одной записью параметров содержимого по умолчанию, в которой заранее настроено использование центра подписок по умолчанию (также поставляется в готовом виде). Можно внести требуемые изменения в эту записи; кроме того, можно также создавать дополнительные записи. Каждый цикл взаимодействия с клиентом настраивается для использования определенной записи параметров содержимого, то есть для всех сообщений, отправляемых этим циклом взаимодействия, будет использоваться одна и та же запись. Однако каждый цикл взаимодействия может использовать свою запись, то есть можно использовать идентичный дизайн маркетинговых сообщений электронной почты для двух и более циклов взаимодействия с клиентом, в каждом из которых задана своя запись параметров содержимого. Если имеется несколько записей параметров содержимого, одна из них является записью по умолчанию и автоматически применяется для всех новых создаваемых циклов взаимодействия с клиентом.

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

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

Заметка

Если у вас есть другие типы значений, которые часто используются в сообщениях электронной почты, и/или которыми вы хотите управлять на уровне цикла взаимодействия с клиентом, то вы можете добавить их как настраиваемые поля в сущность параметров содержимого так же, как вы можете для других типов сущностей в Dynamics 365. Однако в текущем выпуске все настраиваемые поля для сущности параметров содержимого должны иметь текстовый (строковый) тип. Подробнее: Настройка Customer Insights - Journeys

Для просмотра, изменения или создания записи параметров содержимого:

  1. Перейдите в раздел Исходящий маркетинг>Маркетинговые шаблоны>Параметры содержимого.

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

  3. Открывается форма Параметры содержимого. Если изменяется запись, которая уже введена в действие, перед ее редактированием необходимо выбрать Изменить на панели команд, прежде чем сможете ее редактировать. Если создается новая запись, можно просто начинать заполнять поля.

    Откроется форма параметров содержимого.

  4. Задайте требуемые значения следующих параметров:

    • Имя. Введите имя для записи параметров клиента. Это имя отображается, когда вы назначаете параметры содержимого циклу взаимодействия с клиентом или предварительному просмотру сообщения электронной почты.
    • Владелец: показывает пользователя Dynamics 365 Customer Insights - Journeys, создавшего запись.
    • Основной адрес. Введите основную часть почтового адреса вашей организации. Все маркетинговые сообщения электронной почты должны содержать основной адрес, взятый из записи параметров содержимого. Нажмите кнопку Кнопка «Персонализация»., чтобы использовать персонализацию для ввода выражения, которое ссылается на поле из существующей записи (например, поле адреса из определенной записи организации).
    • Строка адреса 2. Введите дополнительные сведения о почтовом адресе (если требуется). Нажмите кнопку Кнопка «Персонализация»., чтобы использовать персонализацию для ввода выражения, которое ссылается на поле из существующей записи (например, поле адреса из определенной записи организации).
    • По умолчанию. Установите значение Да, чтобы задать текущую запись параметров содержимого в качестве записи по умолчанию для всех новых циклов взаимодействия с клиентом. Всегда должен существовать ровно один набор по умолчанию; при изменении набора по умолчанию для существующего набора по умолчанию автоматически устанавливается значение Нет.
    • Ответственное подразделение по умолчанию: эта настройка доступна только при включенном определении областей бизнес-подразделений. Установите значение Да, чтобы задать текущую запись параметров содержимого как по умолчанию для всех новых циклов взаимодействия с клиентом в бизнес-подразделении. Всегда должен существовать ровно один параметр содержимого по умолчанию для области бизнес-подразделения; при изменении значения по умолчанию существующее значение по умолчанию автоматически устанавливается как Нет.
    • URL-адрес LinkedIn, URL-адрес Twitter, URL-адрес Facebook, URL-адрес Instagram, URL-адрес YouTube и URL-адрес Google Plus: для каждой из этих социальных сетей введите URL-адрес целевой страницы для вашей организации.
    • Центр подписок. Укажите существующую маркетинговую страницу, которая настроена как центр подписок. Все маркетинговые сообщения электронной почты должны содержать действительную ссылку на центр подписок, взятую из записи параметров содержимого. Нажмите кнопку Кнопка «Персонализация»., чтобы использовать персонализацию для ввода выражения, которое ссылается на поле Полный URL-адрес страницы для страницы, которую вы хотите использовать. Полученное выражение выглядит примерно так (где GUID меняется в зависимости от записи, выбранной с помощью персонализации):
      {{msdyncrm_marketingpage(3343053c-8daf-e911-a85e-000d3a3155d5).msdyncrm_full_page_url}}
    • Переслать другу. Укажите существующую маркетинговую страницу, которая настроена как страница "Переслать другу". Нажмите кнопку Кнопка «Персонализация». для выбора из списка доступных страниц. Нажмите кнопку Кнопка «Персонализация», чтобы использовать персонализацию для ввода выражения, которое ссылается на поле Полный URL-адрес страницы для страницы, которую вы хотите использовать. Полученное выражение выглядит примерно так (где GUID меняется в зависимости от записи, выбранной с помощью персонализации):
      {{msdyncrm_marketingpage(36458a9e-72af-e911-a859-000d3a3159df).msdyncrm_full_page_url}}
  5. Выберите Сохранить в правом нижнем углу окна, чтобы сохранить свои параметры.

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

Использование персонализации для размещения динамических значений полей

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

Заметка

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

Использование персонализации для размещения динамических выражений

Использование персонализации

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

    Персонализация, страница 1

  2. Выполните одно из следующих действий:

    • Выберите Динамическое содержимое для размещения значения, которое может изменяться в зависимости от контекста, в котором используется сообщение, затем выберите из раскрывающегося списка одно из следующего:
      • Контакт. Размещается значение поля, например имя, из записи контакта получателя. Эти значения зависят от получателя.
      • ContentSettings: помещает значение поля из параметров содержимого. Здесь доступны такие значения, как URL-адрес центра подписки, URL-адрес переадресации и почтовый адрес отправителя. Эти значения могут варьироваться в зависимости от цикла взаимодействия с клиентом, в котором используется сообщение.
      • FormDoiSubmission: размещает динамическое поле для формы двойной регистрации. Это поле не требует значения отношения, как обсуждается ниже.
      • Сообщение. Размещает значения, связанные с самим сообщением; в настоящее время сюда входят только URL-адреса "Открыть как веб-страницу" и различные динамические значения, используемые в сообщениях двойной регистрации.
    • Выберите Статическое содержимое, чтобы поместить фиксированное значение из определенной записи (например, название предстоящего события). Это значение является тем же, независимо от того, где вы используете сообщение или кто его получает. Затем выполните следующие настройки для идентификации сущности и записи, содержащей необходимое значение:
      • Выберите параметр (поле со списком вверху): выберите сущность (например, событие или организацию). Чтобы найти сущность, поместите курсор в это поле и начните вводить ее имя до тех пор, пока не будет показана нужная сущность.
      • Выберите запись (нижний раскрывающийся список): выберите конкретную запись по имени. В этом списке отображаются все записи из выбранной сущности. Как и в случае сущности, вы также можете искать здесь.
  3. Теперь необходимо определить конкретное поле, которое требуется поместить. Выполните одно из следующих действий.

    • Выберите Связанная сущность, чтобы найти поле из сущности, связанной с той, которая была выбрана на предыдущей странице. Затем сделайте следующие настройки, чтобы определить отношение и поле, которое вы хотите показать:
      • Выберите отношение: отношение определяет, к какой второй сущности вы хотите перейти, и путь, по которому вы будете туда переходить. Чтобы найти отношение, поместите курсор в это поле и начните вводить его имя до тех пор, пока не будет показано нужное отношение, затем выберите его. Дополнительные сведения о том, как понять способ представления отношений здесь, см. следующий раздел.
      • Выберите поле: выберите имя поля, которое требуется отобразить. Как и в случае отношения, вы также можете искать здесь. Этот раскрывающийся список доступен только в том случае, если вы выбрали отношения N:1.
  4. В нижней части диалогового окна теперь отображается созданное окончательное выражение. Выберите Вставить, чтобы поместить это выражение.

    Персонализация, страница 2

Внимание

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

Как в персонализации представляются отношения в базе данных

При выборе отношения в персонализации параметры отображаются с использованием одного из следующих соглашений об именовании:

  • FieldName (PrimaryEntity) - > SecondaryEntity
    Когда первичная сущность находится в скобках и содержит имя поля, это отношение многие-к-одному (N:1), которое приводит к одной записи для вторичной сущности. Поэтому обычно следует использовать второй раскрывающийся список для выбора поля из вторичной сущности для отображения с вашим выражением.
  • PrimaryEntity -> FieldName (SecondaryEntity)
    Когда вторичная сущность находится в скобках и содержит имя поля, это отношение один-ко-многим (1:N), которое может привести к нескольким записям для вторичной сущности. Поэтому вы не можете выбрать поле (второй раскрывающийся список отключен) и вместо этого должны использовать это соотношение как часть цикла for/each для отображения значений из каждой доступной связанной записи.
  • PrimaryEntity -> SecondaryEntity
    Когда ни одна сущность не находится в скобках, это отношение многие-ко-многим (N:N), которое может соединить несколько записей в обоих направлениях. Поэтому вы не можете выбрать поле (второй раскрывающийся список отключен), и вы не можете использовать эти отношения для персонализации. Это связано с тем, что связь поддерживается промежуточной сущностью, и вы можете переходить только к промежуточной сущности из основной сущности.

Где:

  • PrimaryEntity — это начальная сущность отношения. Он всегда отображается слева от стрелки. Это сущность, которую вы выбрали на предыдущей странице диалогового окна персонализации. Например, Контакт (первичная сущность) может быть связан с сущность Организация (вторичная сущность) через поле Название компании контакта (имя поля); это будет показано как Название компании (Контакт) -> Организация.
  • FieldName всегда отображается рядом с именем сущности (которое находится в скобках). Это имя поля, через которое устанавливается отношение. Поле с этим именем относится к сущности в скобках и показывает значение из сущности сбоку от стрелки (но на самом деле содержит идентификатор связанной записи, из которой подставляется значение). В некоторых случаях вы заметите отношение между теми же двумя сущностями, каждая из которых проходит через другое поле.
  • SecondaryEntity — назначение отношения. Оно всегда отображается справа от стрелки. Значения, которые отображаются с окончательным выражением, подставляются из поля, принадлежащего ко вторичной сущности.

Заметка

Для отношений N:N значение поля не отображается. Это означает, что если у вас есть более чем одно отношение N:N между двумя одинаковыми сущностями, вы увидите несколько идентичных отношений в раскрывающемся списке. Это очень редкая ситуация, но если вы видите ее, вы должны будете искать нужное отношение наугад. Чтобы подтвердить, вы можете проверить результирующее выражение (отношения выглядят по-разному, и это может быть подсказкой) или настроить тестовое сообщение, которое включает обе версии отношения N:N и использовать тестовый цикл взаимодействия с клиентом, чтобы доставить сообщение себе.

Ниже приведено несколько примеров:

  • Название организации (Контакт) > Организация: это отношение используется сущностью Контакт для отображения информации из сущности Организация в поле Название организации записи контакта. Иными словами, оно содержит ссылку на компанию (организацию), в которой работает контакт.
  • Управляющий партнер (Контакт) > Организация: это отношение используется сущностью Контакт для отображения информации из сущности Организация в поле Управляющий партнер записи контакта. Иными словами, оно связывает компанию (организацию), которая является управляющим партнером, с контактом.
  • Контакт -> Основной контакт (Организация): это отношение используется сущностью Организация для отображения информации из сущности Контакт в поле Основной контакт записи организации. Другими словами, оно находит все организации, в которых текущий контакт назначен в качестве основного контакта.
  • Контакт > Контакт (Регистрация на событие): это отношение используется сущностью Регистрация на событие для отображения информации из сущности Контакт в поле Контакт записи регистрации на событие. Другими словами, оно находит все регистрации на событие, сделанные текущим контактом или для него.

Выражения, создаваемые в персонализации

Персонализация создает выражение следующего формата:

  • {{EntityName.FieldName}}
  • {{EntityName(RecordID).FieldName}}
  • {{EntityName.RelationshipName.FieldName}}
  • {{EntityName(RecordID).RelationshipName.FieldName}}

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

  • {{contact.firstname}}
    Размещает имя получателя.
  • {{msdyncrm_marketingpage(3343053c-8daf-e911-a85e-000d3a3155d5).msdyncrm_full_page_url}}
    Помещает значение поля msdyncrm_full_page_url из записи маркетинговой страницы, заданной GUID, в скобках. Выражение в такой форме обычно используется в записи параметров содержимого, чтобы задать центр подписок или страницу для пересылки другу.
  • {{msdyncrm_contentsettings.msdyncrm_subscriptioncenter}}
    Размещает URL-адрес страницы центра подписок, указанный в параметрах содержимого, настроенных для цикла взаимодействия с клиентом, из которого отправляется сообщение.
  • {{msdyncrm_contentsettings.msdyncrm_forwardtoafriend}}
    Размещает URL-адрес страницы пересылки, указанный в параметрах содержимого, настроенных для цикла взаимодействия с клиентом, из которого отправляется сообщение.
  • {{Message.ViewAsWebpageURL}}
    Размещает URL-адрес для открытия текущего сообщения в веб-браузере.
  • {{msevtmgt_event(8a519395-856c-4e22-b560-650ce6d6a79d).msevtmgt_webinarurl}}
    Размещает URL-адрес вебинара для события, заданного указанным идентификатором события (в скобках).
  • {{msdyn_survey(39128da2-c968-4627-9595-f030b6571be4).msdyn_name}}
    Размещает название опроса, заданное указанным идентификатором опроса (в скобках).
  • {{contact.contact_account_parentcustomerid.name}}
    Это выражение находит имя организации компании, в которой работает контакт.
  • {{contact.contact_account_msa_managingpartnerid.name}}
    Это выражение находит имя управляющего партнера для организации компании, в которой работает контакт.

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

Внимание

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

Совет

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

Заметка

Функция отправки электронной почты Dynamics 365 Customer Insights - Journeys не поддерживает вычисляемые поля.

Динамические значения в полях "Кому", "Имя отправителя", "Адрес отправителя" и "Адрес для ответа"

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

Параметры отправителя и получателя для сообщений электронной почты.

Один из типичных способов использования этой функции — задать в полях Имя отправителя и Адрес отправителя владельца записи контакта. После назначения ответственного за каждую запись контакта продавцу, управляющему этим контактом, получатели будут получать маркетинговые сообщения, в которых будет отображаться известный им адрес отправителя, что увеличит вероятность открытия письма. Это делается следующим образом:

  1. Если в вашем экземпляре Customer Insights - Journeys еще не настроена синхронизация сущности Пользователь (systemuser) со службой Marketing Insights, обратитесь к администратору, чтобы настроить ее. Если вы администратор, см. инструкции в разделе Выбор сущностей для синхронизации со службой Marketing Insights.
  2. Откройте сообщение электронной почты и перейдите на вкладку Сводка.
  3. Удалите содержимое поля Имя отправителя, а затем выберите кнопку ПерсонализацияКнопка «Персонализация» рядом с этим полем.
  4. Выберите Контекстный, а затем Контакт на первой странице диалогового окна персонализации. Затем выберите Далее.
  5. На второй странице диалогового окна персонализации выберите Связанная сущность, а затем:
    • В верхнем раскрывающемся списке (отношение) выберите Ответственный пользователь (Контакт) -> Пользователь.
    • В нижнем раскрывающемся списке (поле) выберите Полное имя.
  6. Выберите OK, чтобы поместить выражение, которое должно иметь вид {{contact.contact_systemuser_owninguser.fullname}}.
  7. Удалите содержимое поля Имя отправителя, а затем выберите кнопку ПерсонализацияКнопка «Персонализация» рядом с этим полем.
  8. Выберите Контекстный, а затем Контакт на первой странице диалогового окна персонализации. Затем выберите Далее.
  9. На второй странице диалогового окна персонализации выберите Связанная сущность, а затем:
    • В верхнем раскрывающемся списке (отношение) выберите Ответственный пользователь (Контакт) -> Пользователь.
    • В нижнем раскрывающемся списке (поле) выберите Основной адрес эл. почты.
  10. Выберите OK, чтобы поместить выражение, которое должно иметь вид {{contact.contact_systemuser_owninguser.internalemailaddress}}.

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

С помощью динамических выражений можно определять исходный URL-адрес изображений. Чтобы сделать это, выберите элемент изображения, перейдите на панель Свойства, а затем выберите кнопку ПерсонализацияКнопка «Персонализация» рядом с полем Источник, чтобы вставить в качестве части URL-адреса динамический текст. Обычно он дополняется статическим текстом для получения полного URL. Например, можно с помощью ИД контакта получателя или названия компании вставлять изображение, индивидуально подобранное для каждого получателя.

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

Заметка

Библиотека файлов Dynamics 365 Customer Insights - Journeys создает для каждого отправляемого вами изображения уникальный путь на основе GUID путь, что означает, что изображения в библиотеке файлов имеют непредсказуемые URL-адреса, не включающие в себя исходное имя файла. Поэтому, чтобы использовать описанный здесь метод, вы должны разместить свои изображения на своем собственном веб-сайте или в любой сторонней хостинговой службе, где URL-адреса предсказуемы и могут включать значение, которое легко можно извлечь из поля в Dynamics 365.

Поиск по идентификаторам записей

Для выражений полей без контекста (для которых используется форма {{EntityName(RecordID).FieldName}}) требуется идентификатор записи, указывающий конкретную запись, из которой должно браться значение. Как правило, функция персонализации помогает найти эти идентификаторы, но иногда при разработке динамических функций для сообщения вам может понадобиться найти идентификатор вручную. Чтобы найти идентификатор для любой записи:

  1. Откройте запись, на которую требуется задать ссылку.
  2. Посмотрите на URL-адрес в адресной строке браузера, в которой должен отображаться URL-адрес, подобный следующему:
    https://<MyOrg>.crm.dynamics.com/main.aspx?appid=c8cba597-4754-e811-a859-000d3a1be1a3&pagetype=entityrecord&etn=msevtmgt_event&id=5acc43d5-356e-e811-a960-000d3a1cae35
  3. Найдите часть URL-адреса, которая начинается с символов &id=, за которыми следует идентификационный номер текущей записи. Скопируйте этот номер (только значение) и используйте его в выражении.

Расширенное динамическое содержимое

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

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

Совет

Если требуется, чтобы двойные фигурные скобки отображались в сообщении, а не обозначали начало или конец блока кода, вставьте перед первой фигурной скобкой обратную косую черту (создайте escape-последовательность), например \{{ или \}}. Символы обратной косой черты не отображаются в конечном обработанном сообщении, но двойные фигурные скобки будут отображаться.

Условные операторы и сравнения

Условные операторы (if-then-else) отображают содержимое в зависимости от значения (истина или ложь) одного или нескольких условных выражений. Вы можете добавить код, необходимый для создания этих инструкций, поместив его в текстовый элемент или поместив элементы пользовательского кода между другими элементами оформления. Подробнее: Как вводить в конструктор расширенное динамическое содержимое

Условные выражения имеют следующий вид:

{{#if (<operator> <value1> <value2>)}}
   Content displayed when the expression is true
{{else if (<operator> <value1> <value2>)}}
   Content displayed when the first expression is false and the second one is true
.
.
.
{{else}}
   Content displayed when all expressions are false
{{/if}}

Где:

  • Блок условного оператора должен всегда начинаться с выражения {{#if … }}.
  • Условные выражения должны заключаться в скобки.
  • Условные выражения начинаются с <оператора>, который должен быть одним из значений, перечисленных в следующей таблице. Он определяет способ сравнения первого значения со вторым.
  • <value1> и <value2> — это значения, которые будут сравниваться условным выражением, и каждое из них может быть динамическими или постоянными значениями. Если <значение1> или <значение2> является постоянным строковым значением (не числом и не выражением), то оно должно быть заключено в одинарные кавычки ('); для вещественных чисел в качестве десятичного разделителя используйте точку (.).
  • Если <значение1> является полем типа Boolean (также известным как поле с двумя вариантами в Dynamics 365), то не включайте <оператор> или <значение2> или скобки. Поля типа Boolean всегда имеют значение True или False, так что вы должны просто использовать их непосредственно для установления условия, например {{#if contact.is_vip}}.
  • Выражения {{else}} и {{else if … }} необязательны.
  • Блок условного оператора должен всегда завершаться выражением {{/if}}.

В следующей таблице перечислены все операторы, которые можно использовать в условных выражениях. Другие операторы в настоящее время недоступны; также не допускается использование в условных выражениях составных логических выражений (например, с операторами AND и OR).

Синтаксис Dynamics 365 Customer Insights - Journeys (регистр учитывается) Оператор
eq Равно
ne Не равно
lt Меньше
gt Больше
lte Меньше или равно
gte Больше или равно

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

<p>{{#if (eq contact.address1_country 'Denmark')}}
    Hej
{{else if (eq contact.address1_country 'US')}}
    Hi
{{/if}} {{contact.firstname}}!</p>

Вот пример условного оператора, основанного на поле типа Boolean (два варианта) под названием is_vip; обратите внимание, что поскольку поля типа Boolean всегда возвращают значение True или False, ни один оператор или значение для сравнения или скобки не включены в условие:

<!-- {{#if contact.is_vip}} -->
    <h3>Be sure to show your VIP card to receive a 20% discount!</h3>
<!-- {{/if}} -->

Совет

Пустые значения полей можно проверять с помощью выражения:

{{#if (eq contact.lastname '')}}

Здесь '' — это две одинарные кавычки, а не двойная кавычка. Это выражение находит пустые поля, но не поля со значением NULL.

Совет

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

Не поддерживается:

{{#if A and B}}<DisplayedContent>{{/if}

Эквивалентное выражение (поддерживается):

{{#if A}}{{#if B}}<DisplayedContent>{{/if}}{{/if}}

 
Не поддерживается:

{{#if A or B}}<DisplayedContent>{{/if}

Эквивалентное выражение (поддерживается):

{{#if A}}<DisplayedContent>{{/if}} {{#if B}}<DisplayedContent>{{/if}}

Совет

При тестировании значений, хранящихся в качестве набора параметров в базе данных, используйте значения индекса набора параметров, а не отображаемые значения. Например, у вас может быть поле contact.customertypecode, которое содержит целое число для идентификации типа клиента. Каждый код настраиваемого типа также имеет отображаемое имя, например 0 = "copper", 1 = "silver", and 2 = "gold". В этом случае необходимо настроить выражение, чтобы в нем использовался индекс (целое число), а не соответствующее отображаемое значение. Поэтому, если вы ищете золотых клиентов (gold), вы должны использовать:

{{#if (eq contact.customertypecode 2)}}

Совет

При тестировании больших числовых значений, таких как "1 932 333", не добавляйте разделитель тысяч (,) в операторе сравнения, даже если он отображается в пользовательском интерфейсе. Чтобы проверить на это значение, выражение должно выглядеть примерно так:

{{#if (eq contact.customernumber 1932333)}}

Циклы For-each

Циклы For-each позволяют по одной перебирать записи в коллекции записей, связанных с определенной текущей записью, — например, чтобы получить список всех последних транзакций, связанных с определенным контактом. Вы можете добавить код, необходимый для создания этих инструкций, поместив его в текстовый элемент или поместив элементы пользовательского кода между другими элементами оформления. Подробнее: Как вводить в конструктор расширенное динамическое содержимое

Циклы For-each имеют следующий вид:

{{#each Entity.RelationshipName }}
   ...
   {{this.RelatedField1}}
   ...
   {{this.RelatedField2}}
   ...
{{/each}}

Где:

  • Блок цикла должен всегда начинаться с выражения {{#each … }}.
  • Entity.RelationshipName определяет набор связанных записей, по которому будет выполняться итерация цикла.
  • Цикл начинается с первой доступной связанной записи и повторяется для каждой доступной связанной записи, пока в список не будут включены все связанные записи. Обратите внимание, что связанные записи возвращаются в произвольном и непредсказуемом порядке.
  • {{this.RelatedField<n>}} указывает имя поля из связанной записи. Часть "this" данного выражения указывает на связанную запись, обрабатываемую в текущей итерации цикла; за ней должно следовать допустимое имя поля для связанной сущности. В каждый цикл можно включить любое число полей.
  • Блок цикла должен всегда заканчиваться выражением {{/each}}.

Например, база данных может содержать список продуктов, заказанных контактом. Вы можете включить список этих продуктов в сообщение электронной почты, как показано ниже:

<p>You have purchased:</p>
<ul>
<!-- {{#each contact.contact_product_productid}} -->
<li>{{this.name}}</li>
<!-- {{/each}} -->
</ul>

В этом примере система Dynamics 365 Customer Insights - Journeys была настроена для включения настраиваемой сущности с именем product, которая задает отношение 1:N между сущностями contact и product в поле productid. Чтобы сущность product была доступна в ваших сообщениях электронной почты, она также должна быть синхронизирована со службой Marketing Insights (как обычно).

Внимание

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

Также обратите внимание, что отношения второго уровня не поддерживаются. Поэтому не допускается следующий синтаксис:

{{#each Entity.RelationshipOnEntity}} 
    ... 
    {{#each this.RelationshipOnRelatedEntity}}
        ...
    {{/each}}
    ... 
{{/each}}

Как вводить в конструктор расширенное динамическое содержимое

Необходимо соблюдать осторожность при вводе в конструктор расширенного динамического кода, поскольку при этом легко совершить ошибку. Ниже приведено несколько советов по вводу и тестированию кода:

  • С помощью элементов пользовательского кода разместите фрагменты кода между элементами дизайна на вкладке Конструктор. Это гораздо более наглядно и надежно, чем помещать код непосредственно в HTML с помощью вкладки HTML . Однако вы также можете использовать динамический код внутри текстового элемента, и в этом случае вам, вероятно, понадобится почистить этот код на вкладке HTML, как указано ниже в этом списке. (При работе в полностраничном редакторе выберите элемент пользовательского кода, чтобы отредактировать его содержимое.)
    Элемент пользовательского кода.
  • Если код вводится в текстовый элемент через вкладку Конструктор, дополнительные пробелы и возвраты каретки будут добавлять в код элементы &nbsp; и <p>, что может привести к нарушению его работы. Всегда возвращайтесь на вкладку HTML, чтобы убедиться, что в коде нет лишних тегов, и удалить их при необходимости.
  • При вводе кода в текстовый элемент весь код динамического содержимого должен располагаться либо между парой открывающих и закрывающих тегов (например, <p> и </p>) либо в HTML-комментарии (для кода, который полностью независим от отображаемого текста). На размещайте код за пределами комментариев или допустимых пар HTML-тегов (или элементов пользовательского кода), так как это запутает редактора (особенно при переключении между вкладками HTML и Конструктор). Вы должны работать на вкладке HTML, чтобы проверить и исправить HTML-код в ваших текстовых элементах.
  • Не добавляйте возвраты каретки между элементами кода внутри одного выражения (например, в цикле for-each), если только каждая строка не заключена в собственный набор HTML-тегов (как показано в примере цикла for-each после этого списка).
  • Функция персонализации часто помогает при создании выражений, которые получают значения из базы данных, так как она помогают находить имена таблиц, полей и отношений в базе данных. Этот инструмент доступен при работе в текстовом элементе на вкладке Конструктор, а также при вводе значений в определенные поля, которые поддерживают его (например, в поле темы сообщения электронной почты). Персонализация недоступна при работе на вкладке HTML или в элементе пользовательского кода, поэтому можно начать работу с персонализацией в любом текстовом элементе, а затем вырезать и вставить полученное выражение в элемент пользовательского кода или HTML-код.
  • Используемое при создании циклов или вставке значений подстановки имя отношения должно совпадать с именем в службе Marketing Insights. Это имя отношения не обязательно должно совпадать с именем, которое использовалось для настройки Dynamics 365. Чтобы найти правильное имя связи, используйте функцию персонализации.

Например, можно настроить строку приветствия сообщения электронной почты, введя следующий текст на вкладке HTML конструктора (внутри текстового элемента и вне его):

<p>{{#if (eq contact.address1_country 'Denmark')}}Hej{{else if (eq contact.address1_country 'US')}}Hi{{/if}}{{contact.firstname}}!</p>

Следующий пример (также приведенный ранее) показывает, как использовать комментарии для включения кода, который существуют полностью вне отображаемого содержимого (также на вкладке HTML):

<p>You have purchased:</p>
<ul>
<!-- {{#each contact.contact_product_productid}} -->
<li>{{this.name}}</li>
<!-- {{/each}} -->
</ul>