Invia notifica e-mail quando viene pubblicato un nuovo commento


15

Sto usando Drupal 8.1 con le Regole 8.x-3.0-alpha1.

Voglio creare una regola per inviare un'e-mail all'autore di un nodo quando un nuovo commento viene pubblicato su questo nodo. Il problema è che non ho ricevuto l'indirizzo e-mail dell'autore con le regole perché il set di dati mi dà solo questi valori: @ node.node_route_context: nodo o commento ma sotto commento non ho trovato nulla di simile a commento: nodo: autore. In Drupal 7 ho questi dati. Cosa devo fare in Drupal 8?


Lo stato alfa delle Regole potrebbe significare che questa funzionalità non è ancora implementata, richiedendo di correggerla da soli.
Bojan Zivanovic,

1
Grazie ma sembra essere un problema del modulo token. Perché altri moduli come la notifica Entity non ottengono l'autore: anche la posta. Questo token sembra rotto.
lolhonk,

Risposte:


5

Risposta aggiornata

Durante il test su una nuova installazione di Drupal 8 con Rules (Alpha 2) ho riscontrato un bug che impedisce un test riuscito di questo, mentre il selettore di dati di seguito è corretto, al momento non sono in grado di riprodurre una regola funzionante.

La segnalazione di bug è qui: https://www.drupal.org/node/2770291 - Per riassumere questo problema, le regole si aspettano che il parametro TO: sia un array e genererà un errore quando si passa il token dell'indirizzo e-mail di seguito che restituisce un corda.

La mia risposta iniziale è vera per Drupal 7, tuttavia per Drupal 8 la situazione sembra più semplice e dipende da un singolo fatto che non è ancora ben documentato.

In D7 abbiamo familiarità con una sintassi simile a: comment:node:author:mail

In D8 lo stesso selettore (che funziona) è: comment.entity_id.entity.uid.entity.mail.value

Spero che questo aiuti, lascio la risposta precedente qui sotto nel caso in cui aiuti qualcun altro.

Risposta precedente

* In generale, con le Regole per utilizzare il valore di un campo, la regola deve prima verificare in modo specifico l'esistenza del campo (ovvero che il campo ha un valore nel contesto in cui la regola è in esecuzione). Se non lo hai già provato, potresti provare ad aggiungere una regola "Entity has field" alla regola per verificare l'esistenza dell'indirizzo email. Questo dovrebbe quindi esporre il token per il campo.

Ho avuto problemi simili nell'esecuzione delle regole utilizzando le relazioni dell'entità (che è più o meno ciò che stai facendo facendo riferimento all'autore dal nodo) verificando l'esistenza del campo (nel tuo caso molto probabilmente un controllo che l'entità ha un L'autore (questo dovrebbe aprire l'accesso all'oggetto utente) quindi un controllo sull'oggetto utente per assicurarsi che abbia un indirizzo e-mail) ha aperto i token di campo disponibili dall'entità referenziata. *


Sarei interessato a vedere una regola funzionante inclusa in questa risposta che in realtà fa di cosa tratta questa domanda ... per D8 . Puoi aggiornare la tua risposta per includere tale esempio (utilizzando la versione D8 più recente del modulo Regole ? PS: dal numero di voti positivi di questa domanda, sembra che ci siano altri utenti che cercano anche qualcosa di simile ...
Pierre. Vriens,

Certamente e un'ottima idea, mi ci vorrà un po 'di tempo per creare un nuovo sito di test per produrlo.
HomoTechsual,

Non vedo l'ora di vedere presto la tua risposta aggiornata. Anche se la creazione di un sito appropriato è in realtà solo un clic di distanza ... usa https://simplytest.me/project/rules , accetta la versione (predefinita) di 8.x-3.0-alpha2 e premi " avvia sandbox " - pulsante. Dopo aver fatto, hai tutto a posto che avresti bisogno di "rapidamente" costruire la Regola che hai in mente. Quindi esportalo e copia / incolla l'esportazione nella tua risposta qui. Fammi sapere (commento extra?) La tua regola è pronta per la revisione del QA. Sarebbe bello se potessi postarlo da qualche parte nei prossimi giorni ... se puoi.
Pierre.Vriens,

Ciao @ Pierre.Vriens Ho modificato il mio commento, dopo aver giocato un po 'più avanti con le Regole su D8, questo risulta essere meno complesso di quanto pensassi e più un risultato dei selettori modificati in D8.
HomoTechsual,

Inoltre non sono sicuro del motivo per cui mi dimentico sempre di SimplyTest.me
HomoTechsual,

1

C'è un esempio funzionante nella coda di emissione delle regole pubblicato a novembre 2016, quindi questo è stato possibile almeno da allora. Vedi https://www.drupal.org/project/rules/issues/2828422

Ecco una versione leggermente modificata di quella risposta. Puoi importarlo nel tuo sito e guardarlo nell'interfaccia utente per scoprire come configurare questa funzionalità.

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.