PHP code example of prgayman / laravel-sms

1. Go to this page and download the library: Download prgayman/laravel-sms library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

prgayman / laravel-sms example snippets


'providers' => [
    Prgayman\Sms\SmsServiceProvider::class,
]

'aliases' => [
  'Sms' => Prgayman\Sms\Facades\Sms::class,
  'SmsHistory' => Prgayman\Sms\Facades\SmsHistory::class,
]

$app->register(Prgayman\Sms\SmsServiceProvider::class);

class_alias(\Prgayman\Sms\Facades\Sms::class, 'Sms');
class_alias(\Prgayman\Sms\Facades\SmsHistory::class, 'SmsHistory');

/**
 * Set the default sms driver name.
 *
 * @param string $driver
*/
Prgayman\Sms\Facades\Sms::setDefaultDriver("array");


# Send message using facade
use Prgayman\Sms\Facades\Sms;

$to = "+962790000000";
$from = "SenderName";
$message = "Test Send Message";

/**
 * Send using default driver sms
 *
 * @return \Prgayman\Sms\SmsDriverResponse
 */
$response = Sms::to($to)->from($from)->message($message)->send();

# Get Message
$response->getMessage();

# Get Request
$response->getRequest();

# Get driver response
$response->getResponse();

# Check is successfuly send sms message
$response->successful();

# Check is failed send sms message
$response->failed();

Sms::driver("array")
  ->to($to)
  ->from($from)
  ->message($message)
  ->send();

// please sure driver is support send multiple contacts
Sms::to([
  "+962792994123",
  "+962792994124",
  "+962792994125",
])
->from($from)
->message($message)
->send();


Sms::driver("array")
  ->type(\Prgayman\Sms\SmsTypes::OTP)
  ->to($to)
  ->from($from)
  ->message($message)
  ->send();

    $items = [
        [
            "to" => "+962792994123",
            "from" => "SenderName",
            "message" => "New message"
        ],
        [
            "to" => "+962792994124",
            "from" => "SenderName",
            "message" => "Send Message"
        ]
    ];

    /**
     * @param $items must contain message, to, and from keys per item
     * @return \Prgayman\sms\SmsDriverResponse[]
     */
    $response = Sms::sendArray($items);

    // Or send using helper function
    $response = sms()->sendArray($items);

sms()
  ->to($to)
  ->from($from)
  ->message($message)
  ->send();

sms("array")
  ->to($to)
  ->from($from)
  ->message($message)
  ->send();

sms("array")
  ->type(\Prgayman\Sms\SmsTypes::OTP)
  ->to($to)
  ->from($from)
  ->message($message)
  ->send();

  use Prgayman\Sms\Drivers\Driver;
  use Prgayman\Sms\SmsDriverResponse;
  use Prgayman\Sms\Contracts\DriverMultipleContactsInterface;

  class CustomDriver extends Driver implements DriverMultipleContactsInterface {

      # You not need to run events or store history
      # package automatically run all events and store history
      public function send() : SmsDriverResponse
      {

        $request = [
            "to" => $this->getTo(),
            'from' => $this->getFrom(),
            'body' => $this->getMessage(),
        ];

        try {
            # Handler send message
            $response = null;
            return new SmsDriverResponse($request, $response, true);
        } catch (\Exception $e) {
            return new SmsDriverResponse($request, null, false, $e->getMessage());
        }
      }

  }
  

    "drivers"=>[
      .......

      # Use custom driver
      'your-driver-name'=>[
        'handler'=> \App\SmsDrivers\CustomDriver::class
      ],

      # Use supported drivers but different name
      # Copy driver object and change name
      "new-log-driver" => [
            "driver" => "log",
            'channel' => env('SMS_LOG_CHANNEL'),
      ],
    ]
  

  # Use driver
  Sms::driver("your-driver-name")
      ->to($to)
      ->from($from)
      ->message($message)
      ->send();

  # Or set custom driver in default driver or set
  # SMS_DRIVER=your-driver-name in dotenv file
  Sms::setDefaultDriver("your-driver-name");

  Sms::to($to)
    ->from($from)
    ->message($message)
    ->send();
  


use Illuminate\Notifications\Notification;
use Prgayman\Sms\SmsNotification;

class SendSmsNotification extends Notification
{

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return ['sms']; # add this channel
    }

    /**
     * @param mixed $notifiable
     * @return \Prgayman\Sms\SmsNotification
     */
    public function toSms($notifiable)
    {
        # Send message with default driver
        return (new SmsNotification)
          ->to("+962790000000")
          ->from("SenderName")
          ->message("Test New Message");

        # Send message with select driver
        return (new SmsNotification)
          ->driver('array')
          ->to("+962790000000")
          ->from("SenderName")
          ->message("Test New Message");
    }
}

use Prgayman\Sms\Facades\SmsHistory;

# Get all
$histories = SmsHistory::get();

# Use Filters all filter is optional
$histories = SmsHistory::recipients("+962790000000")
->senders(["SendName"])
->statuses([
  Prgayman\Sms\Models\SmsHistory::SUCCESSED,
  Prgayman\Sms\Models\SmsHistory::FAILED,
])
->drivers(["log","array"])
->driverNames(["custom_name"])
->get();

# Or can use helper function
$histories = smsHistory()
->recipients("+962790000000")
->senders(["SendName"])
->statuses([
  Prgayman\Sms\Models\SmsHistory::SUCCESSED,
  Prgayman\Sms\Models\SmsHistory::FAILED,
])
->drivers(["log","array"])
->driverNames(["custom_name"])
->get();