定制 mrabbani/laravel_infobip 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

mrabbani/laravel_infobip

Composer 安装命令:

composer require mrabbani/laravel_infobip

包简介

Simple-SMS is a package made for Laravel to send/receive (polling/pushing) text messages. Currently supports CallFire, EZTexting, Email Gateways, Mozeo, and Twilio.

README 文档

README

Build Status Latest Stable Version Latest Unstable Version License Total Downloads

Introduction

Simple SMS is an easy to use package for Laravel that adds the capability to send and receive SMS/MMS messages to mobile phones from your web app. It currently supports a free way to send SMS messages through E-Mail gateways provided by the wireless carriers. The package also supports 6 paid services, Call Fire, EZTexting, LabsMobile, Mozeo, Nexmo, and Twilio.

Requirements

Laravel 5

  • PHP: >= 5.5
  • Guzzle >= 6.0

Configuration

Laravel 4

Please read the Laravel 4 documentation.

Composer

First, add the Simple SMS package to your require in your composer/json file:

composer require mrabbani/laravel_infobip

Next, run the composer update command. This will install the package into your Laravel application.

Service Provider

Once you have added the package to your composer file, you will need to register the service provider with Laravel.

Add SimpleSoftwareIO\SMS\SMSServiceProvider::class in your config/app.php configuration file within the providers array.

Aliases

Finally, register the Facade.

Add 'SMS' => SimpleSoftwareIO\SMS\Facades\SMS::class in your config/app.php configuration file within the aliases array.

API Settings

You must run the following command to save your configuration files to your local app:

php artisan vendor:publish

This will copy the configuration files to your config folder.

Failure to run the vendor:publish command will result in your configuration files being overwritten after every composer update command.

Driver Configuration

Call Fire Driver

This driver sends and receives all messages through the Call Fire service. It is a very quick and reliable service provider that includes many features such as drip campaigns and voice services.

Fill in the config file with the correct settings to use this driver. You can find these settings under your CallFire account and then selecting API Access.

return [
    'driver' => 'callfire',
    'from' => 'Not Use For Call Fire',
    'callfire' => [
        'app_login' => 'Your App Login',
        'app_password' => 'Your App Password'
    ],
];

Note: All messages from CallFire come from the same short number (67076)

E-mail Driver

The E-Mail driver sends all messages through the configured e-mail driver for Laravel. This driver uses the wireless carrier's e-mail gateways to send SMS messages to mobile phones. The biggest benefit to using the e-mail driver is that it is completely free to use.

The only setting for this driver is the from setting. Simply enter an email address that you would like to send messages from.

return [
    'driver' => 'email',
    'from' => 'example@example.com',
];

If messages are not being sent, ensure that you are able to send E-Mail through Laravel first.

The following are currently supported by using the e-mail gateway driver.

Country Carrier Carrier Prefix SMS Supported MMS Supported Tested?
USA AT&T att Yes Yes Yes
USA Air Fire Mobile airfiremobile Yes No No
USA Alaska Communicates alaskacommunicates Yes Yes No
USA Ameritech ameritech Yes No No
USA Boost Mobile moostmobile Yes Yes No
USA Clear Talk cleartalk Yes No No
USA Cricket cricket Yes No No
USA Metro PCS metropcs Yes Yes No
USA NexTech nextech Yes No No
Canada Rogers Wireless rogerswireless Yes Yes No
USA Unicel unicel Yes Yes No
USA Verizon Wireless verizonwireless Yes Yes No
USA Virgin Mobile virginmobile Yes Yes No
USA T-Mobile tmobile Yes Yes Yes

You must know the wireless provider for the mobile phone to use this driver.

Careful! Not all wireless carriers support e-mail gateways around the world.

Some carriers slightly modify messages by adding the from and to address to the SMS message.

An untested gateway means we have not been able to confirm if the gateway works with the mobile provider. Please provide feedback if you are on one of these carriers.

EZTexting

This driver sends all messages through the EZTexting service. EZTexting has many different options that have proven to be reliable and fast.

Fill in the config file with the correct settings to enable EZTexting.

return [
    'driver' => 'eztexting',
    'from' => 'Not Use For EZTexting',
    'eztexting' => [
        'username' => 'Your Username',
        'password' => 'Your Password'
    ],
];

To enable receive() for this service, you must visit the EZTexting settings page. Enable the Forwarding API and Keyword API for the messages that you would like forwarded to your web application.

Note: All messages from EZTexting come from the same short number (313131)

LabsMobile Driver

This driver sends all messages through the LabsMobile service. These settings can be found on your API Settings page.

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 Driver

This driver sends all messages through the Mozeo service. These settings can be found on your API Settings page.

return [
    'driver' => 'mozeo',
    'from' => 'Not Used With Mozeo',
    'mozeo' => [
        'companyKey' => 'Your Company Key',
        'username' => 'Your Username',
        'password' => 'Your Password'
    ]
];

Note: All messages from Mozeo come from the same short number (24587)

Nexmo Driver

This driver sends messages through the Nexmo messaging service. It is very reliable and capable of sending messages to mobile phones worldwide.

return [
    'driver' => 'nexmo',
    'from' => 'Company Name',
    'nexmo' => [
        'key'       => 'Your Nexmo API Key',
        'secret'    => 'Your Nexmo API Secret'
    ]
];

To enable receive() messages you must set up the request URL.

Twilio Driver

This driver sends messages through the Twilio messaging service. It is very reliable and capable of sending messages to mobile phones worldwide.

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.
    ]
];

It is strongly recommended to have the verify option enabled. This setting performs an additional security check to ensure messages are coming from Twilio and not being spoofed.

To enable receive() messages you must set up the request URL. Select the number you wish to enable and then enter your request URL. This request should be a POST request.

Infobip Driver

This driver sends messages through the Infobib messaging service. It is very reliable and capable of sending messages to mobile phones worldwide.

return [
    'driver' => 'infobip',
    'from' => 'InfoSMS',
    'infobip'=> [
         'username' => 'username of infobip',
         'password' => 'password of infobip'
     ]
];

For more information see Infobip API Developer Hub

##Driver Support

Not all drivers support every method due to the differences in each individual API. The following table outlines what is supported for each driver.

Driver Send Queue Pretend CheckMessages GetMessage Receive
Call Fire Yes Yes Yes Yes Yes No
E-Mail Yes Yes Yes No No No
EZTexting Yes Yes Yes Yes Yes Yes
LabsMobile Yes Yes Yes No No No
Mozeo Yes Yes Yes No No No
Nexmo Yes Yes Yes Yes Yes Yes
Twilio Yes Yes Yes Yes Yes Yes

Usage

Basic Usage

Simple SMS operates in much of the same way as the Laravel Mail service provider. If you are familiar with this then SMS should feel like home. The most basic way to send a SMS is to use the following:

//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');
});

The first parameter is the view file that you would like to use. The second is the data that you wish to pass to the view. The final parameter is a callback that will set all of the options on the message closure.

Send

The send method sends the SMS through the configured driver using a Laravel view file.

SMS::send($view, Array $data, function($sms) {
    $sms->to('+15555555555');
}
SMS::send('simple-sms::welcome', $data, function($sms) {
    $sms->to('+15555555555');
});

It is possible to send a simple message without creating views by passing a string instead of a view.

SMS::send($message, [], function($sms) {
    $sms->to('+15555555555');
}
SMS::send('This is my message', [], function($sms) {
    $sms->to('+15555555555');
});

Driver

The driver method will switch the provider during runtime.

//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

The queue method queues a message to be sent later instead of sending the message instantly. This allows for faster respond times for the consumer by offloading uncustomary processing time. Like Laravel's Mail system, queue also has queueOn, later, and laterOn methods.

SMS::queue('simple-sms::welcome', $data, function($sms) {
    $sms->to('+15555555555');
});

The queue method will fallback to the send method if a queue service is not configured within Laravel.

Pretend

The pretend method will simply create a log file that states that a SMS message has been "sent." This is useful to test to see if your configuration settings are working correctly without sending actual messages.

SMS::pretend('simple-sms::welcome', $data, function($sms) {
    $sms->to('+15555555555');
});

You may also set the pretend configuration option to true to have all SMS messages pretend that they were sent.

`/app/config/simplesoftwareio/simple-sms/config.php`
return array(
    'pretend' => true,
);

Receive

Simple SMS supports push SMS messages. You must first configure this with your service provider by following the configuration settings above.

Route::post('sms/receive', function()
{
    SMS::receive();
}

The receive method will return a IncomingMessage instance. You may request any data off of this instance like:

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();
}

The raw method returns all of the data that a driver supports. This can be useful to get information that only certain service providers provide.

Route::post('sms/receive', function()
{
    $incoming = SMS::receive();
    //Twilio message status
    echo $incoming->raw()['status'];
}

The above would return the status of the message on the Twilio driver.

Data used from the raw method will not work on other service providers. Each provider has different values that are sent out with each request.

Check Messages

This method will retrieve an array of messages from the service provider. Each message within the array will be an IncomingMessage object.

$messages = SMS::checkMessages();
foreach ($messages as $message)
{
    //Will display the message of each retrieve message.
    echo $message->message();
}

The checkMessages method supports has an options variable to pass some settings onto each service provider. See each service providers API to see which options may be passed.

More information about each service provider can be found at their API docs.

Get Message

You are able to retrieve a message by it's ID with a simply call. This will return an IncomingMessage object.

$message = SMS::getMessage('aMessageId');
//Prints who the message came from.
echo $message->from();

Outgoing Message Enclosure

Why Enclosures?

We use enclosures to allow for functions such as the queue methods. Being able to easily save the message enclosures allows for much greater flexibility.

To

The to method adds a phone number that will have a message sent to it.

//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);
});

The carrier is required for the email driver so that the correct email gateway can be used. See the table above for a list of accepted carriers.

From

The from method will set the address from which the message is being sent.

SMS::send('simple-sms::welcome', $data, function($sms) {
    $sms->from('+15555555555');
});

attachImage

The attachImage method will add an image to the message. This will also convert the message to a MMS because SMS does not support image attachments.

//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');
});

Currently only supported with the E-Mail and Twilio Driver.

Incoming Message

All incoming messages generate a IncomingMessage object. This makes it easy to retrieve information from them in a uniformed way across multiple service providers.

Raw

The raw method returns the raw data provided by a service provider.

$incoming = SMS::getMessage('messageId');
echo $incoming->raw()['status'];

Each service provider has different information in which they supply in their requests. See their documentations API for information on what you can get from a raw request.

From

This method returns the phone number in which a message came from.

$incoming = SMS::getMessage('messageId');
echo $incoming->from();

To

The to method returns the phone number that a message was sent to.

$incoming = SMS::getMessage('messageId');
echo $incoming->to();

Id

This method returns the unique id of a message.

$incoming = SMS::getMessage('messageId');
echo $incoming->id();

Message

And the best for last; this method returns the actual message of a SMS.

$incoming = SMS::getMessage('messageId');
echo $incoming->message();

mrabbani/laravel_infobip 适用场景与选型建议

mrabbani/laravel_infobip 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4.45k 次下载、GitHub Stars 达 11, 最近一次更新时间为 2016 年 03 月 31 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「sms」 「twilio」 「Simple」 「send」 「receive」 「laravel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 mrabbani/laravel_infobip 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 mrabbani/laravel_infobip 我们能提供哪些服务?
定制开发 / 二次开发

基于 mrabbani/laravel_infobip 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 4.45k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 11
  • 点击次数: 37
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 11
  • Watchers: 2
  • Forks: 6
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-03-31