Sends SMS using JetSms API

4.0.0 2020-03-07 01:00 UTC

This package is auto-updated.

Last update: 2024-03-07 09:35:43 UTC


README

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

This package makes it easy to send notifications using JetSms with Laravel 5.5+, 6.x and 7.x.

Contents

Installation

You can install this package via composer:

composer require laravel-notification-channels/jet-sms

Setting up the JetSms service

Add your desired client, username, password, originator (outbox name, sender name) and request timeout configuration to your config/services.php file:

...
    'JetSms' => [
        'client'     => 'http', // or xml
        'http'       => [
            'endpoint' => 'https://service.jetsms.com.tr/SMS-Web/HttpSmsSend',
        ],
        'xml'        => [
            'endpoint' => 'www.biotekno.biz:8080/SMS-Web/xmlsms',
        ],
        'username'   => '',
        'password'   => '',
        'originator' => "", // Sender name.
        'timeout'    => 60,
    ],
...

Usage

Now you can use the channel in your via() method inside the notification:

use NotificationChannels\JetSms\JetSmsChannel;
use NotificationChannels\JetSms\JetSmsMessage;

class ResetPasswordWasRequested extends Notification
{
    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return [JetSmsChannel::class];
    }
    
    /**
     * Get the JetSms representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return string|\NotificationChannels\JetSms\JetSmsMessage
     */
    public function toJetSms($notifiable) {
        return "Test notification";
        // Or
        return new ShortMessage($notifiable->phone_number, 'Test notification');
    }
}

Don't forget to place the dedicated method for JetSms inside your notifiables. (e.g. User)

class User extends Authenticatable
{
    use Notifiable;
    
    public function routeNotificationForJetSms()
    {
        return "905123456789";
    }
}

Available methods

JetSms can also be used directly to send short messages.

Examples:

JetSms::sendShortMessage($to, $message);
JetSms::sendShortMessages([[
    'recipient' => $to,
    'message'   => $message,
], [
    'recipient' => $anotherTo,
    'message'   => $anotherMessage,
]]);

see: jet-sms-php documentation for more information.

Available events

JetSms Notification channel comes with handy events which provides the required information about the SMS messages.

  1. Message Was Sent (NotificationChannels\JetSms\Events\MessageWasSent)
  2. Messages Were Sent (NotificationChannels\JetSms\Events\MessageWasSent)
  3. Sending Message (NotificationChannels\JetSms\Events\SendingMessage)
  4. Sending Messages (NotificationChannels\JetSms\Events\SendingMessages)

Example:

namespace App\Listeners;

use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use NotificationChannels\JetSms\Events\MessageWasSent;

class SentMessageHandler
{
    /**
     * Handle the event.
     *
     * @param  MessageWasSent  $event
     * @return void
     */
    public function handle(MessageWasSent $event)
    {
        $response = $event->response;
        $message = $event->message;
    }
}

Notes

$response->groupId() will throw BadMethodCallException if the client is set to 'http'. $response->messageReportIdentifiers() will throw BadMethodCallException if the client is set to 'xml'.

change client configuration with caution.

Changelog

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

Security

If you discover any security related issues, please email erdemkeren@gmail.com instead of using the issue tracker.

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.