Adicionar conteúdo dinâmico a mensagens de e-mail

Importante

Este artigo aplica-se apenas a marketing de saída, que serão removidos do produto em 30 de junho de 2025. Para evitar interrupções, faça a transição para viagens em tempo real antes dessa data. Para obter mais informações: Visão geral da transição

Aviso

Se estiver a utilizar a segurança ao nível do campo para alguns dos seus campos de e-mail, tem de adicionar as permissões corretas ou Customer Insights - Journeys não consegue processar o seu e-mail.

Para configurar a segurança ao nível do campo:

  1. No canto superior direito, selecione o ícone Configurações e, em seguida, selecione Configurações avançadas.
  2. Na secção Sistema , selecione Segurança.
  3. Selecione Perfis de segurança de coluna.
  4. Para criar um novo perfil de Segurança de Campo, selecione Novo Perfil e insira um nome na secção Geral.
  5. Na secção Usuários , adicione o utente do sistema: "# D365 Marketing Core Sending".
  6. Na secção Permissões de Campo, adicione permissão de Leitura a todos os campos obrigatórios.

O conteúdo dinâmico é resolvido imediatamente antes de uma mensagem ser enviada para um indivíduo específico. Regra geral, irá utilizar conteúdo dinâmico para intercalar informações do registo de contacto do destinatário (tais como, o nome próprio e o apelido), colocar ligações especiais e colocar informações e ligações das definições de conteúdo. Se estiver à vontade com trabalho em código, também pode criar uma lógica personalizada que inclui instruções condicionais, ciclos for-each e muito mais. Pode utilizar conteúdo dinâmico em qualquer ponto do corpo da mensagem e também pode utilizar alguns tipos de valor dinâmico nos campos do cabeçalho da mensagem (assunto, endereço do remetente e nome do remetente).

Utilizar definições de conteúdo para configurar repositórios de valores padrão e obrigatórios para mensagens de e-mail

As definições de conteúdo são conjuntos de valores necessários e padrão que estão disponíveis para utilização em mensagens de e-mail de marketing. Cada uma inclui uma ligação para o centro de subscrições, uma ligação de reencaminhamento para um amigo, ligações de redes sociais, o seu endereço postal e outras informações que podem ser colocadas na mensagem como valores dinâmicos utilizando a funcionalidade de personalização.

O Dynamics 365 Customer Insights - Journeys é fornecido com um registo único de predefinições de conteúdo, que está pré-configurado para utilizar o centro de subscrições predefinido (também incluído com a configuração inicial). Pode personalizar este registo conforme necessário e também pode criar registos adicionais. Irá configurar cada percurso do cliente para utilizar um registo de definições de conteúdo específico, o que significa que todas as mensagens enviadas por esse percurso irão utilizar o mesmo registo. No entanto, cada percurso pode utilizar um registo diferente, o que significa que pode utilizar uma estrutura de e-mail de marketing idêntica em dois ou mais percursos de cliente, cada um deles especificando um registo diferente de definições de conteúdo. Se tiver mais do que um registo de definições de conteúdo, um deles será o predefinido e será aplicado automaticamente a cada novo percurso de cliente que criar.

Os valores de definições de conteúdo são avaliados pela primeira vez na altura do envio, o que significa que pode editar um registo de definições de conteúdo em qualquer altura e todas as mensagens de e-mail futuras irão utilizar automaticamente os valores mais recentes.

Cada registo de definições de conteúdo que utiliza terá de estar disponível para os serviços de marketing externos, que gerem a montagem e a entrega de e-mail. Por conseguinte, tem de publicar os registos de definições de conteúdo, escolhendo Passar a Live sempre que criar um novo registo.

Nota

Se tiver outros tipos de valor que utiliza frequentemente em mensagens de e-mail e/ou que pretende gerir ao nível do percurso do cliente, poderá adicioná-los como campos personalizados à entidade Definições de conteúdo à semelhança do que faz para outros tipos de entidade no Dynamics 365. No entanto, na versão atual, todos os campos personalizados para a entidade Definições de conteúdo têm de ser do tipo texto (cadeia de carateres). Mais informações: Personalizar o Customer Insights - Journeys

Para ver, editar ou criar um registo de definições de conteúdo:

  1. Aceda a Marketing de saída>Modelos de marketing>Definições de Conteúdo.

  2. É aberta uma página de lista padrão, onde pode ver, ordenar, procurar e filtrar a lista para localizar um registo específico e utilizar os botões na barra de comando para adicionar ou remover um registo. Selecione um registo para o abrir para edição ou selecione Novo na barra de comando para criar um novo registo.

  3. É aberto o formulário Definições de Conteúdo. Se estiver a editar um registo que já está em direto, tem de escolher Editar na barra de comando antes de o poder editar. Se estiver a criar um novo registo, pode simplesmente começar preencher os campos.

    O formulário de definições de conteúdo.

  4. Efetue as seguintes definições, conforme necessário:

    • Nome: introduza um nome para o registo de definições de cliente. Este é o nome apresentado quando está a atribuir definições de conteúdo para um percurso do cliente ou uma pré-visualização de mensagem de e-mail.
    • Proprietário: mostra o utilizador do Dynamics 365 Customer Insights - Journeys que criou o registo.
    • Endereço principal: introduza a parte principal do endereço da sua organização. Todas as mensagens de e-mail de marketing têm de incluir um endereço principal válido retirado do registo de definições de conteúdo. Selecione o botão para usar O botão Personalização.a personalização para inserir uma expressão que faça referência a um campo de um registro existente (como um campo de endereço de um registro de conta específico).
    • Linha 2 do endereço: introduza informações de endereço postal suplementares (se necessário). Selecione o botão para usar O botão Personalização.a personalização para inserir uma expressão que faça referência a um campo de um registro existente (como um campo de endereço de um registro de conta específico).
    • Predefinição: defina como Sim para tornar o registo atual de definições de conteúdo na predefinição para todos os novos percursos de cliente. Tem de existir sempre exatamente uma predefinição. Se alterar a predefinição, a predefinição existente será automaticamente alterada para Não.
    • Predefinição para unidade de negócio proprietária: esta definição só está disponível quando o controlo de âmbito de unidade de negócio estiver ativado. Defina-o como Sim para tornar o registo atual de definições de conteúdo na predefinição para todos os novos percursos de cliente dentro da unidade de negócio. Tem de existir sempre exatamente uma predefinição de conteúdo para o âmbito da unidade de negócio. Se alterar a predefinição, a predefinição existente será automaticamente alterada para Não.
    • URL do LinkedIn, URL do Twitter, URL do Facebook, URL do Instagram, URL do YouTube e URL do Google Plus: para cada um destes serviços de redes sociais, introduza o URL da página de destino para a sua organização.
    • Centro de subscrições: especifique uma página de marketing existente que esteja configurada como um centro de subscrições. Todas as mensagens de e-mail de marketing têm de incluir uma ligação do centro de subscrições válida retirada do registo de definições de conteúdo. Selecione o botão para usar O botão Personalização.a personalização para inserir uma expressão que faça referência ao campo URL de página inteira para a página específica que você deseja usar. A expressão resultante é semelhante a esta (em que o GUID varia de acordo com o registo escolhido utilizando a personalização):
      {{msdyncrm_marketingpage(3343053c-8daf-e911-a85e-000d3a3155d5).msdyncrm_full_page_url}}
    • Reencaminhar para um amigo: especifique uma página de marketing existente que seja registada como uma página de reencaminhamento para um amigo. Selecione o O botão Personalização. botão para escolher a partir de uma lista de páginas disponíveis. Selecione o botão para usar O botão de personalizaçãoa personalização para inserir uma expressão que faça referência ao campo URL de página inteira para a página específica que você deseja usar. A expressão resultante é semelhante a esta (em que o GUID varia de acordo com o registo escolhido utilizando a personalização):
      {{msdyncrm_marketingpage(36458a9e-72af-e911-a859-000d3a3159df).msdyncrm_full_page_url}}
  5. Selecione Guardar no canto inferior direito da janela para guardar as definições.

  6. Se estiver a editar um registo de definições de conteúdo que já esteve live, em seguida, o registo será publicado novamente de forma automática quando o guardar. Se estiver a criar um novo registo, selecione Entrar em direto na barra de comando para o publicar para os serviços de marketing, de modo a poder começar a utilizá-lo.

Utilizar personalização para colocar valores de campo dinâmicos

A personalização ajuda-o a construir expressões dinâmicas válidas para posicionar os valores de campo de registos de contacto de destinatários, as definições de conteúdo da mensagem e outros valores de base de dados. Este botão é fornecido na barra de ferramentas de formatação de texto sempre que selecionar um elemento de texto no estruturador de gráficos. O botão também é fornecido para alguns campos de definições, como os campos de assunto, endereço de remetente e nome de remetente.

Nota

O diálogo de personalização só mostra entidades e relações sincronizadas com o serviço Marketing Insights. Se necessitar de mostrar informações ou utilizar relações para uma ou mais entidades que não estejam listadas, peça ao seu administrador para adicionar as entidades relevantes ao serviço Marketing Insights. Se for um administrador, consulte Escolher entidades para sincronização com o serviço Marketing Insights para obter instruções. A entidade proprietária não é mais suportada para personalização de e-mail. Substitua-o pelo utente do sistema ou pela entidade da equipa , dependendo de qual entidade representa o proprietário do registro.

Utilizar personalização para colocar uma expressão dinâmica

Para utilizar personalização:

  1. Posicione o cursor no campo ou elemento de texto onde pretende inserir o texto dinâmico e, em seguida, selecione o botão Personalização O botão de personalização. A caixa de diálogo de personalização abre-se.

    Personalização, página 1.

  2. Execute um dos seguintes procedimentos:

    • Selecione Conteúdo dinâmico para colocar um valor que pode ser alterado com base no contexto em que utiliza a mensagem e, em seguida, escolha uma das seguintes opções da lista pendente aqui:
      • Contacto: coloca um valor de campo, tal como um nome próprio, do registo de contacto do destinatário. Estes valores variam consoante o destinatário.
      • ContentSettings: coloca um valor de campo das definições de conteúdo. Valores como um URL do centro de subscrições, um URL de reencaminhamento e o endereço postal do remetente estão disponíveis aqui. Estes valores podem variar de acordo com o percurso do cliente em que a mensagem é utilizada.
      • FormDoiSubmission: coloca um campo dinâmico para dupla confirmação de formulário. Este campo não necessita de um valor de relação, tal como debatido abaixo.
      • Mensagem: coloca valores relacionados com a mensagem propriamente dita. Atualmente inclui o URL para abrir como página Web e os vários valores dinâmicos utilizados em e-mails de dupla confirmação.
    • Selecione Conteúdo estático para colocar um valor fixo de um registo específico (por exemplo, o nome de um evento futuro). Este valor será o mesmo independentemente de onde utilizar a mensagem ou de quem a receber. Em seguida, efetue as seguintes definições para identificar a entidade e o registo que contém o valor necessário:
      • Selecionar uma opção (caixa de combinação superior): selecione a entidade (por exemplo, evento ou conta). Para procurar uma entidade, coloque o cursor nesta caixa e comece a escrever o respetivo nome até a entidade que pretende ser apresentada.
      • Escolher um registo (lista pendente inferior): selecione o registo específico pelo nome. Esta lista mostra todos os registos da entidade selecionada. Tal como acontece com a entidade, também pode procurar aqui.
  3. Agora, tem identifica o campo específico que pretende colocar. Efetue um dos seguintes procedimentos:

    • Selecione Entidade relacionada para localizar um campo de uma entidade relacionada com a que selecionou na página anterior. Em seguida, efetue as seguintes configurações para identificar a relação e o campo que pretende mostrar:
      • Selecionar relação: a relação define qual é a segunda entidade para a qual pretende saltar e o percurso que fará para lá chegar. Para procurar uma relação, coloque o cursor nesta caixa e comece a escrever o respetivo nome até a relação que pretende ser apresentada e, em seguida, selecione-a. Para obter mais informações sobre como compreender o modo como as relações são representadas aqui, consulte a secção seguinte.
      • Selecionar campo: escolha o nome do campo que pretende mostrar. Tal como acontece com a relação, também pode procurar aqui. Esta lista pendente só está disponível se tiver escolhido uma relação N:1.
  4. Na parte inferior do diálogo, verá agora a expressão final. Selecione Inserir para colocar essa expressão.

    Personalização, página 2.

Importante

As listas criadas com ciclos para cada ciclo não são compostas numa determinada ordem e não são ordenadas por nenhum campo.

Forma como a personalização apresenta as relações da base de dados

Ao selecionar uma relação na personalização, as opções são apresentadas utilizando uma das convenções de nomenclatura seguintes:

  • FieldName (PrimaryEntity) -> SecondaryEntity
    Quando a entidade primária está entre parêntesis e mostra um nome de campo, trata-se de uma relação muitos para um (N:1) que resulta num único registo da entidade secundária. Por conseguinte, deverá utilizar normalmente a segunda lista pendente para escolher um campo da entidade secundária a apresentar com a expressão.
  • PrimaryEntity -> FieldName (SecondaryEntity)
    Quando a entidade secundária está entre parêntesis e mostra um nome de campo, trata-se de uma relação um para muitos (1:N) que pode resultar em vários registos da entidade secundária. Por conseguinte, não pode escolher um campo (a segunda lista pendente está desativada) e, em vez disso, tem de utilizar esta relação como parte de um ciclo for-each para apresentar os valores de cada registo relacionado disponível.
  • PrimaryEntity -> SecondaryEntity
    Quando nenhuma entidade está entre parêntesis, é uma relação muitos para muitos (N:N), que pode ligar vários registos em ambas as direções. Por isso, não pode escolher um campo (a segunda lista pendente está desativada) e não pode usar esta relação para personalização. Isto porque a relação é mantida por uma entidade intermédia, e só pode percorrer a entidade intermédia a partir da entidade primária.

Em que:

  • PrimaryEntity é uma entidade no lado inicial da relação. É sempre mostrada no lado esquerdo da seta. Esta é a entidade que escolheu na página anterior do diálogo da personalização. Por exemplo, um Contacto (entidade primária) pode estar relacionado com uma Conta (entidade secundária) através do campo Nome da empresa (nome do campo); isto seria mostrado como: Nome da Empresa (Contacto) -> Conta.
  • FieldName é sempre apresentado junto ao nome da entidade (entre parênteses). Este é o nome do campo através do qual a relação é estabelecida. O campo nomeado pertence à entidade entre parênteses e apresenta um valor da entidade do outro lado da seta (mas, na verdade, contém o ID do registo relacionado a partir do qual o valor é extraído). Em alguns casos, irá notar uma relação entre as mesmas duas entidades, cada um das quais flui por um campo diferente.
  • SecondaryEntity é o destino da relação. É sempre mostrada no lado direito da seta. Os valores apresentados com a expressão final serão provenientes de um campo pertencente à entidade secundária.

Nota

Para as relações N:N, não é apresentado qualquer valor de campo. Isto significa que, se tiver mais do que uma relação N:N entre as mesmas duas entidades, verá várias relações de aparência idêntica na lista pendente. Esta situação é muito rara, mas, se for visualizada, terá de utilizar um método de tentativas para identificar a relação que pretende utilizar. Para confirmar, pode verificar a expressão resultante para ver se parece que escolheu a relação correta (as relações são mostradas de forma diferente aqui e podem dar uma ideia) ou configurar uma mensagem de teste que inclua ambas as versões da relação N:N e utilizar um percurso do cliente de teste para o entregar a si próprio.

Eis alguns exemplos:

  • Nome da Empresa (Contacto) -> Conta: esta relação é utilizada pela entidade Contacto para apresentar informações da entidade Conta no campo Nome da Empresa de um registo de contacto. Por outras palavras, está associado à empresa (conta) para a qual o contacto trabalha.
  • Parceiro de Gestão (Contacto) -> Conta: esta relação é utilizada pela entidade Contacto para apresentar informações da entidade Conta no campo Parceiro de Gestão de um registo de contacto. Por outras palavras, está associada à empresa (conta) que é o parceiro de gestão para um contacto.
  • Contacto -> Contacto principal (Conta): esta relação é utilizada pela entidade Conta para apresentar informações da entidade Contacto no campo Contacto Principal de um registo de conta. Por outras palavras, localiza todas as contas nas quais o contacto atual está definido como o contacto principal.
  • Contacto -> Contacto (Registo de Eventos): esta relação é utilizada pela entidade Registo de Eventos para apresentar informações da entidade Contacto no campo Contacto de um registo de registo de eventos. Por outras palavras, localiza todos os registos de eventos efetuados pelo (ou para o) contacto atual.

Expressões criadas pela personalização

A personalização cria uma expressão que utiliza um formato, tal como o seguinte:

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

Observe que a notação utilizada para os nomes de relação nas expressões resultantes não corresponde à forma como são representados na caixa de diálogo de personalização. Seguem-se alguns exemplos das expressões resultantes:

  • {{contact.firstname}}
    Coloca o nome próprio do destinatário.
  • {{msdyncrm_marketingpage(3343053c-8daf-e911-a85e-000d3a3155d5).msdyncrm_full_page_url}}
    Coloca o valor do campo msdyncrm_full_page_url a partir do registo de página de marketing especificado pelo GUID entre parênteses. Normalmente, poderá utilizar uma expressão deste formulário num registo de definições de conteúdo para especificar uma página do centro de subscrição ou de encaminhamento para um amigo.
  • {{msdyncrm_contentsettings.msdyncrm_subscriptioncenter}}
    Coloca o URL para a página do centro de subscrições identificada nas definições de conteúdo configuradas para o percurso de cliente que envia a mensagem.
  • {{msdyncrm_contentsettings.msdyncrm_forwardtoafriend}}
    Coloca o URL para a página de reencaminhamento identificada nas definições de conteúdo configuradas para o percurso de cliente que envia a mensagem.
  • {{Message.ViewAsWebpageURL}}
    Coloca o URL para abrir a mensagem atual num browser.
  • {{msevtmgt_event(8a519395-856c-4e22-b560-650ce6d6a79d).msevtmgt_webinarurl}}
    Coloca o URL do webinar para o evento identificado pelo ID de evento especificado (em parêntesis).
  • {{msdyn_survey(39128da2-c968-4627-9595-f030b6571be4).msdyn_name}}
    Coloca o nome do inquérito identificado pelo ID de inquérito especificado (em parêntesis).
  • {{contact.contact_account_parentcustomerid.name}}
    Esta expressão localiza o nome da conta relativa à empresa onde um contacto trabalha.
  • {{contact.contact_account_msa_managingpartnerid.name}}
    Esta expressão localiza o nome do parceiro de gestão relativo à conta da empresa onde um contacto trabalha.

Depois de ter uma expressão que funcione, pode copiá-la e colá-la em qualquer local. Não é necessário utilizar sempre a personalização.

Importante

Pode utilizar, no máximo, dois saltos (pontos finais) nas expressões de campo. Não tente criar expressões mais complexas adicionando mais saltos às expressões produzidas com a personalização.

Sugestão

Se necessitar dos tipos de dados que são suportados pela personalização, é melhor utilizar a funcionalidade de personalização para colocar o código, em vez de tentar escrevê-lo de raiz. Deste modo, irá assegurar que os nomes da entidade, da relação e do campo correspondem aos utilizados na base de dados e irá ajudá-lo a evitar erros ortográficos.

Nota

A funcionalidade de envio de e-mail do Dynamics 365 Customer Insights - Journeys não suporta campos calculados.

Valores dinâmicos em campos Para, Endereço do remetente e Responder a

No separador Resumo do formulário E-mail de Marketing, pode efetuar várias definições não relacionadas com o conteúdo para a sua mensagem na secção Remetente e destinatário. Isto inclui valores e expressões para estabelecer os valores de Para, Nome do remetente, Endereço do remetente e Responder a que a mensagem irá utilizar.

Definições de remetente e destinatário para mensagens de e-mail.

Uma forma comum de tirar partido desta funcionalidade é definir o Nome do remetente e o Endereço do remetente para o proprietário do registo de contacto. Em seguida, atribuindo o proprietário de cada registo de contacto ao representante de vendas a gerir esse contacto, os destinatários receberão e-mails de marketing que mostram um endereço de uma pessoa que podem conhecer, o que pode aumentar imenso as taxas de abertura. Saiba como:

  1. Se a instância do Customer Insights - Journeys ainda não estiver configurada para sincronizar a entidade Utilizador (systemuser) com o serviço Marketing Insights, peça ao administrador para a configurar. Se for o admin, consulte Escolher entidades para sincronização com o serviço marketing-insights para instruções.
  2. Abra a mensagem de e-mail e aceda ao separador Resumo.
  3. Exclua o conteúdo do campo Nome de e, em seguida, selecione o botão Personalização O botão de personalizaçãoao lado deste campo.
  4. Na primeira página do diálogo da personalização, selecione Contextual e defina esta opção como Contacto. Em seguida, selecione Seguinte.
  5. Na segunda página do diálogo da personalização, selecione Entidade relacionada e, em seguida:
    • Defina a lista pendente superior (relação) como Utilizador Proprietário (Contacto) -> Utilizador.
    • Defina a lista pendente inferior (campo) como Nome completo.
  6. Selecione OK para colocar a expressão, que deve ser: {{contact.contact_systemuser_owninguser.fullname}}.
  7. Exclua o conteúdo do campo Endereço de origem e selecione o botão Personalização O botão de personalizaçãoao lado desse campo.
  8. Na primeira página do diálogo da personalização, selecione Contextual e defina esta opção como Contacto. Em seguida, selecione Seguinte.
  9. Na segunda página do diálogo da personalização, selecione Entidade relacionada e, em seguida:
    • Defina a lista pendente superior (relação) como Utilizador Proprietário (Contacto) -> Utilizador.
    • Defina a lista pendente inferior (campo) como E-mail principal.
  10. Selecione OK para colocar a expressão, que deve ser: {{contact.contact_systemuser_owninguser.internalemailaddress}}.

Pode utilizar técnicas semelhantes para colocar o nome ou o endereço de e-mail do utilizador proprietário em qualquer ponto do conteúdo da mensagem. Pode fazê-lo utilizando a personalização, copiando/colando as expressões da barra de suporte ou até mesmo escrever as expressões da barra de suporte manualmente.

Pode utilizar uma expressão dinâmica para definir o URL de origem para elementos de imagem. Para fazer isso, selecione o elemento de imagem, vá para o painel Propriedades e, em seguida, selecione o botão Personalização O botão de personalizaçãoao lado do campo Origem para colocar texto dinâmico como parte da URL. Normalmente, irá misturar isto com texto estático para criar um URL completo. Por exemplo, pode incluir o nome da empresa ou do ID de contacto do destinatário para selecionar uma imagem que é relevante para cada destinatário individual.

Da mesma forma, pode utilizar a personalização para ajudar a construir uma expressão dinâmica para definir um destino de Ligação para a imagem.

Nota

A biblioteca de ficheiros do Dynamics 365 Customer Insights - Journeys gera um caminho de ficheiro baseado em GUID exclusivo para cada imagem que carregar, o que significa que as imagens na biblioteca de ficheiros têm URLs imprevisíveis que não incluem o nome de ficheiro original. Por conseguinte, para utilizar a técnica descrita aqui, tem de alojar as suas imagens no seu próprio site ou em qualquer serviço de alojamento de terceiros em que os URLs sejam previsíveis e possam incluir um valor que possa extrair facilmente a partir de um campo do Dynamics 365.

Localizar IDs de registo

As expressões de campo não contextuais (que utilizam o formulário {{EntityName(RecordID).FieldName}}) exigem um ID de registo para identificar o registo específico do qual o valor tem de ser proveniente. Normalmente, a personalização ajuda-o a localizar estes IDs, mas ocasionalmente poderá ter de localizar um ID manualmente enquanto estiver a estruturar as funcionalidades dinâmicas para uma mensagem. Para localizar o ID para qualquer registo:

  1. Abra o registo que pretende referenciar.
  2. Observe o URL mostrado na barra de endereço do browser. Deve apresentar um URL semelhante ao seguinte:
    https://<MyOrg>.crm.dynamics.com/main.aspx?appid=00001111-aaaa-2222-bbbb-3333cccc4444&pagetype=entityrecord&etn=msevtmgt_event&id=11112222-bbbb-3333-cccc-4444dddd5555
  3. Localize a parte do URL que começa por &id=, que é seguida pelo número de ID do registo atual. Copie o número (apenas o valor) e utilize-o na sua expressão.

Conteúdo dinâmico avançado

Pode adicionar processamento lógico avançado às estruturas de e-mail, que pode tornar o conteúdo ainda mais reativo aos destinatários, dados demográficos e contexto. Este tipo de personalização requer que o utilizador tenha noções básicas da utilização de scripts e de programação.

Conforme viu em exemplos anteriores, os conteúdos dinâmicos estão entre duplas chavetas ({{ e }}). Isto inclui os valores de campo padrão que adicionar utilizando a funcionalidade de personalização e as construções de programação mais avançadas descritas nesta secção.

Sugestão

Se pretender apresentar as chavetas duplas numa mensagem, em vez de as utilizar para indicar o início ou fim de um bloco de código, nesse caso, preceda (efetue o escape) a primeira chaveta com uma barra invertida, tal como \{{ou \}}. As barras não serão apresentadas na sua mensagem composta final, mas as chavetas duplas serão.

Comparações e instruções condicionais

As instruções condicionais (if-then-else) apresentam conteúdo consoante uma ou mais expressões condicionais são resolvidas como verdadeiras ou falsas. Pode adicionar o código necessário para criar estas instruções colocando-o no interior de um elemento de texto ou colocando elementos de código personalizado entre os outros elementos de estrutura. Mais informações: Como inserir conteúdo dinâmico avançado no estruturador

As instruções condicionais assumem o seguinte formato:

{{#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}}

Em que:

  • O bloco condicional tem de abrir sempre com {{#if … }}.
  • As expressões condicionais devem estar contidas entre parêntesis.
  • As expressões condicionais começam com um <operador>, que tem de ser um dos valores listados na tabela seguinte. Estabelece a forma como o primeiro valor deve ser comparado com o segundo valor.
  • <valor1> e <valor2> são valores a ser comparados pela expressão condicional e cada um deles pode ser um valor dinâmico ou constante. Se o <valor1> ou o <valor2> for uma cadeia de carateres (não um número ou um expressão), tem de se encontrar entre plicas ('). Para números reais, utilize um ponto final (.) como um delineador decimal.
  • Se o <valor1> for um campo booleano (também conhecido como um campo de duas opções no Dynamics 365), não inclua um <operador>, <valor2> ou os parêntesis. Os campos booleanos têm sempre um valor de verdadeiro ou falso, pelo que deverão ser apenas utilizados diretamente para estabelecer a condição, tal como: {{#if contact.is_vip}}.
  • As cláusulas {{else}} e {{else if … }} são opcionais.
  • O bloco condicional tem de fechar sempre com {{/if}}.

A tabela seguinte lista todos os operadores que pode utilizar nas expressões condicionais. Não estão atualmente disponíveis outros operadores, nem pode utilizar expressões Booleanas complexas (tal como com operadores AND ou OR) nas suas expressões condicionais.

Sintaxe do Dynamics 365 Customer Insights - Journeys (sensível às maiúsculas e minúsculas) Operador
eq Igual a
ne Diferente de
lt Menor que
gt Maior que
lte Menor que ou igual a
gte Maior que ou igual a

Por exemplo, esta declaração condicional pode ser utilizada para estabelecer o idioma utilizado na saudação da mensagem com base no país/região de cada destinatário da mensagem:

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

Segue-se um exemplo de uma instrução condicional baseada num campo booleano (duas opções) chamado is_vip; tenha em atenção que como os campos booleanos devolvem sempre um valor de verdadeiro ou falso; nenhuns operadores, valores de comparação ou parêntesis serão incluídos na condição:

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

Sugestão

É possível efetuar um teste para valores de campo vazios utilizando:

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

Em que '' são duas plicas e não aspas. Esta expressão localiza campos vazios, mas não campos nulos.

Sugestão

Apesar de não ser possível utilizar expressões Booleanas complexas nas suas expressões condicionais, pode implementar funcionalidade semelhante do seguinte modo:

Não suportado:

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

É equivalente a (suportado):

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

 
Não suportado:

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

É equivalente a (suportado):

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

Sugestão

Quando estiver a testar para valores que são armazenados como um conjunto de opções na base de dados, utilize os valores de índice para o conjunto de opções, não os valores de apresentação. Por exemplo, poderá ter um campo denominado contact.customertypecode, que contém um número inteiro para identificar o tipo de cliente que é. Cada código de tipo de cliente também tem um nome a apresentar, sendo que 0 = "cobre", 1 = "prata" e 2 = "ouro". Neste caso, tem de configurar a expressão para utilizar o índice (número inteiro) e não o valor a apresentar correspondente. Por conseguinte, se estiver à procura de clientes ouro, deverá utilizar:

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

Sugestão

Quando estiver a testar grandes valores numéricos, como "1.932.333", não adicione o separador dos milhares (.) à instrução de comparação, mesmo que este seja muitas vezes apresentado na IU. Para testar para este valor, expressão deve assemelhar-se ao seguinte:

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

Para ciclos for-each

Os ciclos for-each permitem-lhe aceder a uma coleção de registos que estejam relacionados com um registo atual específico — por exemplo, para fornecer uma lista de todas as transações recentes associadas a um determinado contacto. Pode adicionar o código necessário para criar estas instruções colocando-o no interior de um elemento de texto ou colocando elementos de código personalizado entre os outros elementos de estrutura. Mais informações: Como inserir conteúdo dinâmico avançado no estruturador

Os ciclos for-each assumem o seguinte formato:

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

Em que:

  • O bloco do ciclo tem de abrir sempre com {{#each … }}.
  • Entity.RelationshipName identifica o conjunto de registos relacionados submetidos à iteração do ciclo.
  • O ciclo é iniciado com o primeiro registo relacionado disponível e repetido para cada registo relacionado disponível até que tenham sido listados todos os registos relacionados. Tenha em atenção que os registos relacionados serão devolvidos numa ordem arbitrária e imprevisível.
  • {{this.RelatedField<n>}} identifica um nome de campo do registo relacionado. A parte "this" desta expressão refere-se ao registo relacionado processado na iteração do ciclo atual e tem de ser seguida por um nome de campo válido para a entidade relacionada. Pode incluir qualquer número de campos em cada ciclo.
  • O bloco do ciclo tem de fechar sempre com {{/each}}.

Por exemplo, a base de dados poderá incluir uma lista de produtos que um contacto encomendou. Poderá listar esses produtos numa mensagem de e-mail utilizando código, tal como:

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

Neste exemplo, o sistema Dynamics 365 Customer Insights - Journeys foi personalizado para incluir uma entidade personalizada denominada produto, que está configurada com uma relação 1:N entre as entidades Contacto e Produto no campo productid. Para a entidade Produto ficar disponível para as mensagens de e-mail, também tem de ser sincronizada com o serviço Marketing Insights (conforme é hábito).

Importante

Só os primeiros 1.000 itens relacionados são adicionados à relação para efeitos de composição de e-mails. A utilização de relações com mais de 1.000 itens não é suportado em modelos de e-mail e pode gerar resultados inesperados.

Note também que as relações de segundo nível não são suportadas. Por conseguinte, não é permitida a seguinte sintaxe:

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

Como inserir conteúdo dinâmico avançado no estruturador

Tem de ter cuidado ao introduzir código dinâmico avançado no estruturador porque existem muitas formas, por vezes inesperadas, de introduzir erros que irão quebrar o código. Eis algumas sugestões sobre como introduzir e testar o código:

  • Utilize elementos de código personalizado para colocar fragmentos de código entre elementos de estrutura no separador Estruturador. É um procedimento muito mais visível e fiável do que colocar o código diretamente no HTML utilizando o separador HTML. No entanto, também poderá utilizar o código dinâmico num elemento de texto. Nesse caso, provavelmente terá de limpar esse código no separador HTML, conforme mencionado mais tarde nesta lista. (Ao trabalhar no editor de página completa, selecione um elemento de código personalizado para editar o respetivo conteúdo.)
    O elemento de código personalizado.
  • Quando introduz código num elemento de texto do separador Estruturador, quaisquer espaços e símbolos de retorno adicionais que acrescentar irão criar as tags &nbsp; e <p> no seu código, o que poderá quebrá-lo. Verifique sempre o separador HTML posteriormente, onde poderá ver todas estas tags adicionais e não se esqueça de as remover.
  • Quando introduz texto num elemento de texto, todo o seu código de conteúdo dinâmico tem de estar contido num conjunto de tags de início e fim (tais como <p> e </p>) ou num comentário em HTML (para código totalmente separado do texto apresentado). Não coloque código fora de pares de etiquetas de HTML válidos ou de comentários (ou elementos de código personalizado), pois isso irá confundir o editor (especialmente se alternar entre os separadores HTML e Estrutura). Terá de trabalhar no separador HTML e inspecionar e corrigir o HTML nos seus elementos de texto.
  • Não coloque símbolos de retorno entre elementos de código que fazem parte da mesma expressão (tal como num ciclo for-each), a menos que coloque cada linha dentro do seu próprio conjunto de tags de HTML (tal como é ilustrado no exemplo do ciclo for-each dado após a esta lista).
  • A funcionalidade de personalização é muitas vezes útil para construir expressões que obtêm valores da base de dados, porque o ajuda localizar nomes de tabelas, campos e relações da base de dados. Esta ferramenta está disponível ao trabalhar num elemento de texto no separador Estruturador e ao introduzir valores em determinados campos que o suportam (tal como o assunto do e-mail). A personalização não está disponível ao trabalhar no separador HTML ou num elemento de código personalizado, pelo que, em vez disso, pode começar por utilizar a personalização em qualquer elemento de texto e, em seguida, cortar/colar a expressão resultante no elemento de código personalizado ou HTML.
  • O nome de relação que utilizar ao criar ciclos ou colocar valores de pesquisa tem de corresponder ao utilizado no serviço Marketing Insights. Este nome de relação não é necessariamente o mesmo que é utilizado para personalizar o Dynamics 365. Para localizar o nome de relação correto, utilize a funcionalidade de personalização.

Por exemplo, poderá configurar a linha de saudação de uma mensagem de e-mail introduzindo o seguinte no separador HTML do estruturador (quer dentro ou fora de um elemento de texto):

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

O seguinte exemplo (também mostrado anteriormente) mostra como utilizar comentários para incluir código que existe totalmente fora do conteúdo apresentado (também no separador HTML):

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