felipe-machado/laravel-twilio-notifications-channel

为 Laravel 提供Twilio 通知通道

1.0.1 2022-10-10 23:05 UTC

This package is auto-updated.

Last update: 2024-09-11 03:34:09 UTC


README

Latest Version on Packagist Software License Build Status StyleCI Quality Score Code Coverage Total Downloads

此包简化了使用 Laravel 5.5+、6.x、7.x、8.x 和 9.x 发送 Twilio 通知的过程

您正在查看 3.x 版本的文档。 点击此处 查看代码 2.x 版本的文档。

目录

安装

您可以通过 composer 安装此包

composer require laravel-notification-channels/twilio

配置

将您的 Twilio Account SID、认证令牌和 From Number(可选)添加到您的 .env

TWILIO_USERNAME=XYZ # optional when using auth token
TWILIO_PASSWORD=ZYX # optional when using auth token
TWILIO_AUTH_TOKEN=ABCD # optional when using username and password
TWILIO_ACCOUNT_SID=1234 # always required
TWILIO_FROM=100000000 # optional default from
TWILIO_ALPHA_SENDER=HELLO # optional
TWILIO_DEBUG_TO=23423423423 # Set a number that call calls/messages should be routed to for debugging
TWILIO_SMS_SERVICE_SID=MG0a0aaaaaa00aa00a00a000a00000a00a # Optional but recommended 

高级配置

运行 php artisan vendor:publish --provider="NotificationChannels\Twilio\TwilioProvider"

/config/twilio-notification-channel.php

抑制特定错误或所有错误

使用上述命令发布配置,并编辑 ignored_error_codes 数组。您可以从文档中获取异常代码列表。

如果您想抑制所有错误,可以将选项设置为 ['*']。错误将不会被记录,但失败的通告事件仍然会被发出。

推荐配置

Twilio 建议始终使用 消息服务,因为它提供了高级退订、粘性发送者、缩放器、地理位置匹配、简码重路由和智能编码等功能。

如果您在 SMS 方面遇到问题,请检查 Twilio 的最佳实践

从 2.x 升级到 3.x

如果您是从版本 2.x 升级,请确保您的环境变量设置与配置部分中所述的相匹配。环境变量名称没有变化,但如果您在 services.php 配置中使用了不同的键,则需要将它们更新为匹配上述内容,或者发布配置文件并更改 env 键。

您还应该从您的 services.php 配置中删除旧 twilio 条目,因为它不再使用。

2.x3.x 之间的主要 breaking change 是,失败的通告现在将抛出一个异常,除非它们在忽略错误代码列表中(发布配置文件以编辑这些内容)。

您可以通过将 'ignored_error_codes' => ['*'] 设置为来复制 2.x 的行为,这将导致抑制所有异常。

使用方法

现在您可以在通知的 via() 方法中使用该通道

use NotificationChannels\Twilio\TwilioChannel;
use NotificationChannels\Twilio\TwilioSmsMessage;
use Illuminate\Notifications\Notification;

class AccountApproved extends Notification
{
    public function via($notifiable)
    {
        return [TwilioChannel::class];
    }

    public function toTwilio($notifiable)
    {
        return (new TwilioSmsMessage())
            ->content("Your {$notifiable->service} account was approved!");
    }
}

您还可以发送 MMS

use NotificationChannels\Twilio\TwilioChannel;
use NotificationChannels\Twilio\TwilioMmsMessage;
use Illuminate\Notifications\Notification;

class AccountApproved extends Notification
{
    public function via($notifiable)
    {
        return [TwilioChannel::class];
    }

    public function toTwilio($notifiable)
    {
        return (new TwilioMmsMessage())
            ->content("Your {$notifiable->service} account was approved!")
            ->mediaUrl("https://picsum.photos/300");
    }
}

或创建 Twilio 电话

use NotificationChannels\Twilio\TwilioChannel;
use NotificationChannels\Twilio\TwilioCallMessage;
use Illuminate\Notifications\Notification;

class AccountApproved extends Notification
{
    public function via($notifiable)
    {
        return [TwilioChannel::class];
    }

    public function toTwilio($notifiable)
    {
        return (new TwilioCallMessage())
            ->url("http://example.com/your-twiml-url");
    }
}

为了使您的通知知道您正在发送/拨打的电话号码,该通道将查找 Notifiable 模型的 phone_number 属性。如果您想覆盖此行为,请将 routeNotificationForTwilio 方法添加到您的 Notifiable 模型中。

public function routeNotificationForTwilio()
{
    return '+1234567890';
}

可用消息方法

TwilioSmsMessage

  • from(''):接受用作通知发送者的电话。
  • content(''):接受通知正文的字符串值。
  • messagingServiceSid(''):接受用于处理配置的消息服务 SID。

TwilioCallMessage

  • from(''):接受用作通知发送者的电话。
  • url(''):接受用于电话 TwiML 的 URL。

更新日志

请参阅 更新日志 了解最近更改的详细信息。

测试

$ composer test

安全

如果您发现任何与安全相关的问题,请通过电子邮件 gregoriohc@gmail.com 而不是使用问题跟踪器。

贡献

请参阅CONTRIBUTING以获取详细信息。

致谢

许可

MIT许可证(MIT)。有关更多信息,请参阅许可文件