Отправить уведомление по электронной почте, когда новый комментарий опубликован

15

Я использую Drupal 8.1 с правилами 8.x-3.0-alpha1.

Я хочу создать правило для отправки электронного письма автору узла при публикации нового комментария на этом узле. Проблема в том, что я не получил адрес электронной почты автора с правилами, потому что набор данных дает мне только эти значения: @ node.node_route_context: узел или комментарий, но в комментарии я не нашел ничего похожего на comment: node: author. В Drupal 7 у меня есть эти данные. Что мне делать в Drupal 8?

lolhonk
источник
Альфа-статус Правил может означать, что эта функциональность еще не реализована, и вам необходимо самостоятельно ее исправить.
Боян Живанович
1
Спасибо, но это кажется проблемой модуля токенов. Потому что другие модули, такие как уведомление Entity, тоже не получают автора: mail. Этот токен кажется сломанным.
Lolhonk

Ответы:

5

Обновленный ответ

При тестировании этого на новой установке Drupal 8 с правилами (Alpha 2) я натолкнулся на ошибку, которая препятствует успешной проверке этого, в то время как приведенный ниже селектор данных верен, в настоящее время я не могу воспроизвести рабочее правило.

Отчет об ошибке находится здесь: https://www.drupal.org/node/2770291 - Чтобы подвести итог этой проблемы, Правила ожидают, что параметр TO: будет массивом и выдаст ошибку при передаче токена адреса электронной почты ниже, который возвращает строка.

Мой первоначальный ответ остается верным для Drupal 7, однако для Drupal 8 ситуация кажется более простой и зависит от одного факта, который еще недостаточно документирован.

В D7 мы знакомы с синтаксисом, похожим на: comment:node:author:mail

В D8 тот же селектор (который работает): comment.entity_id.entity.uid.entity.mail.value

Надеюсь, это поможет, я оставляю предыдущий ответ ниже, если это поможет кому-то еще.

Предыдущий ответ

* Как правило, в правилах для использования значения поля правило должно сначала специально проверить наличие поля (то есть, что поле имеет значение в контексте, в котором выполняется правило). Если вы еще не пробовали это, вы можете попробовать добавить в правило условие «Entity has field», чтобы проверить наличие адреса электронной почты. Это должно затем выставить токен для поля.

У меня были похожие проблемы при выполнении правил с использованием отношений сущностей (что более или менее то же самое, что вы делаете, ссылаясь на автора из узла), проверяя наличие поля (в вашем случае, скорее всего, проверяйте, что сущность имеет автор (это должно открыть доступ к объекту пользователя), затем проверка объекта пользователя, чтобы убедиться, что у него есть адрес электронной почты), открыл доступные маркеры поля от ссылочной сущности. *

HomoTechsual
источник
Мне было бы интересно увидеть рабочее правило, включенное в этот ответ, которое фактически делает то, о чем этот вопрос ... для D8 . Можете ли вы обновить свой ответ, чтобы включить такой пример (используя самую последнюю версию D8 модуля « Правила »? PS: из числа голосов этого вопроса кажется, что есть другие пользователи, которые также ищут что-то подобное ...
Пьер. Vriens
Конечно, и отличная идея, мне понадобится немного времени, чтобы раскрутить новый испытательный полигон, чтобы произвести это.
HomoTechsual
Не могу дождаться, чтобы увидеть ваш обновленный ответ в ближайшее время. Хотя раскрутка соответствующего сайта на самом деле всего в 1 клик ... используйте https://simplytest.me/project/rules , примите (по умолчанию) версию 8.x-3.0-alpha2 и нажмите « песочницу запуска » - кнопка. После того, как вы это сделаете, у вас есть все, что вам нужно, чтобы «быстро» создать Правило, которое вы имеете в виду. Затем экспортируйте его и скопируйте / вставьте этот экспорт в ваш ответ здесь. Тогда дайте мне знать (дополнительный комментарий?) Ваше правило готово для проверки качества. Было бы неплохо, если бы вы могли опубликовать это где-нибудь в ближайшие дни ... если сможете.
Pierre.Vriens
Привет @ Pierre.Vriens Я отредактировал свой комментарий, после того, как немного поиграл с Правилами на D8, это оказалось менее сложным, чем я думал, и скорее результатом изменения селекторов в D8.
HomoTechsual
Также я не уверен, почему я всегда забываю о SimplyTest.me
HomoTechsual
1

В очереди выпуска правил, которая была опубликована в ноябре 2016 года, есть рабочий пример, так что это стало возможно, по крайней мере, с тех пор. См. Https://www.drupal.org/project/rules/issues/2828422.

Вот немного измененная версия этого ответа. Вы можете импортировать это на свой сайт и посмотреть на него в пользовательском интерфейсе, чтобы узнать, как настроить эту функцию.

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
анонимный
источник