Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Extent Simple SMS

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 9 paid services, Call Fire,EZTexting,FlowRoute,LabsMobile,Mozeo,Nexmo,Plivo,Twilio,Zenvia,SMSgw,Mobily.ws.

Requirements

Laravel 5

  • PHP: >= 7.x
  • Guzzle >= 6.0

Configuration

Composer

$ composer require cammac/sms

Service Provider

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in providers list

\Cammac\LaravelSms\LaravelSmsServiceProvider::class,

Aliases

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in aliases list 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.

Driver Configuration

SMSgw Driver

This driver sends messages through the smsgw.net service. It is a very quick and reliable service provider.

Fill in the config file with the correct settings to use this driver. You can find these settings under your SMSgw account

return [
'driver' => 'smsgw',
'from' => 'Company A',
'smsgw' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

Mobily.ws Driver

This driver sends and receives all messages through the Mobily.ws service.

Fill in the config file with the correct settings to use this driver.

return [
'driver' => 'mobilyws',
'from' => 'Company A',
'mobilyws' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

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'
],
];

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.

CountryCarrierCarrier PrefixSMS SupportedMMS Supported
USAAT&TattYesYes
USAAir Fire MobileairfiremobileYesNo
USAAlaska CommunicatesalaskacommunicatesYesYes
USAAmeritechameritechYesNo
USABoost MobilemoostmobileYesYes
USAClear TalkcleartalkYesNo
USACricketcricketYesNo
USAMetro PCSmetropcsYesYes
USANexTechnextechYesNo
USAProject FiprojectfiYesYes
CanadaRogers WirelessrogerswirelessYesYes
USAUnicelunicelYesYes
USAVerizon WirelessverizonwirelessYesYes
USAVirgin MobilevirginmobileYesYes
USAT-MobiletmobileYesYes
USASprintsprintYesYes
USAUS CellularuscellularYesYes

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.

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)

FlowRoute

This driver sends all messages through the FlowRoute service.

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

return [
'driver' => 'flowroute',
'from' => 'Not Use For EZTexting',
'flowroute' => [
'access_key' => 'Your Access Key',
'secret_key' => 'Your Secret Key'
],
];

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

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' => [
'username' => 'Your Username',
'password' => 'Your Password',
]
];

Log Driver

The log driver is just a simple testing driver. This will log that a SMS message was sent in your storage/logs folder.

return [
'driver' => 'log',
];

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.

Check out the guide on choosing the correct encoding for your messages.

return [
'driver' => 'nexmo',
'from' => 'Company Name',
'nexmo' => [
'api_key' => 'Your Nexmo API Key',
'api_secret' => 'Your Nexmo API Secret',
'encoding' => 'unicode', // Can be `unicode` or `gsm`
]
];

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

Plivo Driver

This driver sends messages through the Plivo messaging service.

return [
'driver' => 'plivo',
'from' => 'Company Name',
'plivo' => [
'auth_id' => 'Your Auth ID.',
'auth_token' => 'Your Auth Token.'
]
];

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

Zenvia Driver

This driver sends messages through the [Zenvia](http://www.zenvia.com.br/ messaging service which is a popular service in Brazil.

return [
'driver' => 'zenvia',
'from' => 'Your Number',
'zenvia' => [
'account_key' => 'Your Account Key.',
'passcode' => 'Your Passcode.'
'call_back_option' => 'The URL you wish to have receive messages sent to.'
]
];

JustSend Driver

This driver sends messages through the JustSend messaging service which is only avaliable in Poland.

return [
'driver' => 'justsend',
'from' => 'From text',
'justsend' => [
'api_key' => 'Your API Key.'
]
];

from can be one of the following:

  • ECO - cheapest type (about 0.03 PLN per SMS). SMS will be send from random short-code number.
  • One of: INFO, INFORMACJA, KONKURS, NOWOSC, OFERTA, OKAZJA, PROMOCJA, SMS - about 0.06 PLN per SMS.
  • Any other text (can not be only number) - about 0.07 PLN per SMS.

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 | CheckMessages | GetMessage | Receive | | --- | --- | --- | --- | --- | --- | --- | | Call Fire | Yes | Yes | Yes | Yes | No | | E-Mail | Yes | Yes | No | No | No | | EZTexting | Yes | Yes | Yes | Yes | Yes | | FlowRoute | Yes | Yes | Yes | Yes | Yes | | LabsMobile | Yes | Yes | No | No | No | | Log | Yes | Yes | No | No | No | | Mozeo | Yes | Yes | No | No | No | | Nexmo | Yes | Yes | Yes | Yes | Yes | | Plivo | Yes | Yes | Yes | Yes | Yes | | Twilio | Yes | Yes | Yes | Yes | Yes | | Zenvia | Yes | Yes | Yes | Yes | Yes | | JustSend | Yes | Yes | No | No | No |

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('Your SMS Message', null, function($sms) {
$sms->to('+15555555555');
});
//Service Providers Using A Laravel View
//$data is the information that will be passed onto the view file.
SMS::send('laravel::viewFile', $data, function($sms) {
$sms->to('+15555555555');
});
//Email Driver Example
SMS::send('Your SMS Message', null, 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('laravel::view', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});
SMS::driver('twilio');
//Will send through Twilio
SMS::queue('Your SMS Message', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});

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

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

To

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

//Service Provider Example
SMS::send('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
$sms->to('+14444444444');
});

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('Your SMS Message', $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.

//Service Provider Driver
SMS::send('Your SMS Message', $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();

About

send and receive SMS/MMS messages to mobile phones just like Laravel mailer

Resources

Stars

17 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Extent Simple SMS

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 9 paid services, Call Fire,EZTexting,FlowRoute,LabsMobile,Mozeo,Nexmo,Plivo,Twilio,Zenvia,SMSgw,Mobily.ws.

Requirements

Laravel 5

  • PHP: >= 7.x
  • Guzzle >= 6.0

Configuration

Composer

$ composer require cammac/sms

Service Provider

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in providers list

\Cammac\LaravelSms\LaravelSmsServiceProvider::class,

Aliases

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in aliases list 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.

Driver Configuration

SMSgw Driver

This driver sends messages through the smsgw.net service. It is a very quick and reliable service provider.

Fill in the config file with the correct settings to use this driver. You can find these settings under your SMSgw account

return [
'driver' => 'smsgw',
'from' => 'Company A',
'smsgw' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

Mobily.ws Driver

This driver sends and receives all messages through the Mobily.ws service.

Fill in the config file with the correct settings to use this driver.

return [
'driver' => 'mobilyws',
'from' => 'Company A',
'mobilyws' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

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'
],
];

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.

CountryCarrierCarrier PrefixSMS SupportedMMS Supported
USAAT&TattYesYes
USAAir Fire MobileairfiremobileYesNo
USAAlaska CommunicatesalaskacommunicatesYesYes
USAAmeritechameritechYesNo
USABoost MobilemoostmobileYesYes
USAClear TalkcleartalkYesNo
USACricketcricketYesNo
USAMetro PCSmetropcsYesYes
USANexTechnextechYesNo
USAProject FiprojectfiYesYes
CanadaRogers WirelessrogerswirelessYesYes
USAUnicelunicelYesYes
USAVerizon WirelessverizonwirelessYesYes
USAVirgin MobilevirginmobileYesYes
USAT-MobiletmobileYesYes
USASprintsprintYesYes
USAUS CellularuscellularYesYes

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.

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)

FlowRoute

This driver sends all messages through the FlowRoute service.

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

return [
'driver' => 'flowroute',
'from' => 'Not Use For EZTexting',
'flowroute' => [
'access_key' => 'Your Access Key',
'secret_key' => 'Your Secret Key'
],
];

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

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' => [
'username' => 'Your Username',
'password' => 'Your Password',
]
];

Log Driver

The log driver is just a simple testing driver. This will log that a SMS message was sent in your storage/logs folder.

return [
'driver' => 'log',
];

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.

Check out the guide on choosing the correct encoding for your messages.

return [
'driver' => 'nexmo',
'from' => 'Company Name',
'nexmo' => [
'api_key' => 'Your Nexmo API Key',
'api_secret' => 'Your Nexmo API Secret',
'encoding' => 'unicode', // Can be `unicode` or `gsm`
]
];

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

Plivo Driver

This driver sends messages through the Plivo messaging service.

return [
'driver' => 'plivo',
'from' => 'Company Name',
'plivo' => [
'auth_id' => 'Your Auth ID.',
'auth_token' => 'Your Auth Token.'
]
];

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

Zenvia Driver

This driver sends messages through the [Zenvia](http://www.zenvia.com.br/ messaging service which is a popular service in Brazil.

return [
'driver' => 'zenvia',
'from' => 'Your Number',
'zenvia' => [
'account_key' => 'Your Account Key.',
'passcode' => 'Your Passcode.'
'call_back_option' => 'The URL you wish to have receive messages sent to.'
]
];

JustSend Driver

This driver sends messages through the JustSend messaging service which is only avaliable in Poland.

return [
'driver' => 'justsend',
'from' => 'From text',
'justsend' => [
'api_key' => 'Your API Key.'
]
];

from can be one of the following:

  • ECO - cheapest type (about 0.03 PLN per SMS). SMS will be send from random short-code number.
  • One of: INFO, INFORMACJA, KONKURS, NOWOSC, OFERTA, OKAZJA, PROMOCJA, SMS - about 0.06 PLN per SMS.
  • Any other text (can not be only number) - about 0.07 PLN per SMS.

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 | CheckMessages | GetMessage | Receive | | --- | --- | --- | --- | --- | --- | --- | | Call Fire | Yes | Yes | Yes | Yes | No | | E-Mail | Yes | Yes | No | No | No | | EZTexting | Yes | Yes | Yes | Yes | Yes | | FlowRoute | Yes | Yes | Yes | Yes | Yes | | LabsMobile | Yes | Yes | No | No | No | | Log | Yes | Yes | No | No | No | | Mozeo | Yes | Yes | No | No | No | | Nexmo | Yes | Yes | Yes | Yes | Yes | | Plivo | Yes | Yes | Yes | Yes | Yes | | Twilio | Yes | Yes | Yes | Yes | Yes | | Zenvia | Yes | Yes | Yes | Yes | Yes | | JustSend | Yes | Yes | No | No | No |

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('Your SMS Message', null, function($sms) {
$sms->to('+15555555555');
});
//Service Providers Using A Laravel View
//$data is the information that will be passed onto the view file.
SMS::send('laravel::viewFile', $data, function($sms) {
$sms->to('+15555555555');
});
//Email Driver Example
SMS::send('Your SMS Message', null, 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('laravel::view', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});
SMS::driver('twilio');
//Will send through Twilio
SMS::queue('Your SMS Message', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});

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

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

To

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

//Service Provider Example
SMS::send('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
$sms->to('+14444444444');
});

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('Your SMS Message', $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.

//Service Provider Driver
SMS::send('Your SMS Message', $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();

About

send and receive SMS/MMS messages to mobile phones just like Laravel mailer

Resources

Stars

17 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Extent Simple SMS

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 9 paid services, Call Fire,EZTexting,FlowRoute,LabsMobile,Mozeo,Nexmo,Plivo,Twilio,Zenvia,SMSgw,Mobily.ws.

Requirements

Laravel 5

  • PHP: >= 7.x
  • Guzzle >= 6.0

Configuration

Composer

$ composer require cammac/sms

Service Provider

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in providers list

\Cammac\LaravelSms\LaravelSmsServiceProvider::class,

Aliases

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in aliases list 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.

Driver Configuration

SMSgw Driver

This driver sends messages through the smsgw.net service. It is a very quick and reliable service provider.

Fill in the config file with the correct settings to use this driver. You can find these settings under your SMSgw account

return [
'driver' => 'smsgw',
'from' => 'Company A',
'smsgw' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

Mobily.ws Driver

This driver sends and receives all messages through the Mobily.ws service.

Fill in the config file with the correct settings to use this driver.

return [
'driver' => 'mobilyws',
'from' => 'Company A',
'mobilyws' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

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'
],
];

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.

CountryCarrierCarrier PrefixSMS SupportedMMS Supported
USAAT&TattYesYes
USAAir Fire MobileairfiremobileYesNo
USAAlaska CommunicatesalaskacommunicatesYesYes
USAAmeritechameritechYesNo
USABoost MobilemoostmobileYesYes
USAClear TalkcleartalkYesNo
USACricketcricketYesNo
USAMetro PCSmetropcsYesYes
USANexTechnextechYesNo
USAProject FiprojectfiYesYes
CanadaRogers WirelessrogerswirelessYesYes
USAUnicelunicelYesYes
USAVerizon WirelessverizonwirelessYesYes
USAVirgin MobilevirginmobileYesYes
USAT-MobiletmobileYesYes
USASprintsprintYesYes
USAUS CellularuscellularYesYes

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.

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)

FlowRoute

This driver sends all messages through the FlowRoute service.

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

return [
'driver' => 'flowroute',
'from' => 'Not Use For EZTexting',
'flowroute' => [
'access_key' => 'Your Access Key',
'secret_key' => 'Your Secret Key'
],
];

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

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' => [
'username' => 'Your Username',
'password' => 'Your Password',
]
];

Log Driver

The log driver is just a simple testing driver. This will log that a SMS message was sent in your storage/logs folder.

return [
'driver' => 'log',
];

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.

Check out the guide on choosing the correct encoding for your messages.

return [
'driver' => 'nexmo',
'from' => 'Company Name',
'nexmo' => [
'api_key' => 'Your Nexmo API Key',
'api_secret' => 'Your Nexmo API Secret',
'encoding' => 'unicode', // Can be `unicode` or `gsm`
]
];

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

Plivo Driver

This driver sends messages through the Plivo messaging service.

return [
'driver' => 'plivo',
'from' => 'Company Name',
'plivo' => [
'auth_id' => 'Your Auth ID.',
'auth_token' => 'Your Auth Token.'
]
];

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

Zenvia Driver

This driver sends messages through the [Zenvia](http://www.zenvia.com.br/ messaging service which is a popular service in Brazil.

return [
'driver' => 'zenvia',
'from' => 'Your Number',
'zenvia' => [
'account_key' => 'Your Account Key.',
'passcode' => 'Your Passcode.'
'call_back_option' => 'The URL you wish to have receive messages sent to.'
]
];

JustSend Driver

This driver sends messages through the JustSend messaging service which is only avaliable in Poland.

return [
'driver' => 'justsend',
'from' => 'From text',
'justsend' => [
'api_key' => 'Your API Key.'
]
];

from can be one of the following:

  • ECO - cheapest type (about 0.03 PLN per SMS). SMS will be send from random short-code number.
  • One of: INFO, INFORMACJA, KONKURS, NOWOSC, OFERTA, OKAZJA, PROMOCJA, SMS - about 0.06 PLN per SMS.
  • Any other text (can not be only number) - about 0.07 PLN per SMS.

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 | CheckMessages | GetMessage | Receive | | --- | --- | --- | --- | --- | --- | --- | | Call Fire | Yes | Yes | Yes | Yes | No | | E-Mail | Yes | Yes | No | No | No | | EZTexting | Yes | Yes | Yes | Yes | Yes | | FlowRoute | Yes | Yes | Yes | Yes | Yes | | LabsMobile | Yes | Yes | No | No | No | | Log | Yes | Yes | No | No | No | | Mozeo | Yes | Yes | No | No | No | | Nexmo | Yes | Yes | Yes | Yes | Yes | | Plivo | Yes | Yes | Yes | Yes | Yes | | Twilio | Yes | Yes | Yes | Yes | Yes | | Zenvia | Yes | Yes | Yes | Yes | Yes | | JustSend | Yes | Yes | No | No | No |

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('Your SMS Message', null, function($sms) {
$sms->to('+15555555555');
});
//Service Providers Using A Laravel View
//$data is the information that will be passed onto the view file.
SMS::send('laravel::viewFile', $data, function($sms) {
$sms->to('+15555555555');
});
//Email Driver Example
SMS::send('Your SMS Message', null, 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('laravel::view', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});
SMS::driver('twilio');
//Will send through Twilio
SMS::queue('Your SMS Message', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});

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

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

To

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

//Service Provider Example
SMS::send('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
$sms->to('+14444444444');
});

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('Your SMS Message', $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.

//Service Provider Driver
SMS::send('Your SMS Message', $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();

About

send and receive SMS/MMS messages to mobile phones just like Laravel mailer

Resources

Stars

17 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Extent Simple SMS

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 9 paid services, Call Fire,EZTexting,FlowRoute,LabsMobile,Mozeo,Nexmo,Plivo,Twilio,Zenvia,SMSgw,Mobily.ws.

Requirements

Laravel 5

  • PHP: >= 7.x
  • Guzzle >= 6.0

Configuration

Composer

$ composer require cammac/sms

Service Provider

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in providers list

\Cammac\LaravelSms\LaravelSmsServiceProvider::class,

Aliases

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in aliases list 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.

Driver Configuration

SMSgw Driver

This driver sends messages through the smsgw.net service. It is a very quick and reliable service provider.

Fill in the config file with the correct settings to use this driver. You can find these settings under your SMSgw account

return [
'driver' => 'smsgw',
'from' => 'Company A',
'smsgw' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

Mobily.ws Driver

This driver sends and receives all messages through the Mobily.ws service.

Fill in the config file with the correct settings to use this driver.

return [
'driver' => 'mobilyws',
'from' => 'Company A',
'mobilyws' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

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'
],
];

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.

CountryCarrierCarrier PrefixSMS SupportedMMS Supported
USAAT&TattYesYes
USAAir Fire MobileairfiremobileYesNo
USAAlaska CommunicatesalaskacommunicatesYesYes
USAAmeritechameritechYesNo
USABoost MobilemoostmobileYesYes
USAClear TalkcleartalkYesNo
USACricketcricketYesNo
USAMetro PCSmetropcsYesYes
USANexTechnextechYesNo
USAProject FiprojectfiYesYes
CanadaRogers WirelessrogerswirelessYesYes
USAUnicelunicelYesYes
USAVerizon WirelessverizonwirelessYesYes
USAVirgin MobilevirginmobileYesYes
USAT-MobiletmobileYesYes
USASprintsprintYesYes
USAUS CellularuscellularYesYes

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.

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)

FlowRoute

This driver sends all messages through the FlowRoute service.

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

return [
'driver' => 'flowroute',
'from' => 'Not Use For EZTexting',
'flowroute' => [
'access_key' => 'Your Access Key',
'secret_key' => 'Your Secret Key'
],
];

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

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' => [
'username' => 'Your Username',
'password' => 'Your Password',
]
];

Log Driver

The log driver is just a simple testing driver. This will log that a SMS message was sent in your storage/logs folder.

return [
'driver' => 'log',
];

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.

Check out the guide on choosing the correct encoding for your messages.

return [
'driver' => 'nexmo',
'from' => 'Company Name',
'nexmo' => [
'api_key' => 'Your Nexmo API Key',
'api_secret' => 'Your Nexmo API Secret',
'encoding' => 'unicode', // Can be `unicode` or `gsm`
]
];

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

Plivo Driver

This driver sends messages through the Plivo messaging service.

return [
'driver' => 'plivo',
'from' => 'Company Name',
'plivo' => [
'auth_id' => 'Your Auth ID.',
'auth_token' => 'Your Auth Token.'
]
];

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

Zenvia Driver

This driver sends messages through the [Zenvia](http://www.zenvia.com.br/ messaging service which is a popular service in Brazil.

return [
'driver' => 'zenvia',
'from' => 'Your Number',
'zenvia' => [
'account_key' => 'Your Account Key.',
'passcode' => 'Your Passcode.'
'call_back_option' => 'The URL you wish to have receive messages sent to.'
]
];

JustSend Driver

This driver sends messages through the JustSend messaging service which is only avaliable in Poland.

return [
'driver' => 'justsend',
'from' => 'From text',
'justsend' => [
'api_key' => 'Your API Key.'
]
];

from can be one of the following:

  • ECO - cheapest type (about 0.03 PLN per SMS). SMS will be send from random short-code number.
  • One of: INFO, INFORMACJA, KONKURS, NOWOSC, OFERTA, OKAZJA, PROMOCJA, SMS - about 0.06 PLN per SMS.
  • Any other text (can not be only number) - about 0.07 PLN per SMS.

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 | CheckMessages | GetMessage | Receive | | --- | --- | --- | --- | --- | --- | --- | | Call Fire | Yes | Yes | Yes | Yes | No | | E-Mail | Yes | Yes | No | No | No | | EZTexting | Yes | Yes | Yes | Yes | Yes | | FlowRoute | Yes | Yes | Yes | Yes | Yes | | LabsMobile | Yes | Yes | No | No | No | | Log | Yes | Yes | No | No | No | | Mozeo | Yes | Yes | No | No | No | | Nexmo | Yes | Yes | Yes | Yes | Yes | | Plivo | Yes | Yes | Yes | Yes | Yes | | Twilio | Yes | Yes | Yes | Yes | Yes | | Zenvia | Yes | Yes | Yes | Yes | Yes | | JustSend | Yes | Yes | No | No | No |

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('Your SMS Message', null, function($sms) {
$sms->to('+15555555555');
});
//Service Providers Using A Laravel View
//$data is the information that will be passed onto the view file.
SMS::send('laravel::viewFile', $data, function($sms) {
$sms->to('+15555555555');
});
//Email Driver Example
SMS::send('Your SMS Message', null, 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('laravel::view', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});
SMS::driver('twilio');
//Will send through Twilio
SMS::queue('Your SMS Message', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});

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

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

To

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

//Service Provider Example
SMS::send('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
$sms->to('+14444444444');
});

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('Your SMS Message', $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.

//Service Provider Driver
SMS::send('Your SMS Message', $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();

About

send and receive SMS/MMS messages to mobile phones just like Laravel mailer

Resources

Stars

17 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Extent Simple SMS

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 9 paid services, Call Fire,EZTexting,FlowRoute,LabsMobile,Mozeo,Nexmo,Plivo,Twilio,Zenvia,SMSgw,Mobily.ws.

Requirements

Laravel 5

  • PHP: >= 7.x
  • Guzzle >= 6.0

Configuration

Composer

$ composer require cammac/sms

Service Provider

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in providers list

\Cammac\LaravelSms\LaravelSmsServiceProvider::class,

Aliases

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in aliases list 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.

Driver Configuration

SMSgw Driver

This driver sends messages through the smsgw.net service. It is a very quick and reliable service provider.

Fill in the config file with the correct settings to use this driver. You can find these settings under your SMSgw account

return [
'driver' => 'smsgw',
'from' => 'Company A',
'smsgw' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

Mobily.ws Driver

This driver sends and receives all messages through the Mobily.ws service.

Fill in the config file with the correct settings to use this driver.

return [
'driver' => 'mobilyws',
'from' => 'Company A',
'mobilyws' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

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'
],
];

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.

CountryCarrierCarrier PrefixSMS SupportedMMS Supported
USAAT&TattYesYes
USAAir Fire MobileairfiremobileYesNo
USAAlaska CommunicatesalaskacommunicatesYesYes
USAAmeritechameritechYesNo
USABoost MobilemoostmobileYesYes
USAClear TalkcleartalkYesNo
USACricketcricketYesNo
USAMetro PCSmetropcsYesYes
USANexTechnextechYesNo
USAProject FiprojectfiYesYes
CanadaRogers WirelessrogerswirelessYesYes
USAUnicelunicelYesYes
USAVerizon WirelessverizonwirelessYesYes
USAVirgin MobilevirginmobileYesYes
USAT-MobiletmobileYesYes
USASprintsprintYesYes
USAUS CellularuscellularYesYes

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.

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)

FlowRoute

This driver sends all messages through the FlowRoute service.

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

return [
'driver' => 'flowroute',
'from' => 'Not Use For EZTexting',
'flowroute' => [
'access_key' => 'Your Access Key',
'secret_key' => 'Your Secret Key'
],
];

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

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' => [
'username' => 'Your Username',
'password' => 'Your Password',
]
];

Log Driver

The log driver is just a simple testing driver. This will log that a SMS message was sent in your storage/logs folder.

return [
'driver' => 'log',
];

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.

Check out the guide on choosing the correct encoding for your messages.

return [
'driver' => 'nexmo',
'from' => 'Company Name',
'nexmo' => [
'api_key' => 'Your Nexmo API Key',
'api_secret' => 'Your Nexmo API Secret',
'encoding' => 'unicode', // Can be `unicode` or `gsm`
]
];

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

Plivo Driver

This driver sends messages through the Plivo messaging service.

return [
'driver' => 'plivo',
'from' => 'Company Name',
'plivo' => [
'auth_id' => 'Your Auth ID.',
'auth_token' => 'Your Auth Token.'
]
];

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

Zenvia Driver

This driver sends messages through the [Zenvia](http://www.zenvia.com.br/ messaging service which is a popular service in Brazil.

return [
'driver' => 'zenvia',
'from' => 'Your Number',
'zenvia' => [
'account_key' => 'Your Account Key.',
'passcode' => 'Your Passcode.'
'call_back_option' => 'The URL you wish to have receive messages sent to.'
]
];

JustSend Driver

This driver sends messages through the JustSend messaging service which is only avaliable in Poland.

return [
'driver' => 'justsend',
'from' => 'From text',
'justsend' => [
'api_key' => 'Your API Key.'
]
];

from can be one of the following:

  • ECO - cheapest type (about 0.03 PLN per SMS). SMS will be send from random short-code number.
  • One of: INFO, INFORMACJA, KONKURS, NOWOSC, OFERTA, OKAZJA, PROMOCJA, SMS - about 0.06 PLN per SMS.
  • Any other text (can not be only number) - about 0.07 PLN per SMS.

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 | CheckMessages | GetMessage | Receive | | --- | --- | --- | --- | --- | --- | --- | | Call Fire | Yes | Yes | Yes | Yes | No | | E-Mail | Yes | Yes | No | No | No | | EZTexting | Yes | Yes | Yes | Yes | Yes | | FlowRoute | Yes | Yes | Yes | Yes | Yes | | LabsMobile | Yes | Yes | No | No | No | | Log | Yes | Yes | No | No | No | | Mozeo | Yes | Yes | No | No | No | | Nexmo | Yes | Yes | Yes | Yes | Yes | | Plivo | Yes | Yes | Yes | Yes | Yes | | Twilio | Yes | Yes | Yes | Yes | Yes | | Zenvia | Yes | Yes | Yes | Yes | Yes | | JustSend | Yes | Yes | No | No | No |

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('Your SMS Message', null, function($sms) {
$sms->to('+15555555555');
});
//Service Providers Using A Laravel View
//$data is the information that will be passed onto the view file.
SMS::send('laravel::viewFile', $data, function($sms) {
$sms->to('+15555555555');
});
//Email Driver Example
SMS::send('Your SMS Message', null, 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('laravel::view', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});
SMS::driver('twilio');
//Will send through Twilio
SMS::queue('Your SMS Message', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});

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

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

To

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

//Service Provider Example
SMS::send('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
$sms->to('+14444444444');
});

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('Your SMS Message', $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.

//Service Provider Driver
SMS::send('Your SMS Message', $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();

About

send and receive SMS/MMS messages to mobile phones just like Laravel mailer

Resources

Stars

17 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Extent Simple SMS

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 9 paid services, Call Fire,EZTexting,FlowRoute,LabsMobile,Mozeo,Nexmo,Plivo,Twilio,Zenvia,SMSgw,Mobily.ws.

Requirements

Laravel 5

  • PHP: >= 7.x
  • Guzzle >= 6.0

Configuration

Composer

$ composer require cammac/sms

Service Provider

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in providers list

\Cammac\LaravelSms\LaravelSmsServiceProvider::class,

Aliases

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in aliases list 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.

Driver Configuration

SMSgw Driver

This driver sends messages through the smsgw.net service. It is a very quick and reliable service provider.

Fill in the config file with the correct settings to use this driver. You can find these settings under your SMSgw account

return [
'driver' => 'smsgw',
'from' => 'Company A',
'smsgw' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

Mobily.ws Driver

This driver sends and receives all messages through the Mobily.ws service.

Fill in the config file with the correct settings to use this driver.

return [
'driver' => 'mobilyws',
'from' => 'Company A',
'mobilyws' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

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'
],
];

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.

CountryCarrierCarrier PrefixSMS SupportedMMS Supported
USAAT&TattYesYes
USAAir Fire MobileairfiremobileYesNo
USAAlaska CommunicatesalaskacommunicatesYesYes
USAAmeritechameritechYesNo
USABoost MobilemoostmobileYesYes
USAClear TalkcleartalkYesNo
USACricketcricketYesNo
USAMetro PCSmetropcsYesYes
USANexTechnextechYesNo
USAProject FiprojectfiYesYes
CanadaRogers WirelessrogerswirelessYesYes
USAUnicelunicelYesYes
USAVerizon WirelessverizonwirelessYesYes
USAVirgin MobilevirginmobileYesYes
USAT-MobiletmobileYesYes
USASprintsprintYesYes
USAUS CellularuscellularYesYes

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.

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)

FlowRoute

This driver sends all messages through the FlowRoute service.

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

return [
'driver' => 'flowroute',
'from' => 'Not Use For EZTexting',
'flowroute' => [
'access_key' => 'Your Access Key',
'secret_key' => 'Your Secret Key'
],
];

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

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' => [
'username' => 'Your Username',
'password' => 'Your Password',
]
];

Log Driver

The log driver is just a simple testing driver. This will log that a SMS message was sent in your storage/logs folder.

return [
'driver' => 'log',
];

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.

Check out the guide on choosing the correct encoding for your messages.

return [
'driver' => 'nexmo',
'from' => 'Company Name',
'nexmo' => [
'api_key' => 'Your Nexmo API Key',
'api_secret' => 'Your Nexmo API Secret',
'encoding' => 'unicode', // Can be `unicode` or `gsm`
]
];

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

Plivo Driver

This driver sends messages through the Plivo messaging service.

return [
'driver' => 'plivo',
'from' => 'Company Name',
'plivo' => [
'auth_id' => 'Your Auth ID.',
'auth_token' => 'Your Auth Token.'
]
];

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

Zenvia Driver

This driver sends messages through the [Zenvia](http://www.zenvia.com.br/ messaging service which is a popular service in Brazil.

return [
'driver' => 'zenvia',
'from' => 'Your Number',
'zenvia' => [
'account_key' => 'Your Account Key.',
'passcode' => 'Your Passcode.'
'call_back_option' => 'The URL you wish to have receive messages sent to.'
]
];

JustSend Driver

This driver sends messages through the JustSend messaging service which is only avaliable in Poland.

return [
'driver' => 'justsend',
'from' => 'From text',
'justsend' => [
'api_key' => 'Your API Key.'
]
];

from can be one of the following:

  • ECO - cheapest type (about 0.03 PLN per SMS). SMS will be send from random short-code number.
  • One of: INFO, INFORMACJA, KONKURS, NOWOSC, OFERTA, OKAZJA, PROMOCJA, SMS - about 0.06 PLN per SMS.
  • Any other text (can not be only number) - about 0.07 PLN per SMS.

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 | CheckMessages | GetMessage | Receive | | --- | --- | --- | --- | --- | --- | --- | | Call Fire | Yes | Yes | Yes | Yes | No | | E-Mail | Yes | Yes | No | No | No | | EZTexting | Yes | Yes | Yes | Yes | Yes | | FlowRoute | Yes | Yes | Yes | Yes | Yes | | LabsMobile | Yes | Yes | No | No | No | | Log | Yes | Yes | No | No | No | | Mozeo | Yes | Yes | No | No | No | | Nexmo | Yes | Yes | Yes | Yes | Yes | | Plivo | Yes | Yes | Yes | Yes | Yes | | Twilio | Yes | Yes | Yes | Yes | Yes | | Zenvia | Yes | Yes | Yes | Yes | Yes | | JustSend | Yes | Yes | No | No | No |

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('Your SMS Message', null, function($sms) {
$sms->to('+15555555555');
});
//Service Providers Using A Laravel View
//$data is the information that will be passed onto the view file.
SMS::send('laravel::viewFile', $data, function($sms) {
$sms->to('+15555555555');
});
//Email Driver Example
SMS::send('Your SMS Message', null, 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('laravel::view', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});
SMS::driver('twilio');
//Will send through Twilio
SMS::queue('Your SMS Message', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});

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

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

To

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

//Service Provider Example
SMS::send('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
$sms->to('+14444444444');
});

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('Your SMS Message', $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.

//Service Provider Driver
SMS::send('Your SMS Message', $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();

About

send and receive SMS/MMS messages to mobile phones just like Laravel mailer

Resources

Stars

17 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Extent Simple SMS

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 9 paid services, Call Fire,EZTexting,FlowRoute,LabsMobile,Mozeo,Nexmo,Plivo,Twilio,Zenvia,SMSgw,Mobily.ws.

Requirements

Laravel 5

  • PHP: >= 7.x
  • Guzzle >= 6.0

Configuration

Composer

$ composer require cammac/sms

Service Provider

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in providers list

\Cammac\LaravelSms\LaravelSmsServiceProvider::class,

Aliases

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in aliases list 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.

Driver Configuration

SMSgw Driver

This driver sends messages through the smsgw.net service. It is a very quick and reliable service provider.

Fill in the config file with the correct settings to use this driver. You can find these settings under your SMSgw account

return [
'driver' => 'smsgw',
'from' => 'Company A',
'smsgw' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

Mobily.ws Driver

This driver sends and receives all messages through the Mobily.ws service.

Fill in the config file with the correct settings to use this driver.

return [
'driver' => 'mobilyws',
'from' => 'Company A',
'mobilyws' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

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'
],
];

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.

CountryCarrierCarrier PrefixSMS SupportedMMS Supported
USAAT&TattYesYes
USAAir Fire MobileairfiremobileYesNo
USAAlaska CommunicatesalaskacommunicatesYesYes
USAAmeritechameritechYesNo
USABoost MobilemoostmobileYesYes
USAClear TalkcleartalkYesNo
USACricketcricketYesNo
USAMetro PCSmetropcsYesYes
USANexTechnextechYesNo
USAProject FiprojectfiYesYes
CanadaRogers WirelessrogerswirelessYesYes
USAUnicelunicelYesYes
USAVerizon WirelessverizonwirelessYesYes
USAVirgin MobilevirginmobileYesYes
USAT-MobiletmobileYesYes
USASprintsprintYesYes
USAUS CellularuscellularYesYes

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.

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)

FlowRoute

This driver sends all messages through the FlowRoute service.

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

return [
'driver' => 'flowroute',
'from' => 'Not Use For EZTexting',
'flowroute' => [
'access_key' => 'Your Access Key',
'secret_key' => 'Your Secret Key'
],
];

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

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' => [
'username' => 'Your Username',
'password' => 'Your Password',
]
];

Log Driver

The log driver is just a simple testing driver. This will log that a SMS message was sent in your storage/logs folder.

return [
'driver' => 'log',
];

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.

Check out the guide on choosing the correct encoding for your messages.

return [
'driver' => 'nexmo',
'from' => 'Company Name',
'nexmo' => [
'api_key' => 'Your Nexmo API Key',
'api_secret' => 'Your Nexmo API Secret',
'encoding' => 'unicode', // Can be `unicode` or `gsm`
]
];

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

Plivo Driver

This driver sends messages through the Plivo messaging service.

return [
'driver' => 'plivo',
'from' => 'Company Name',
'plivo' => [
'auth_id' => 'Your Auth ID.',
'auth_token' => 'Your Auth Token.'
]
];

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

Zenvia Driver

This driver sends messages through the [Zenvia](http://www.zenvia.com.br/ messaging service which is a popular service in Brazil.

return [
'driver' => 'zenvia',
'from' => 'Your Number',
'zenvia' => [
'account_key' => 'Your Account Key.',
'passcode' => 'Your Passcode.'
'call_back_option' => 'The URL you wish to have receive messages sent to.'
]
];

JustSend Driver

This driver sends messages through the JustSend messaging service which is only avaliable in Poland.

return [
'driver' => 'justsend',
'from' => 'From text',
'justsend' => [
'api_key' => 'Your API Key.'
]
];

from can be one of the following:

  • ECO - cheapest type (about 0.03 PLN per SMS). SMS will be send from random short-code number.
  • One of: INFO, INFORMACJA, KONKURS, NOWOSC, OFERTA, OKAZJA, PROMOCJA, SMS - about 0.06 PLN per SMS.
  • Any other text (can not be only number) - about 0.07 PLN per SMS.

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 | CheckMessages | GetMessage | Receive | | --- | --- | --- | --- | --- | --- | --- | | Call Fire | Yes | Yes | Yes | Yes | No | | E-Mail | Yes | Yes | No | No | No | | EZTexting | Yes | Yes | Yes | Yes | Yes | | FlowRoute | Yes | Yes | Yes | Yes | Yes | | LabsMobile | Yes | Yes | No | No | No | | Log | Yes | Yes | No | No | No | | Mozeo | Yes | Yes | No | No | No | | Nexmo | Yes | Yes | Yes | Yes | Yes | | Plivo | Yes | Yes | Yes | Yes | Yes | | Twilio | Yes | Yes | Yes | Yes | Yes | | Zenvia | Yes | Yes | Yes | Yes | Yes | | JustSend | Yes | Yes | No | No | No |

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('Your SMS Message', null, function($sms) {
$sms->to('+15555555555');
});
//Service Providers Using A Laravel View
//$data is the information that will be passed onto the view file.
SMS::send('laravel::viewFile', $data, function($sms) {
$sms->to('+15555555555');
});
//Email Driver Example
SMS::send('Your SMS Message', null, 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('laravel::view', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});
SMS::driver('twilio');
//Will send through Twilio
SMS::queue('Your SMS Message', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});

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

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

To

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

//Service Provider Example
SMS::send('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
$sms->to('+14444444444');
});

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('Your SMS Message', $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.

//Service Provider Driver
SMS::send('Your SMS Message', $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();

About

send and receive SMS/MMS messages to mobile phones just like Laravel mailer

Resources

Stars

17 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Extent Simple SMS

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 9 paid services, Call Fire,EZTexting,FlowRoute,LabsMobile,Mozeo,Nexmo,Plivo,Twilio,Zenvia,SMSgw,Mobily.ws.

Requirements

Laravel 5

  • PHP: >= 7.x
  • Guzzle >= 6.0

Configuration

Composer

$ composer require cammac/sms

Service Provider

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in providers list

\Cammac\LaravelSms\LaravelSmsServiceProvider::class,

Aliases

if your Laravel below 5.5 you need to add PostMarkServiceProvider

in config/app.php in aliases list 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.

Driver Configuration

SMSgw Driver

This driver sends messages through the smsgw.net service. It is a very quick and reliable service provider.

Fill in the config file with the correct settings to use this driver. You can find these settings under your SMSgw account

return [
'driver' => 'smsgw',
'from' => 'Company A',
'smsgw' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

Mobily.ws Driver

This driver sends and receives all messages through the Mobily.ws service.

Fill in the config file with the correct settings to use this driver.

return [
'driver' => 'mobilyws',
'from' => 'Company A',
'mobilyws' => [
'username' => 'Your username',
'password' => 'Your Password'
],
];

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'
],
];

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.

CountryCarrierCarrier PrefixSMS SupportedMMS Supported
USAAT&TattYesYes
USAAir Fire MobileairfiremobileYesNo
USAAlaska CommunicatesalaskacommunicatesYesYes
USAAmeritechameritechYesNo
USABoost MobilemoostmobileYesYes
USAClear TalkcleartalkYesNo
USACricketcricketYesNo
USAMetro PCSmetropcsYesYes
USANexTechnextechYesNo
USAProject FiprojectfiYesYes
CanadaRogers WirelessrogerswirelessYesYes
USAUnicelunicelYesYes
USAVerizon WirelessverizonwirelessYesYes
USAVirgin MobilevirginmobileYesYes
USAT-MobiletmobileYesYes
USASprintsprintYesYes
USAUS CellularuscellularYesYes

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.

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)

FlowRoute

This driver sends all messages through the FlowRoute service.

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

return [
'driver' => 'flowroute',
'from' => 'Not Use For EZTexting',
'flowroute' => [
'access_key' => 'Your Access Key',
'secret_key' => 'Your Secret Key'
],
];

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

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' => [
'username' => 'Your Username',
'password' => 'Your Password',
]
];

Log Driver

The log driver is just a simple testing driver. This will log that a SMS message was sent in your storage/logs folder.

return [
'driver' => 'log',
];

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.

Check out the guide on choosing the correct encoding for your messages.

return [
'driver' => 'nexmo',
'from' => 'Company Name',
'nexmo' => [
'api_key' => 'Your Nexmo API Key',
'api_secret' => 'Your Nexmo API Secret',
'encoding' => 'unicode', // Can be `unicode` or `gsm`
]
];

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

Plivo Driver

This driver sends messages through the Plivo messaging service.

return [
'driver' => 'plivo',
'from' => 'Company Name',
'plivo' => [
'auth_id' => 'Your Auth ID.',
'auth_token' => 'Your Auth Token.'
]
];

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

Zenvia Driver

This driver sends messages through the [Zenvia](http://www.zenvia.com.br/ messaging service which is a popular service in Brazil.

return [
'driver' => 'zenvia',
'from' => 'Your Number',
'zenvia' => [
'account_key' => 'Your Account Key.',
'passcode' => 'Your Passcode.'
'call_back_option' => 'The URL you wish to have receive messages sent to.'
]
];

JustSend Driver

This driver sends messages through the JustSend messaging service which is only avaliable in Poland.

return [
'driver' => 'justsend',
'from' => 'From text',
'justsend' => [
'api_key' => 'Your API Key.'
]
];

from can be one of the following:

  • ECO - cheapest type (about 0.03 PLN per SMS). SMS will be send from random short-code number.
  • One of: INFO, INFORMACJA, KONKURS, NOWOSC, OFERTA, OKAZJA, PROMOCJA, SMS - about 0.06 PLN per SMS.
  • Any other text (can not be only number) - about 0.07 PLN per SMS.

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 | CheckMessages | GetMessage | Receive | | --- | --- | --- | --- | --- | --- | --- | | Call Fire | Yes | Yes | Yes | Yes | No | | E-Mail | Yes | Yes | No | No | No | | EZTexting | Yes | Yes | Yes | Yes | Yes | | FlowRoute | Yes | Yes | Yes | Yes | Yes | | LabsMobile | Yes | Yes | No | No | No | | Log | Yes | Yes | No | No | No | | Mozeo | Yes | Yes | No | No | No | | Nexmo | Yes | Yes | Yes | Yes | Yes | | Plivo | Yes | Yes | Yes | Yes | Yes | | Twilio | Yes | Yes | Yes | Yes | Yes | | Zenvia | Yes | Yes | Yes | Yes | Yes | | JustSend | Yes | Yes | No | No | No |

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('Your SMS Message', null, function($sms) {
$sms->to('+15555555555');
});
//Service Providers Using A Laravel View
//$data is the information that will be passed onto the view file.
SMS::send('laravel::viewFile', $data, function($sms) {
$sms->to('+15555555555');
});
//Email Driver Example
SMS::send('Your SMS Message', null, 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('laravel::view', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});
SMS::driver('twilio');
//Will send through Twilio
SMS::queue('Your SMS Message', $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('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
});

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

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

To

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

//Service Provider Example
SMS::send('Your SMS Message', $data, function($sms) {
$sms->to('+15555555555');
$sms->to('+14444444444');
});

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('Your SMS Message', $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.

//Service Provider Driver
SMS::send('Your SMS Message', $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();

About

send and receive SMS/MMS messages to mobile phones just like Laravel mailer

Resources

Stars

17 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages