erikgall/laravel-twilio-notification-channel

为Laravel提供Twilio通知通道

dev-main 2021-06-15 19:12 UTC

This package is auto-updated.

Last update: 2024-09-18 10:12:54 UTC


README

本包是已删除或随机设置为私有的原包 laravel-notification-channels/twilio 的副本。

要安装,请运行命令,无需其他更改

composer require erikgall/laravel-twilio-notification-channel

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

此包简化了使用Laravel 5.5+、6.x和7.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建议始终使用消息服务,因为它为您提供高级退出、粘性发送者、扩展器、几何匹配、短码重路由和智能编码等功能。

如果您在使用短信时遇到问题,请检查Twilio的最佳实践

从2.x升级到3.x

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

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

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

您可以通过设置'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 model)的phone_number属性。如果您想覆盖此行为,请将routeNotificationForTwilio方法添加到您的Notifiable模型中。

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

可用消息方法

TwilioSmsMessage

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

TwilioCallMessage

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

更新日志

有关最近更改的更多信息,请参阅变更日志

测试

$ composer test

安全

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

贡献

有关详细信息,请参阅贡献指南

鸣谢

许可证

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