Enviar notificação por email quando um novo comentário for publicado


15

Estou usando o Drupal 8.1 com as regras 8.x-3.0-alpha1.

Quero criar uma regra para enviar um email ao autor de um nó quando um novo comentário for postado nesse nó. O problema é que não recebi o endereço de email do autor com regras porque o conjunto de dados me fornece apenas esses valores: @ node.node_route_context: node ou comment, mas no comentário não encontrei nada parecido com comment: node: author. No Drupal 7 eu tenho esses dados. O que tenho que fazer no Drupal 8?


O status alfa das Regras pode significar que essa funcionalidade ainda não foi implementada, exigindo que você a remova manualmente.
Bojan Zivanovic

11
Obrigado, mas parece ser um problema do módulo de token. Porque outros módulos, como a notificação de entidade, também não recebem o author: mail. Esse token parece quebrado.
23416 lolhonk

Respostas:


5

Resposta atualizada

Enquanto testava isso em uma nova instalação do Drupal 8 com regras (Alpha 2), encontrei um bug que está impedindo um teste bem-sucedido disso, enquanto o seletor de dados abaixo está correto, atualmente não consigo reproduzir uma regra de trabalho.

O relatório de erros está aqui: https://www.drupal.org/node/2770291 - Para resumir esse problema, Rules espera que o parâmetro TO: seja uma matriz e gerará um erro ao passar o token de endereço de email abaixo, que retorna um corda.

Minha resposta inicial é verdadeira para o Drupal 7, no entanto, para o Drupal 8, a situação parece mais simples e depende de um único fato que ainda não está bem documentado.

No D7, estamos familiarizados com uma sintaxe semelhante: comment:node:author:mail

No D8, o mesmo seletor (que funciona) é: comment.entity_id.entity.uid.entity.mail.value

Espero que isso ajude, estou deixando a resposta anterior abaixo, caso ajude outra pessoa.

Resposta Anterior

* Em geral, com as Regras para usar o valor de um campo, a regra deve primeiro verificar especificamente a existência do campo (ou seja, se o campo tem um valor no contexto em que a regra está sendo executada). Se você ainda não tentou isso, tente adicionar uma condição "A entidade possui campo" à regra para verificar a existência do endereço de email. Isso deve expor o token para o campo.

Eu tive problemas semelhantes ao executar regras usando relações de entidade (que é mais ou menos o que você está fazendo referenciando o autor a partir do nó) verificando a existência do campo (no seu caso, provavelmente uma verificação de que a entidade possui um author (isso deve abrir o acesso ao objeto de usuário) e uma verificação no objeto de usuário para garantir que ele tenha um endereço de email) abriu os tokens de campo disponíveis da entidade referenciada. *


Eu estaria interessado em ver uma regra de trabalho incluída nesta resposta que realmente faz o que esta pergunta é ... para D8 . Você pode atualizar sua resposta para incluir esse exemplo (usando a versão D8 mais recente do módulo Rules ? PS: a partir do número de votos desta pergunta, parece que existem outros usuários também procurando algo semelhante ...
Pierre. Vriens

Com certeza e ótima idéia, levarei um tempo para criar um novo local de teste para produzir isso.
HomoTechsual

Mal posso esperar para ver sua resposta atualizada em breve. Embora a criação de um site apropriado esteja a apenas 1 clique de distância ... use https://simplytest.me/project/rules , aceite a versão (padrão) do 8.x-3.0-alpha2 e clique na " sandbox de inicialização " - botão. Depois disso, você terá tudo o que precisa para construir "rapidamente" a regra que você tem em mente. Em seguida, exporte-o e copie / cole os que exportam em sua resposta aqui. Em seguida, avise-me (comentário extra?) Sua regra está pronta para a revisão do controle de qualidade. Seria bom se você pudesse publicá-lo em algum lugar nos próximos dias ... se puder.
Pierre.Vriens

Oi @ Pierre.Vriens Eu editei meu comentário, depois de jogar um pouco mais com as regras do D8, isso se torna menos complexo do que eu pensava e mais resultado de alterações nos seletores do D8.
HomoTechsual

Também não sei por que sempre esqueço SimplyTest.me
HomoTechsual

1

Há um exemplo de trabalho na fila de emissão de Regras que foi publicada em novembro de 2016, portanto, isso foi possível pelo menos desde então. Consulte https://www.drupal.org/project/rules/issues/2828422

Aqui está uma versão ligeiramente modificada dessa resposta. Você pode importar isso para o seu site e consultá-lo na interface do usuário para saber como configurar essa funcionalidade.

langcode: en
status: true
dependencies: {  }
id: 'email_node_author_on_new_comment'
label: 'Email Node Author on New Comment - Issue 2828422'
events:
  -
    event_name: 'rules_entity_insert:comment'
description: 'Sends email to Node Author when a New Comment is added.'
tags:
  - node
  - email
  - comment
config_version: '3'
expression:
  id: rules_rule
  uuid: b5276280-d0f2-4f64-9512-06f077793c58
  conditions:
    id: rules_and
    uuid: ebf212fc-d858-417d-977d-af1be2cfd886
    conditions: {  }
  actions:
    id: rules_action_set
    uuid: 88a78280-2bca-4367-a4d3-8bbda9397c2a
    actions:
      -
        id: rules_action
        uuid: 5e6e5aed-b75f-412a-9670-48327eb58ba6
        context_values:
          to:
            - '{{ comment.entity_id.entity.uid.entity.mail }}'
          subject: 'Your content {{ comment.entity_id.entity.title }} has a new comment.'
          message: 'Your content {{ comment.entity_id.entity.title }} has a new comment.'
          reply: ''
          language: ''
        context_mapping: {  }
        context_processors:
          to:
            rules_tokens: {  }
          subject:
            rules_tokens: {  }
          message:
            rules_tokens: {  }
          reply:
            rules_tokens: {  }
          language:
            rules_tokens: {  }
        provides_mapping: {  }
        action_id: rules_send_email
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.