新しいコメントが投稿されたときにメール通知を送信する


15

ルール8.x-3.0-alpha1でDrupal 8.1を使用しています。

新しいコメントがこのノードに投稿されたときにノードの作成者に電子メールを送信するルールを作成します。問題は、データセットが次の値のみを提供するため、ルールで著者のメールアドレスを取得できなかったことです:@ node.node_route_context:nodeまたはcommentですが、comment:node:authorのようなものが見つかりませんでした。Drupal 7にはこのデータがあります。Drupal 8ですべきことは何ですか?


ルールのアルファステータスは、この機能がまだ実装されていないため、自分でパッチを適用する必要があることを意味します。
ボヤンジバノビッチ

1
感謝しますが、トークンモジュールの問題であるように見えます。Entity通知のような他のモジュールはauthor: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」条件をルールに追加して、メールアドレスの存在を確認してください。これにより、フィールドのトークンが公開されます。

エンティティリレーション(ノードから作成者を参照することで多かれ少なかれ)を使用して、フィールドの存在をチェックする(ほとんどの場合、エンティティが作成者(これはユーザーオブジェクトへのアクセスを許可する必要があります)、ユーザーオブジェクトに対してチェックを行い、電子メールアドレスを持っていることを確認します)


私はこの答えが実際にこの質問が何であるかを実行する作業ルールを含むことに興味があるでしょう... D8のために。そのような例を含めるようにanwerを更新できますか(ルールモジュールの最新のD8バージョンを使用しますか?PS:この質問の賛成票の数から、他のユーザーも同様のものを探しているようです...
Pierre。 Vriens

確かなことと素晴らしいアイデアです。これを作成するために、新しいテストサイトを作成するのに少し時間がかかります。
HomoTechsual

更新された回答がすぐに表示されるのを待ちきれません。適切なサイトを作成するのは実際には1クリックだけです... https://simplytest.me/project/rulesを使用し、8.x-3.0-alpha2の(デフォルト)バージョンを受け入れて、「サンドボックスの起動」を押します-ボタン。実行すると、念頭に置いたルールを「迅速に」構築するために必要なすべてのものが揃います。次に、それをエクスポートし、そのエクスポートのコピー/貼り付けをここに回答します。次に、ルールがQAレビューの準備ができていることをお知らせください(追加のコメント?)。数日中にどこかに投稿できればいいのですが...できれば。
Pierre.Vriens

こんにちは@ Pierre.Vriens私はコメントを編集しました。D8でルールを少し使った後、これは私が考えていたほど複雑ではなく、D8でセレクターを変更した結果であることがわかりました。
HomoTechsual

私はいつもSimplyTest.me忘れるなぜまた、私はよく分からない
HomoTechsual

1

2016年11月に投稿されたルールの発行キューには実用的な例がありますので、少なくともそれ以降は可能です。https://www.drupal.org/project/rules/issues/2828422を参照してください

その答えを少し修正したバージョンを次に示します。これをサイトにインポートし、UIで確認して、この機能を構成する方法を学ぶことができます。

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.