Wyślij powiadomienie e-mail, gdy zostanie opublikowany nowy komentarz

15

Używam Drupala 8.1 z Regułami 8.x-3.0-alpha1.

Chcę utworzyć regułę, aby wysłać wiadomość e-mail do autora węzła, gdy nowy komentarz zostanie opublikowany w tym węźle. Problem polega na tym, że nie otrzymałem adresu e-mail autora z regułami, ponieważ zestaw danych podaje mi tylko te wartości: @ node.node_route_context: węzeł lub komentarz, ale pod komentarzem nie znalazłem niczego takiego jak komentarz: node: autor. W Drupal 7 mam te dane. Co muszę zrobić w Drupal 8?

lolhonk
źródło
Status alfa reguł może oznaczać, że ta funkcja nie jest jeszcze zaimplementowana, co wymaga samodzielnej łatki.
Bojan Zivanovic
1
Dzięki, ale wydaje się, że jest to problem modułu tokena. Ponieważ inne moduły, takie jak powiadomienie o jednostce, nie otrzymują autora: również poczta. Ten token wydaje się zepsuty.
lolhonk

Odpowiedzi:

5

Zaktualizowana odpowiedź

Podczas testowania tego na nowej instalacji Drupala 8 z regułami (Alpha 2) natknąłem się na błąd, który uniemożliwia udany test tego, podczas gdy poniższy selektor danych jest poprawny, obecnie nie jestem w stanie odtworzyć działającej reguły.

Raport o błędzie znajduje się tutaj: https://www.drupal.org/node/2770291 - Podsumowując ten problem Reguły oczekują, że parametr TO: będzie tablicą i zgłosi błąd podczas przekazywania tokena adresu e-mail, poniżej którego zwraca strunowy.

Moja pierwsza odpowiedź jest prawdziwa w przypadku Drupala 7, jednak w przypadku Drupala 8 sytuacja wydaje się prostsza i opiera się na jednym fakcie, który nie jest jeszcze dobrze udokumentowany.

W D7 znamy składnię podobną do: comment:node:author:mail

W D8 ten sam selektor (który działa) to: comment.entity_id.entity.uid.entity.mail.value

Mam nadzieję, że to pomoże, zostawiam poprzednią odpowiedź poniżej na wypadek, gdyby pomógł komuś innemu.

Poprzednia odpowiedź

* Zasadniczo w przypadku reguł, aby użyć wartości pola, reguła musi najpierw dokładnie sprawdzić istnienie pola (tzn. Czy pole ma wartość w kontekście, w którym reguła jest uruchomiona). Jeśli jeszcze tego nie próbowałeś, możesz spróbować dodać do reguły warunek „Jednostka ma pole”, aby sprawdzić, czy istnieje adres e-mail. To powinno odsłonić token pola.

Miałem podobne problemy z wykonywaniem reguł przy użyciu relacji encji (mniej więcej to, co robisz, odwołując się do autora z węzła) sprawdzanie istnienia pola (w twoim przypadku najprawdopodobniej sprawdzenie, czy encja ma autor (powinno to otworzyć dostęp do obiektu użytkownika), a następnie sprawdzenie obiektu użytkownika w celu upewnienia się, że ma on adres e-mail) otworzył dostępne tokeny pól od jednostki, do której istnieje odwołanie. *

HomoTechsual
źródło
Chciałbym zobaczyć działającą regułę zawartą w tej odpowiedzi, która faktycznie robi, o co chodzi w tym pytaniu ... dla D8 . Czy możesz zaktualizować swoją odpowiedź, aby zawierała taki przykład (korzystając z najnowszej wersji modułu Reguły D8 ? PS: z liczby głosów pozytywnych na to pytanie wydaje się, że inni użytkownicy również szukają czegoś podobnego ...
Pierre. Vriens
Jasne i świetny pomysł. Zajmie mi to trochę czasu, aby stworzyć nową stronę testową.
HomoTechsual,
Nie mogę się doczekać, aby wkrótce zobaczyć zaktualizowaną odpowiedź. Chociaż uruchomienie odpowiedniej witryny jest tak naprawdę tylko 1 kliknięciem ... użyj https://simplytest.me/project/rules , zaakceptuj (domyślną) wersję 8.x-3.0-alpha2 i wciśnij „ uruchom piaskownicę ” - przycisk. Gdy to zrobisz, masz wszystko, czego potrzebujesz, aby „szybko” zbudować Regułę, o której myślisz. Następnie wyeksportuj go i skopiuj / wklej ten eksport w swojej odpowiedzi tutaj. Daj mi znać (dodatkowy komentarz?) Twoja reguła jest gotowa na sprawdzenie jakości. Byłoby miło, gdybyś mógł opublikować go gdzieś w najbliższych dniach ... jeśli możesz.
Pierre.Vriens
Cześć @ Pierre.Vriens Zredagowałem swój komentarz, po nieco dalszej grze z regułami na D8 okazało się, że jest to mniej skomplikowane, niż myślałem, a bardziej efekt zmienionych selektorów w D8.
HomoTechsual,
Nie jestem też pewien, dlaczego zawsze zapominam o SimplyTest.pl
HomoTechsual,
1

Jest działający przykład w kolejce problemów z regułami, która została opublikowana w listopadzie 2016 r., Więc było to możliwe przynajmniej od tego czasu. Zobacz https://www.drupal.org/project/rules/issues/2828422

Oto nieco zmodyfikowana wersja tej odpowiedzi. Możesz zaimportować to do swojej witryny i spojrzeć na to w interfejsie użytkownika, aby dowiedzieć się, jak skonfigurować tę funkcję.

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
anonimowy
źródło