web-dev-qa-db-ja.com

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

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

このノードに新しいコメントが投稿されたときに、ノードの作成者にメールを送信するルールを作成します。問題は、データセットから次の値しか得られないため、ルール付きの著者の電子メールアドレスを取得できなかったということです。 Drupal 7にこのデータがあります。Drupal 8で何をする必要がありますか?

15
lolhonk

回答を更新しました

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です。

これが役に立てば幸いです。他の誰かを助ける場合に備えて、前の回答を残しておきます。

前の回答

*一般に、フィールドの値を使用するルールでは、ルールはまずフィールドの存在を具体的に確認する必要があります(つまり、ルールが実行されているコンテキストでフィールドに値があることを確認します)。これをまだ試していない場合は、「エンティティにフィールドがあります」条件をルールに追加して、メールアドレスの存在を確認してみてください。これにより、フィールドのトークンが公開されます。

私は、フィールドの存在をチェックするエンティティ関係(ノードから作成者を参照することで多かれ少なかれ行っています)を使用してルールを実行する同様の問題を抱えていました(多くの場合、エンティティに作成者(これはユーザーオブジェクトへのアクセスを開く必要があります)、次にユーザーオブジェクトに対してチェックを行い、電子メールアドレスがあることを確認します)参照されたエンティティから利用可能なフィールドトークンを開きました。*

5
HomoTechsual

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
1
anonymous