org_and_sport / smsc-simple-sms
Simple-SMS是一个为Laravel开发的包,用于发送/接收(轮询/推送)短信。目前支持CallFire、EZTexting、邮件网关、Mozeo和Twilio。
Requires
- php: >=5.5.0
- guzzlehttp/guzzle: ~6
- illuminate/log: >=5.0.0
- illuminate/mail: >=5.0.0
- illuminate/queue: >=5.0.0
- illuminate/support: >=5.0.0
- illuminate/view: >=5.0.0
- twilio/sdk: ~4
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: 4.7.*
This package is not auto-updated.
Last update: 2018-08-02 05:39:28 UTC
README
简介
Simple SMS是一个易于使用的Laravel包,它添加了从您的Web应用程序向手机发送和接收SMS/MMS消息的功能。目前,它支持通过无线运营商提供的邮件网关免费发送短信消息的方式。该包还支持6个付费服务,包括Call Fire, EZTexting, LabsMobile, Mozeo, Nexmo, 和 Twilio.
要求
Laravel 5
- PHP: >= 5.5
- Guzzle >= 6.0
配置
Laravel 4
请阅读Laravel 4的文档。
Composer
首先,将Simple SMS包添加到您的composer/json
文件中的require
部分
"require": {
"simplesoftwareio/simple-sms": "~2"
}
然后,运行composer update
命令。这将安装该包到您的Laravel应用程序中。
服务提供者
一旦您将包添加到composer文件中,您需要将服务提供者注册到Laravel中。
在您的config/app.php
配置文件中的providers
数组中添加SimpleSoftwareIO\SMS\SMSServiceProvider::class
。
别名
最后,注册门面。
在您的config/app.php
配置文件中的aliases
数组中添加'SMS' => SimpleSoftwareIO\SMS\Facades\SMS::class
。
API设置
您必须运行以下命令来保存配置文件到本地应用
php artisan vendor:publish
这将复制配置文件到您的config
文件夹。
未运行vendor:publish
命令将导致每次运行composer update
命令后配置文件被覆盖。
驱动程序配置
Call Fire驱动程序
此驱动程序通过Call Fire服务发送和接收所有消息。它是一个非常快速和可靠的提供商,包括许多功能,如 drip活动和服务。
在config
文件中填写正确的设置以使用此驱动程序。您可以在您的CallFire账户下找到这些设置,然后选择API访问。
return [
'driver' => 'callfire',
'from' => 'Not Use For Call Fire',
'callfire' => [
'app_login' => 'Your App Login',
'app_password' => 'Your App Password'
],
];
注意:所有来自CallFire的消息都来自同一个短号(67076)
电子邮件驱动程序
电子邮件驱动程序通过配置的Laravel电子邮件驱动程序发送所有消息。此驱动程序使用无线运营商的电子邮件网关将短信消息发送到手机。使用电子邮件驱动程序的最大好处是它是完全免费的。
此驱动程序唯一的设置是from
设置。只需输入您想要发送消息的电子邮件地址即可。
return [
'driver' => 'email',
'from' => 'example@example.com',
];
如果消息未发送,请确保您首先能够通过Laravel发送电子邮件。
以下是通过电子邮件网关驱动程序目前支持的。
国家 | 运营商 | 运营商前缀 | 支持短信 | 支持彩信 | 已测试? |
---|---|---|---|---|---|
美国 | AT&T | att | 是 | 是 | 是 |
美国 | Air Fire Mobile | airfiremobile | 是 | 否 | 否 |
美国 | Alaska Communicates | alaskacommunicates | 是 | 是 | 否 |
美国 | Ameritech | ameritech | 是 | 否 | 否 |
美国 | Boost Mobile | moostmobile | 是 | 是 | 否 |
美国 | Clear Talk | cleartalk | 是 | 否 | 否 |
美国 | Cricket | cricket | 是 | 否 | 否 |
美国 | Metro PCS | metropcs | 是 | 是 | 否 |
美国 | NexTech | nextech | 是 | 否 | 否 |
加拿大 | Rogers Wireless | rogerswireless | 是 | 是 | 否 |
美国 | Unicel | unicel | 是 | 是 | 否 |
美国 | Verizon Wireless | verizonwireless | 是 | 是 | 否 |
美国 | Virgin Mobile | virginmobile | 是 | 是 | 否 |
美国 | T-Mobile | tmobile | 是 | 是 | 是 |
>>您必须知道手机使用的无线运营商才能使用此驱动程序。
>>小心!并非所有无线运营商在全球范围内都支持电子邮件网关。
>>某些运营商在短信消息中添加了from
和to
地址,略微修改了消息。
>>未经测试的网关意味着我们尚未能够确认该网关是否与移动运营商兼容。如果您使用的是这些运营商之一,请提供反馈。
EZTexting
此驱动程序通过EZTexting服务发送所有消息。EZTexting有许多不同的选项,这些选项已被证明是可靠且快速的。
用正确的设置填写config
文件以启用EZTexting。
return [
'driver' => 'eztexting',
'from' => 'Not Use For EZTexting',
'eztexting' => [
'username' => 'Your Username',
'password' => 'Your Password'
],
];
要为此服务启用receive()
,您必须访问EZTexting设置页面。为要转发到您的Web应用程序的消息启用转发API
和关键字API
。
>>注意:所有来自EZTexting的消息都来自同一个短号(313131)
LabsMobile驱动程序
此驱动程序通过LabsMobile服务发送所有消息。这些设置可以在您的API设置页面上找到。
return [
'driver' => 'labsmobile',
'from' => 'Sender',
'labsmobile' => [
'client' => 'Your Client Key',
'username' => 'Your Username',
'password' => 'Your Password',
'test' => '1 for simulate mode; 0 for real sendings'
]
];
Mozeo驱动程序
此驱动程序通过Mozeo服务发送所有消息。这些设置可以在您的API设置页面上找到。
return [
'driver' => 'mozeo',
'from' => 'Not Used With Mozeo',
'mozeo' => [
'companyKey' => 'Your Company Key',
'username' => 'Your Username',
'password' => 'Your Password'
]
];
>>注意:所有来自Mozeo的消息都来自同一个短号(24587)
Nexmo驱动程序
此驱动程序通过Nexmo消息服务发送消息。它非常可靠,并且能够向全球的移动电话发送消息。
return [
'driver' => 'nexmo',
'from' => 'Company Name',
'nexmo' => [
'key' => 'Your Nexmo API Key',
'secret' => 'Your Nexmo API Secret'
]
];
要启用receive()
消息,您必须设置请求URL。
Twilio驱动程序
此驱动程序通过Twilio消息服务发送消息。它非常可靠,并且能够向全球的移动电话发送消息。
return [
'driver' => 'twilio',
'from' => '+15555555555', //Your Twilio Number in E.164 Format.
'twilio' => [
'account_sid' => 'Your SID',
'auth_token' => 'Your Token',
'verify' => true, //Used to check if messages are really coming from Twilio.
]
];
强烈建议启用verify
选项。此设置执行额外的安全检查,以确保消息来自Twilio而不是被欺骗。
要启用receive()
消息,您必须设置请求URL。选择您希望启用的号码,然后输入您的请求URL。此请求应为POST
请求。
驱动程序支持
由于每个API的差异性,并非所有驱动程序都支持每个方法。以下表格概述了每个驱动程序支持的功能。
驱动程序 | 发送 | 队列 | 假装 | 检查消息 | 获取消息 | 接收 |
---|---|---|---|---|---|---|
调用火 | 是 | 是 | 是 | 是 | 是 | 否 |
电子邮件 | 是 | 是 | 是 | 否 | 否 | 否 |
EZTexting | 是 | 是 | 是 | 是 | 是 | 是 |
LabsMobile | 是 | 是 | 是 | 否 | 否 | 否 |
Mozeo | 是 | 是 | 是 | 否 | 否 | 否 |
Nexmo | 是 | 是 | 是 | 是 | 是 | 是 |
Twilio | 是 | 是 | 是 | 是 | 是 | 是 |
使用
基本用法
Simple SMS 与 Laravel 邮件服务提供商以非常相似的方式运行。如果您熟悉它,那么 SMS 应该感觉像家一样。发送 SMS 的最基本方法是使用以下方法
//Service Providers Example
SMS::send('simple-sms::welcome', $data, function($sms) {
$sms->to('+15555555555');
});
//Email Driver Example
SMS::send('simple-sms::welcome', $data, function($sms) {
$sms->to('+15555555555', 'att');
});
第一个参数是您想要使用的视图文件。第二个是您希望传递给视图的数据。最后一个参数是一个回调,它将为 message
闭包设置所有选项。
发送
send
方法通过配置的驱动程序使用 Laravel 视图文件发送 SMS。
SMS::send($view, Array $data, function($sms) {
$sms->to('+15555555555');
}
SMS::send('simple-sms::welcome', $data, function($sms) {
$sms->to('+15555555555');
});
您可以通过传递字符串而不是视图来发送简单的消息,而不创建视图。
SMS::send($message, [], function($sms) {
$sms->to('+15555555555');
}
SMS::send('This is my message', [], function($sms) {
$sms->to('+15555555555');
});
驱动程序
driver
方法将在运行时切换提供商。
//Will send through default provider set in the config file.
SMS::queue('simple-sms::welcome', $data, function($sms) {
$sms->to('+15555555555');
});
SMS::driver('twilio');
//Will send through Twilio
SMS::queue('simple-sms::welcome', $data, function($sms) {
$sms->to('+15555555555');
});
队列
queue
方法将消息排队以便稍后发送,而不是立即发送消息。这通过卸载不寻常的处理时间,允许消费者有更快的响应时间。像 Laravel 的邮件系统
一样,队列也具有 queueOn
、later
和 laterOn
方法。
SMS::queue('simple-sms::welcome', $data, function($sms) {
$sms->to('+15555555555');
});
>如果 Laravel
中未配置队列服务,则 queue
方法将回退到 send
方法。
假装
pretend
方法将简单地创建一个日志文件,声明已“发送” SMS 消息。这在测试配置设置是否正确工作而不发送实际消息时非常有用。
SMS::pretend('simple-sms::welcome', $data, function($sms) {
$sms->to('+15555555555');
});
您还可以将 pretend
配置选项设置为 true,以便所有 SMS 消息都假装已发送。
`/app/config/simplesoftwareio/simple-sms/config.php`
return array(
'pretend' => true,
);
接收
Simple SMS 支持推送 SMS 消息。您必须首先按照上述配置设置配置您的服务提供商。
Route::post('sms/receive', function()
{
SMS::receive();
}
接收方法将返回一个 IncomingMessage
实例。您可以像请求以下数据一样从这个实例请求任何数据
Route::post('sms/receive', function()
{
$incoming = SMS::receive();
//Get the sender's number.
$incoming->from();
//Get the message sent.
$incoming->message();
//Get the to unique ID of the message
$incoming->id();
//Get the phone number the message was sent to
$incoming->to();
//Get the raw message
$incoming->raw();
}
raw
方法返回驱动程序支持的所有数据。这可以用来获取只有某些服务提供商提供的信息。
Route::post('sms/receive', function()
{
$incoming = SMS::receive();
//Twilio message status
echo $incoming->raw()['status'];
}
这将返回 Twilio 驱动程序上消息的状态。
>从 raw
方法使用的数据在其他服务提供商上可能不起作用。每个提供商在每次请求中发送不同的值。
检查消息
此方法将从服务提供商检索消息数组。数组中的每个消息都将是一个 IncomingMessage
对象。
$messages = SMS::checkMessages();
foreach ($messages as $message)
{
//Will display the message of each retrieve message.
echo $message->message();
}
checkMessages
方法支持一个 options
变量,可以将一些设置传递给每个服务提供商。请参阅每个服务提供商的 API 文档,以查看可以传递哪些 options
。
有关每个服务提供商的更多信息,可以在它们的 API 文档中找到。
获取消息
您可以通过简单的调用来通过其 ID 获取消息。这将返回一个 IncomingMessage 对象。
$message = SMS::getMessage('aMessageId');
//Prints who the message came from.
echo $message->from();
外出消息封装
为什么使用封装?
我们使用封装来允许像队列方法这样的功能。能够轻松保存消息封装允许有更大的灵活性。
到
to
方法将添加一个将发送消息的电话号码。
//Service Providers Example
SMS::send('simple-sms::welcome', $data, function($sms) {
$sms->to('+15555555555');
$sms->to('+14444444444');
});
//Email Driver
SMS::send('simple-sms::welcome', $data, function($sms) {
$sms->to('15555555555', 'att);
$sms->to('14444444444', 'verizonwireless);
});
>对于电子邮件驱动程序,需要提供运营商,以便使用正确的电子邮件网关。请参阅上表以获取接受运营商的列表。
来自
from
方法将设置发送消息的地址。
SMS::send('simple-sms::welcome', $data, function($sms) {
$sms->from('+15555555555');
});
attachImage
attachImage
方法将向消息添加图像。这将也将消息转换为 MMS,因为 SMS 不支持图像附件。
//Email Driver
SMS::send('simple-sms::welcome', $data, function($sms) {
$sms->attachImage('/local/path/to/image.jpg');
});
//Twilio Driver
SMS::send('simple-sms::welcome', $data, function($sms) {
$sms->attachImage('/url/to/image.jpg');
});
>目前仅支持电子邮件和 Twilio 驱动程序。
传入消息
所有传入的消息都会生成一个 IncomingMessage
对象。这使得在不同的服务提供商之间以统一的方式轻松检索信息。
原始数据
《raw》方法返回服务提供商提供的原始数据。
$incoming = SMS::getMessage('messageId');
echo $incoming->raw()['status'];
每个服务提供商在请求中提供的信息不同。请参阅他们的API文档,了解您可以从《raw》请求中获取的信息。
来自
此方法返回消息来源的电话号码。
$incoming = SMS::getMessage('messageId');
echo $incoming->from();
到
《to》方法返回消息发送到的电话号码。
$incoming = SMS::getMessage('messageId');
echo $incoming->to();
Id
此方法返回消息的唯一ID。
$incoming = SMS::getMessage('messageId');
echo $incoming->id();
Message
最后,这个方法返回实际的短信消息。
$incoming = SMS::getMessage('messageId');
echo $incoming->message();