/laravel-sendsms

Laravel Send SMS - a package that allows you to send SMS via https://sendsms.ro

Primary LanguagePHPMIT LicenseMIT

Laravel SendSMS integration

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Just a small Laravel package that allows you to use sendsms.ro API.

Installation

You can install the package via composer:

composer require niladam/laravel-sendsms

You can publish the config file with:

php artisan vendor:publish --provider="Niladam\LaravelSendsms\LaravelSendsmsServiceProvider" --tag=config

This is the contents of the published config file:

<?php

/**
 * This is the package main config file.
 *
 */
return [
    /**
     * This is your main username.
     */
    "username" => env("LARAVEL_SENDSMS_USERNAME", null),

    /**
     * This is your main password.
     */
    "password" => env("LARAVEL_SENDSMS_PASSWORD", null),

    /**
     * This is the base URL that the package will use.
     *
     * It has already been filled with a default value.
     *
     */
    "url" => env("LARAVEL_SENDSMS_URL", "https://api.sendsms.ro/json"),

    /**
     * If this package should have debug turned on
     * please set this here.
     *
     */
    "debug" => env("LARAVEL_SENDSMS_DEBUG", false),

    "messages" => [
        "from" => env("LARAVEL_SENDSMS_FROM", null),
        "callback_url" => env("LARAVEL_SENDSMS_CALLBACK", null),
        "charset" => env("LARAVEL_SENDSMS_CHARSET", null),
        "coding" => env("LARAVEL_SENDSMS_CODING", null),
        "class" => env("LARAVEL_SENDSMS_CLASS", -1),
        "auto_detect_encoding" => env(
            "LARAVEL_SENDSMS_AUTODETECT_ENCODING",
            null
        ),
        /**
         * Information on the report mask:
         *
         *  1   Delivered
         *  2   Undelivered
         *  4   Queued at network
         *  8   Sent to network
         *  16  Failed at network
         *
         * So, 19 means:
         *
         * (Delivered + Undelivered + Failed at network)
         * 1 + 2 + 16 = 19
         */
        "report_mask" => env("LARAVEL_SENDSMS_MASK", 19)
    ],

    /**
     * This is basically a mapping of the operations
     * that the API will use.
     *
     */
    "operations" => [
        "balance" => "user_get_balance",
        "ping" => "ping",
        "price" => "route_check_price",
        "info" => "user_get_info",
        "number" => "user_get_phone_number",
        "send" => "message_send",
    ],
];

Usage

Sending a message

use Niladam\LaravelSendsms\SendSmsMessage;

$message = SendSmsMessage::create();

$message->to('0744123123')
        ->message('Example message here.')
        // You can also use the alias ->text('example text')
        // the following is optional, as it'll use your default settings
        ->from('0744123456')
        ->send();

OR

use Niladam\LaravelSendsms\SendSmsMessage;

SendSmsMessage::create()
        ->to('0744123123')
        // You can also use the alias ->text('example text')
        ->message('Example message here.')
        // the following is optional, as it'll use your default settings
        ->from('0744123456')
        ->send();

OR

SendSmsMessage::create(to: 0744123123, message: 'Example message here')->send();

// Or by specifying the from.

SendSmsMessage::create(to: '0744123123', message: 'Example message here', from: '0744123456')->send();

Other available operations

ping (check system)

use Niladam\LaravelSendsms\Facades\LaravelSendsms;

LaravelSendSms::ping();

// returns the following output
[
  "status" => 0,
  "message" => "OK",
]

balance (check balance)

use Niladam\LaravelSendsms\Facades\LaravelSendsms;

LaravelSendSms::balance();

// returns the following output
[
  "status" => 0,
  "message" => "OK",
  "details" => 49.76696,
]

price (check pricing for a number)

use Niladam\LaravelSendsms\Facades\LaravelSendsms;

LaravelSendSms::price('0744123123');

// returns the following output
[
  "status" => 0,
  "message" => "OK",
  "details" => [
    "cost" => 0.035, // this is the cost.
    "status" => 64,
    "reason" => "64: Routed OK",
  ],
]

info (get user info)

use Niladam\LaravelSendsms\Facades\LaravelSendsms;

LaravelSendSms::info();

// returns the following output
[
  "status" => 0,
  "message" => "OK",
  "details" => [
    "balance" => "49.76696",
    "name" => "Some Cool Company Name",
    "phone_number" => "",
    "currency_code" => "EUR",
    "default_prefix" => "40",
    "timezone" => "Europe/Bucharest",
    "last_message_sent_at" => "2022-07-28 12:48:37",
    "currency_symbol" => "",
    "affiliate" => [
      "active" => false,
      "id" => null,
      "auth_ip_list" => null,
      "max_registrations" => null,
      "max_registrations_period" => null,
    ],
  ],
]

number

use Niladam\LaravelSendsms\Facades\LaravelSendsms;

LaravelSendSms::number();

// returns the following output
[
  "status" => 0,
  "message" => "OK",
  "details" => "", // This should contain information related to the user's verified phone number.
]

Command

# The package also publishes a command with the following signature:
# laravel:sendsms {to?} {message?} {from?}
# so you can use it with your tinker.
#
php artisan laravel:sendsms
#
# You will be asked to provide the required details.

# Or you can easily provide them yourself.
php artisan laravel:sendsms "0744123123" "Example message here." "0744123456"

Changelog

Please see CHANGELOG for more information on what has changed recently.

Credits

License

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