Enviar notificación por correo electrónico cuando se publique un nuevo comentario


15

Estoy usando Drupal 8.1 con las Reglas 8.x-3.0-alpha1.

Quiero crear una regla para enviar un correo electrónico al autor de un nodo cuando se publique un nuevo comentario en este nodo. El problema es que no obtuve las reglas de la dirección de correo electrónico del autor porque el conjunto de datos solo me da estos valores: @ node.node_route_context: node o comment pero en el comentario no encontré nada como comment: node: author. En Drupal 7 tengo estos datos. ¿Qué tengo que hacer en Drupal 8?


El estado alfa de las Reglas puede significar que esta funcionalidad aún no está implementada, por lo que es necesario que la aplique usted mismo.
Bojan Zivanovic

1
Gracias, pero parece ser un problema del módulo de token. Debido a que otros módulos, como la notificación de entidad, no obtienen el autor: correo también. Esta ficha parece rota.
lolhonk

Respuestas:


5

Respuesta actualizada

Al probar esto en una nueva instalación de Drupal 8 con Reglas (Alfa 2), me encontré con un error que impide una prueba exitosa de esto, mientras que el selector de datos a continuación es correcto, actualmente no puedo reproducir una regla de trabajo.

El informe de error está aquí: https://www.drupal.org/node/2770291 - Para resumir este problema, las reglas esperan que el parámetro TO: sea una matriz y arroje un error al pasar el token de dirección de correo electrónico a continuación, que devuelve un cuerda.

Mi respuesta inicial es cierta para Drupal 7, sin embargo, para Drupal 8, la situación parece más simple y depende de un solo hecho que aún no está bien documentado.

En D7 estamos familiarizados con una sintaxis similar a: comment:node:author:mail

En D8, el mismo selector (que funciona) es: comment.entity_id.entity.uid.entity.mail.value

Espero que esto ayude, estoy dejando la respuesta anterior a continuación en caso de que ayude a alguien más.

Respuesta anterior

* En general, con las Reglas para usar el valor de un campo, la regla primero debe verificar específicamente la existencia del campo (es decir, que el campo tiene un valor en el contexto en el que se ejecuta la regla). Si aún no lo ha intentado, puede intentar agregar una condición de "Entidad tiene campo" a la regla para verificar la existencia de la dirección de correo electrónico. Esto debería exponer el token para el campo.

He tenido problemas similares al ejecutar reglas usando relaciones entre entidades (que es más o menos lo que estás haciendo haciendo referencia al autor desde el nodo) para verificar la existencia del campo (en tu caso, lo más probable es que verifiques que la entidad tiene un El autor (esto debería abrir el acceso al objeto de usuario) y luego una verificación contra el objeto de usuario para asegurarse de que tenga una dirección de correo electrónico) abrió los tokens de campo disponibles de la entidad referenciada. *


Me interesaría ver una regla de trabajo incluida en esta respuesta que realmente hace de qué se trata esta pregunta ... para D8 . ¿Puedes actualizar tu respuesta para incluir ese ejemplo (usando la versión D8 más reciente del módulo Reglas ? PD: por la cantidad de votos a favor de esta pregunta, parece que hay otros usuarios que también buscan algo similar ...
Pierre. Vriens

Ciertamente y una gran idea, me llevará un poco de tiempo crear un nuevo sitio de prueba para producir esto.
HomoTechsual

No puedo esperar para ver tu respuesta actualizada pronto. Aunque abrir un sitio apropiado está realmente a solo 1 clic de distancia ... use https://simplytest.me/project/rules , acepte la versión (predeterminada) de 8.x-3.0-alpha2 y presione el " sandbox de lanzamiento " - botón. Después de hacerlo, tiene todo en su lugar que necesitaría para construir "rápidamente" la Regla que tiene en mente. Luego expórtelo y copie / pegue esa exportación en su respuesta aquí. Luego, hágamelo saber (¿comentario adicional?) Su regla está lista para la revisión de control de calidad. Sería bueno si pudieras publicarlo en algún lugar en los próximos días ... si puedes.
Pierre.Vriens

Hola @ Pierre.Vriens. He editado mi comentario, después de jugar un poco más con las Reglas en D8, esto resulta ser menos complejo de lo que pensaba y más como resultado de los selectores cambiados en D8.
HomoTechsual

Además, no estoy seguro de por qué siempre me olvido de SimplyTest.me
HomoTechsual

1

Hay un ejemplo de trabajo en la cola de problemas de Reglas que se publicó en noviembre de 2016, por lo que esto ha sido posible al menos desde entonces. Ver https://www.drupal.org/project/rules/issues/2828422

Aquí hay una versión ligeramente modificada de esa respuesta. Puede importar esto a su sitio y mirarlo en la interfaz de usuario para aprender cómo configurar esta funcionalidad.

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.