Проблема с событием EMAIL_ON_SEND и информацией Leads в плагине - PullRequest
0 голосов
/ 24 апреля 2020

Я сделал плагин для управления некоторыми специфическими токенами. Хорошо работает, когда я отправляю тестовое электронное письмо , но когда я отправляю электронное письмо в сегмент, у меня возникает проблема.

Вот упрощенная версия моего EventListener .

В этом примере я хочу заменить токен {testref} на указанное c поле клиента с именем reference. Я знаю, что могу сделать это с {customerfield=reference}, но это только для примера (в реальном плагине я использую некоторые поля ввода для генерации специфических ссылок из пользовательских токенов - и нет, я не могу сделать то, что в редакторе электронной почты) .

<?php
namespace MauticPlugin\MyBundle\EventListener;

use Mautic\CoreBundle\EventListener\CommonSubscriber;
use Mautic\EmailBundle\EmailEvents;
use Mautic\EmailBundle\Event\EmailBuilderEvent;
use Mautic\EmailBundle\Event\EmailSendEvent;

/**
 * Class EmailSubscriber
 */
class EmailSubscriber extends CommonSubscriber
{

    /**
     * @return array
     */
    static public function getSubscribedEvents()
    {
        return array(
            EmailEvents::EMAIL_ON_SEND    => array('onEmailSend', 0),
        );
    }

    /**
     * @param EmailSendEvent $event
     */
    public function onEmailSend(EmailSendEvent $event)
    {

        $lead = $event->getLead();
        $lead_reference = ($lead !== null) ? $lead['reference'] : 'unknown_reference';

        $debug = 'Lead Reference : '.$lead_reference;
        file_put_contents('mylog.log', $debug . PHP_EOL, FILE_APPEND);

        $contentText = $event->getPlainText();         
        $content = $event->getContent();

        $content = str_replace('{testref}', $lead_reference, $content);

        $event->setContent($content);
        $event->setPlainText($contentText);                            

    }

}

Проблема в том, что, скажем, я хочу отправить электронное письмо в сегмент с 3 лидами. Я хочу, чтобы каждый участник получал электронное письмо со своим собственным reference:

Hi A, your Reference is A
Hi B, your Reference is B
Hi C, your Reference is C

Но вместо вышеупомянутого каждый клиент получает электронное письмо с reference обработанного первого запроса :

Hi A, your Reference is A
Hi B, your Reference is A
Hi C, your Reference is A

Когда я вывожу это reference в журнале, я вижу, что l oop в порядке (2 раза, я не знаю почему, и сейчас мне все равно, ахах) :

Lead Reference : A
Lead Reference : A
Lead Reference : B
Lead Reference : B
Lead Reference : C
Lead Reference : C

Итак, я знаю, что код получает правильные данные ... Но я не понимаю, почему все видят данные первого обработанного только свинец.

PS: когда я говорю всем, я имею в виду все мои тестовые электронные письма в тестовом сегменте ... Не в производстве c.

Любая помощь приветствуется, спасибо!

...