Gammu 通知驱动程序
Requires
- php: >=5.6.4
- guzzlehttp/guzzle: ~6.0
- illuminate/database: ^5.1|^5.2|^5.3
- illuminate/notifications: ^5.3
- illuminate/support: ^5.1|^5.2|^5.3
- predis/predis: ^1.1
Requires (Dev)
- fzaninotto/faker: ^1.6
- mockery/mockery: ^0.9.5
- orchestra/testbench: ^3.1|^3.2|^3.3
- phpunit/phpunit: 4.*
This package is auto-updated.
Last update: 2019-10-21 23:42:47 UTC
README
此包使您能够使用 Laravel 5.3 通过 Gammu SMSD 简单地发送 SMS 通知。
已弃用通道
请参阅 此问题 了解更多信息。
此通道于 2019 年 10 月被弃用,因为没有维护者。
如果您想接管维护,请自由地提交 PR 以将包更新到最新状态,我们可以转交此包。
内容
要求
Gammu
确保您的 Gammu SMSD 正确配置并能够发送 SMS。有关安装和配置 Gammu SMSD 的更多信息,请阅读 Gammu SMSD 文档。
Gammu API
如果您想使用 Gammu Api,则此部分是可选的。确保 Gammu Api 正确配置并能够通过此 API 发送 SMS。
在底层,Gammu Api 使用 gammu sendsms
命令行。
安装
您可以通过 composer 安装此包
composer require laravel-notification-channels/gammu
您必须安装服务提供者
// config/app.php 'providers' => [ ... NotificationChannels\Gammu\GammuServiceProvider::class, ],
设置 Gammu 服务
使用 Gammu 发送 SMS 有两种方法。第一种方法是使用原生 Gammu SMSD 方法,通过直接向 Gammu SMSD 数据库插入数据。第二种方法是使用 Gammu API。
使用原生 Gammu SMSD 方法
确保您的 Gammu SMSD 正确配置并能够通过向 outbox
表插入数据来发送 SMS。Gammu SMSD 和数据库可以安装在同一台机器上或不同的机器上。
在 config/services.php
中添加以下设置以使用原生 Gammu 方法发送 SMS。
... 'gammu' => [ 'method' => env('GAMMU_METHOD', 'db'), 'sender' => env('GAMMU_SENDER', null), ], ...
通过在 config/database.php
中添加以下设置,将数据库设置指向 Gammu SMSD 数据库。
// config/database.php ... 'connections' => [ ... 'gammu' => [ 'driver' => 'mysql', 'host' => env('DB_GAMMU_HOST', 'localhost'), 'port' => env('DB_GAMMU_PORT', '3306'), 'database' => env('DB_GAMMU_DATABASE', 'forge'), 'username' => env('DB_GAMMU_USERNAME', 'forge'), 'password' => env('DB_GAMMU_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], ... ], ...
发送者是在 phones
表中定义的默认发送者名称。如果没有设置,它将自动选择 phones
表中的第一个数据。如果您有多个发送者,此设置很有用。
使用 Gammu API
确保您的 Gammu Api 正确配置并能够通过其 API 发送 SMS。Gammu Api 可以安装在同一台机器上或不同的机器上。
将这些设置添加到 config/services.php
以发送短信。
... 'gammu' => [ 'method' => env('GAMMU_METHOD', 'api'), 'auth' => env('GAMMU_AUTH', 'gammu-api-key'), 'url' => env('GAMMU_URL', 'http://gammu.api/') ], ...
使用 Gammu Api 与 Redis
请确保您的 Redis 服务器正在运行,并且能够与您的应用程序和 gammu api 进行通信。您还可以指定 ->channel('name-channel')
以使用多个 Gammu Api 或在非默认通道上使用。
... 'gammu' => [ 'method' => env('GAMMU_METHOD', 'redis') ], ...
用法
现在您可以在通知类中的 via()
方法中使用该通道。
namespace App\Notifications; use NotificationChannels\Gammu\GammuChannel; use NotificationChannels\Gammu\GammuMessage; use Illuminate\Notifications\Notification; class SendNotificationToSms extends Notification { public function via($notifiable) { return [GammuChannel::class]; } public function toGammu($notifiable) { return (new GammuMessage()) ->to($phoneNumber) ->content($content); } }
如果您有多个发送者,可以通过传递 sender
方法来设置发送者。如果没有设置发送者,它将使用 phones
表中的一个发送者。此方法仅在使用原生 Gammu SMSD 方法时可用。
public function toGammu($notifiable) { return (new GammuMessage()) ->to($phoneNumber) ->sender($sender) ->content($content); }
路由消息
您可以通过向 to($phoneNumber)
方法提供收件人的电话号码来发送通知,就像上面的例子所示,或者在自己的可通知模型中添加 routeNotificationForGammu()
方法。
... /** * Route notifications for the Gammu channel. * * @return string */ public function routeNotificationForGammu() { return $this->phone; } ...
可用方法
to($phoneNumber)
:(string)
收件人电话号码。强烈建议使用国际电话号码格式 (+62XXXXXXXXXX)。content($message)
:(string)
短信内容。如果内容长度超过 160 个字符,它将自动发送为 长短信。sender($sender)
:(string)
在 Gammuphones
表中设置的电话发送者 ID。此方法仅在使用原生 Gammu 方法时可用。callback($callbackText)
:(string)
Gammu Api 的回调文本,它为您提供了传递文本的功能。当 Api 发送您的消息时,它将被发送回您在 Gammu Api 中指定的回调 URL。请正确设置 Gammu Api 中的回调。请正确设置 Gammu Api 中的回调。channel($redisChannelName)
:(string)
发布到 Redis 的通道。默认通道是gammu-channel
。
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
测试
$ composer test
安全
如果您发现任何与安全相关的问题,请通过电子邮件 halo@matriphe.com 或 kristian@rolmi.sk 联系我们,而不是使用问题跟踪器。
贡献
有关详细信息,请参阅 CONTRIBUTING。
鸣谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。