Уведомления по абзацу Laravel: управляйте своими сообщениями

Paragraph Laravel Notifications — это пакет, который поможет вам получить представление обо всех ваших уведомлениях Laravel. Узнайте, как установить его и улучшить общение с клиентами.cr

Когда Laravel представил классы уведомлений еще в 2016 году, это позволило всем нам начать отправлять любые транзакционные сообщения нашим клиентам очень простым и интуитивно понятным способом. Скорее всего, к настоящему моменту в вашем продукте есть десятки классов уведомлений и вы отправляете сотни или тысячи электронных писем и текстовых сообщений каждый день.

Разве не было бы неплохо иметь больший контроль над этим? Допустим, после того как клиент пришел в службу поддержки, я хочу иметь возможность увидеть, что именно я ему отправлял за последние 30 дней. Что было сказано в уведомлении – была ли в нем точная информация или мы вызвали путаницу? Сколько уведомлений мы отправляем каждый день? Какой тип уведомления стоит нам больше всего денег? Все ли уведомления отлично выглядят на телефонах? Есть ли у нас опечатки, есть ли стилистические несоответствия?

Как запускается уведомление X? Как часто наши пользователи открывают уведомление Y? Может, нам стоит просто удалить его?

И так далее.

Дело в том, что уведомления являются важной частью нашего продукта, с их помощью мы сообщаем нашим клиентам, что только что произошло и что делать или ожидать дальше, и поэтому может быть очень и очень полезно начать лучше ими управлять. Это позволит нам повысить удовлетворенность клиентов и снизить наши затраты.

Новый пакет, который помогает

Хорошей новостью является то, что подобный инструмент уже доступен — мы в Paragraph только что выпустили пакет композитора Laravel. Всего за несколько секунд вы сможете получить гораздо больше информации о своих исходящих сообщениях.

Установка так же проста, как установка одного пакета композитора:

$ composer require paragraph/laravel-notifications

Вот и все! Пакет автоматически зарегистрировался и теперь подключен к процессу рендеринга уведомлений. Если вы отправляете какие-либо уведомления в своем приложении Laravel, вы сможете увидеть новые небольшие файлы, которые появляются в папке storage/app/comms.storage/app/comms.storage/app/comms а>

Теперь, когда данные собираются, нам нужно время от времени отправлять их на панель управления Paragraph, в идеале в виде запланированной команды cron. Для этого нам нужно предоставить учетные данные API в файле среды (или реальной среде ОС):

# Anywhere in your .env file
PARAGRAPH_PROJECT_ID=XXX
PARAGRAPH_API_KEY=YYY

Чтобы получить ключ API и идентификатор проекта, просто создайте проект в Paragraph, что на самом деле занимает всего минуту или меньше: https://paragraph.ph/repos/import< /а>

Теперь вы можете запустить консольную команду, которая отправит историю и удалит все временные файлы:

$ php artisan paragraph:submit

Вуаля, теперь мы можем видеть историю уведомлений на панели управления Paragraph:

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

Но это, конечно, только начало.

Триггеры уведомлений

Если вы щелкните любой тип уведомления в первом столбце, вы попадете на страницу, содержащую дополнительную информацию об этом классе уведомлений, включая его триггеры:

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

В приведенном выше примере мы видим, что уведомление было отправлено от прослушивателя, который был вызван событием, запущенным в веб-контроллере, и, следовательно, основной причиной было действие, которое пользователь предпринял на вашем веб-сайте.

Анализ открытой ставки и затрат

На той же странице вы можете увидеть некоторую статистику об этом конкретном типе уведомления – сколько раз оно было отправлено в течение определенного периода, скорость открытия (возвращенная в результате интеграции, например, Mailgun API) и общую потраченную стоимость.

Это может позволить вам быстро идентифицировать транзакционные электронные письма или текстовые сообщения, которые дорого обходятся компании, но потенциально даже не открываются часто.

Копировать обзор и обновления

Если вы нажмете «Просмотреть», вы увидите HTML-код отправленного электронного письма, полную копию SMS-сообщения и так далее:

Нажмите «Просмотреть в GitHub», чтобы быстро перейти к файлу, содержащему этот текст, в GitHub и внести несколько простых текстовых обновлений.

В качестве бонуса мы также проверим копию на наличие грамматических ошибок и опечаток и отобразим все, что нашли, на странице класса уведомлений.

Локализация? Тривиально!

Вам нужно перевести уведомления на разные языки? О, слишком просто! Вы можете использовать пакет локализации Paragraph для автоматической отправки всех ваших текстов на онлайн-торговые площадки, такие как Gengo, а затем применять полученные переводы без необходимости ручной работы.

Вы можете сделать это, используя вспомогательную функцию:

public function toMail(object $notifiable): MailMessage
{
    return (new MailMessage)
                ->line(text('The introduction to the notification.'))
                ->line(text('Thank you for using our application!'));
}

Или компонент Blade:

<p>
    <x-text comment="This paragraph explains how Paragraph can help localize an app">
      Need to translate your notifications into different languages? Oh, too easy!
      You can use Paragraph’s localization package to automatically submit all
      your texts to online marketplaces like Gengo and then apply the
      translations received, no manual work involved.
    </x-text>
</p>

Влияние на производительность

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

Время выполнения нашего кода в среднем составляет 1 мс (миллисекунду) или меньше, и компонент синхронизации старается делать как можно меньше, чтобы влияние было минимальным. Хук сохраняет отрендеренный снимок во временный файл и тут же останавливается — любые вызовы API будут выполняться отдельно на более позднем этапе, асинхронно.

Файлы моментальных снимков сжимаются с помощью Zip, чтобы обеспечить минимальный объем использования жесткого диска, и наш код фактически запускается ПОСЛЕ того, как уведомление уже отправлено. Более того, он заключен в предложение try-catch, чтобы любой Throwable перехватывался, и ваш код мог работать так, как будто ничего не произошло:

try {
    $html = $message->getSymfonySentMessage()->getOriginalMessage()->getHtmlBody();
 
    $this->save(
        $html,
        get_class($notification)
    );
} catch (\Throwable $e) {
}

Таким образом, использование этого пакета очень безопасно как с точки зрения производительности, так и с точки зрения качества обслуживания клиентов.

#laravel 

Уведомления по абзацу Laravel: управляйте своими сообщениями
1.05 GEEK