使用 Paragraph 的新软件包深入了解您的所有 Laravel 通知
最后更新于 作者: Eric L. Barnes
当 Laravel 在 2016 年引入 Notification 类时,它允许我们所有人都能够以非常简单直观的方式开始向客户发送任何交易性通信。 现在,您的产品中可能已经有数十个 Notification 类,并且每天发送数百或数千封电子邮件和短信。
如果能够更好地控制它,那岂不是很好吗? 比如说,在客户联系到客户支持后,我希望能够看到过去 30 天里我到底给他/她发送了什么。 通知的内容是什么——里面的信息准确吗?还是引起了混淆?我们每天发送多少个通知?哪种通知类型花费我们最多的钱?所有通知在手机上看起来都很好吗?我们是否有错别字?是否有风格不一致的情况?
通知 X 是如何触发的?我们的用户打开通知 Y 的频率如何?也许我们应该直接删除它?
等等。
关键是——通知是我们产品的重要组成部分,是我们告诉客户发生了什么以及接下来该做什么或期待什么的方式,因此,开始更好地管理它们可能非常、非常有用。 这将使我们能够提高客户满意度并降低成本。
一款有帮助的新软件包
好消息是,这样的工具已经存在——我们 Paragraph 刚刚发布了一个 Laravel composer 软件包。 您只需几秒钟即可获得更多关于传出通信的可见度。
安装过程与安装一个 composer 软件包一样简单
$ composer require paragraph/laravel-notifications
就是这样! 该软件包会自动注册,并已挂钩到通知渲染过程。 如果您在 Laravel 应用程序中发送任何通知,您应该能够看到 storage/app/comms
文件夹中弹出了新的文件。
现在数据已经被收集,我们需要不时将其发送到 Paragraph 仪表板,理想情况下以计划的 cron 命令的形式。 为此,我们需要在环境文件中(或真实的 OS 环境中)提供 API 凭据
# Anywhere in your .env filePARAGRAPH_PROJECT_ID=XXXPARAGRAPH_API_KEY=YYY
要获取 API 密钥和项目 ID,只需在 Paragraph 上创建一个项目,这实际上只需一分钟或更短时间:https://paragraph.ph/repos/import
您现在可以运行一个控制台命令,该命令将提交历史记录并删除所有临时文件
$ php artisan paragraph:submit
瞧,我们现在可以在 Paragraph 仪表板中看到通知历史记录
数据包括使用的通知通道、收件人 ID(可以且应该匿名化)、当前状态(如果通过集成可用)和预览按钮。
当然,这仅仅是开始。
通知触发器
如果您点击第一列中的任何通知类型,您将进入一个页面,其中包含有关此通知类的更多高级信息,包括其触发器
我们的软件包会自动发现通知流程——何时以及如何触发,以便您可以确保一切按设计工作。
在上面的示例中,我们可以看到,通知是通过一个监听器发送的,该监听器被一个事件触发,该事件是在一个 Web 控制器中触发的,因此根本原因是用户在您的网站上采取的操作。
打开率和成本分析
在同一页面上,您可以看到一些关于此特定通知类型的统计数据——在给定时间段内发送了多少次,打开率(来自集成,例如 Mailgun API)以及总花费。
这使您能够快速识别给公司带来很大成本但可能根本没有打开的交易性电子邮件或短信。
文案审查和更新
如果您点击“查看”,您可以看到发送的电子邮件的渲染 HTML、短信的完整副本等等
点击“在 GitHub 中查看”,快速跳转到包含此文本的 GitHub 文件并进行一些简单的文本更新。
作为一项额外的功能,我们还会检查文案是否存在任何语法错误和错别字,并将发现的任何内容显示在 Notification 类页面上。
本地化?太简单了!
需要将您的通知翻译成不同的语言? 太简单了! 您可以使用 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) {}
因此,从性能和客户体验的角度来看,使用此软件包非常安全。
立即免费加入
听起来很有趣吗? 那么请访问 Paragraph,导入一个项目 https://paragraph.ph/repos/import,这样您就可以改进产品通知,让客户更满意,并让您的资产负债表更轻松。 本月作为公开测试版发布的一部分,加入完全免费!