Score:0

Message Subscribe ไม่สนใจการตั้งค่าสถานะและส่งการแจ้งเตือนไปยังทุกคน

ธง au

ฉันกำลังพัฒนาฟอรัมที่ใช้ Drupal และฉันกำลังใช้โมดูล Message Stack รวมกับโมดูลแบบกำหนดเองเวอร์ชันปรับแต่งนี้ https://github.com/Lullabot/message_integration แนวคิดคือผู้ใช้ทุกคนจะได้รับอีเมลเมื่อมีการโพสต์เธรดใหม่ แต่เฉพาะผู้ใช้ที่สมัครรับเธรดเท่านั้นที่จะได้รับการแจ้งเตือนสำหรับความคิดเห็นที่เหลืออยู่ในเธรดนั้น ส่วนที่ผู้คนได้รับอีเมลสำหรับชุดข้อความใหม่กำลังทำงานอยู่ แต่เมื่อมีการแสดงความคิดเห็น ผู้ใช้ทุกคนจะได้รับการแจ้งเตือนทางอีเมลเกี่ยวกับสิ่งนั้นด้วย ณ จุดนี้ ฉันไม่สามารถบอกได้ว่าปัญหาอยู่ที่โมดูลแบบกำหนดเองหรือกับการสมัครรับข้อความ ฉันเปิดการแก้ไขจุดบกพร่องแล้ว แต่ไม่เห็นข้อความใด ๆ เกี่ยวกับการตัดสินว่าใครควรหรือไม่ส่งอีเมลถึง มีเพียงข้อความที่กำลังเตรียมข้อความและส่งเท่านั้น

โมดูลที่กำหนดเองของฉันไม่แตกต่างจากที่ Lullabot ตั้งค่าไว้

นี่คือรหัสที่สร้างรายชื่อสมาชิก:

ฟังก์ชัน message_integration_subscribe_options_comment() {
  $query = \Drupal::entityQuery('ผู้ใช้')
    ->เงื่อนไข ('สถานะ', 1);
  $query->condition('uid', [0, 1], 'ไม่เข้า');
  $subscribe_uids = $query->execute();

  $notifiers = ['อีเมล'];
  $subscribe_options = [
    'แจ้งเจ้าของข้อความ' => FALSE
    'uids' => [],
  ];
  foreach ($subscribe_uids เป็น $uid) {
    $subscribe_options['uids'][$uid] = new DeliveryCandidate([], $notifiers, $uid);
  }
  คืน $subscribe_options;
}

และนี่คือโค้ดสำหรับการแสดงความคิดเห็น:

ฟังก์ชัน message_integration_comment_insert (ความคิดเห็น $comment) {

  // ดูว่าควรข้ามการจัดการนี้หรือไม่
  $config = \Drupal::config('message_integration.settings');
  $skip = $config->get('ข้าม');
  ถ้า (!empty($skip)) {
    กลับ;
  }

  $node = $comment->get('entity_id')->first()->get('entity')->getTarget()->getValue();
  ถ้า (!in_array($node->bundle(), MESSAGE_INTEGRATION_CONTENT_TYPES)) {
    กลับ;
  }

  // สร้างข้อความ
  $message = ข้อความ::สร้าง([
    'เทมเพลต' => 'create_comment',
    'uid' => $node->getOwnerId(),
  ]);
  $message->set('field_comment_reference', $comment);
  $message->set('field_published', $comment->isPublished());
  $message->save();

  // จัดคิวข้อความเพื่อแจ้งสมาชิกโหนดทั้งหมดเกี่ยวกับความคิดเห็นใหม่
  $subscribers = \Drupal::service('message_subscribe.subscribers');
  
  // สร้างรายชื่อสมาชิกที่กำหนดเองเพื่อแจ้งเตือนผู้ใช้ที่ใช้งานอยู่ทั้งหมด
  // นี่คือการสิ้นสุดการทำงานในระบบการสมัครสมาชิกแฟล็กปกติเนื่องจากเรา
  // ไม่ต้องการสมัครผู้ใช้ทุกรายในเนื้อหาทุกชิ้น
  $subscribe_options = message_integration_subscribe_options_comment();
  $options = $subscribe_options;
  foreach ($subscribe_options['uids'] เป็น $uid => $values) {
    $options['uids'] = [$uid => $values];
    $subscribers->sendMessage($node, $message, [], $ตัวเลือก);
  }
}

ฉันเดินเป็นวงกลมและดึงผมออก ดังนั้นความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา