kagatan/sms-ukraine

Send sms from SmsUkraine

Downloads

29

Stars

0

Version

Laravel

Канал уведомлений для сервиса "SMS Ukraine"

Используя данный пакет вы сможете легко интегрировать SMS уведомления в ваше Laravel-приложение, для отправки которых используется сервис "SMS Ukraine".

Установка

Для установки данного пакета выполните в терминале следующую команду:

$ composer require kagatan/sms-ukraine

Для этого необходим установленный composer. Для его установки перейдите по данной ссылке.

Если вы используете Laravel версии 5.5 и выше, то сервис-провайдер данного пакета будет зарегистрирован автоматически. В противном случае вам необходимо самостоятельно зарегистрировать сервис-провайдер в секции providers файла ./config/app.php:

'providers' => [
    // ...
   Kagatan\SmsUkraine\SmsUkraineServiceProvider::class,
]

Добавим фасад:

 'aliases' => [
    ...
    'SmsUkraine' => Kagatan\SmsUkraine\Facades\SmsUkraine::class
]

Добавим в файл config/services.php :

// config/services.php
...
'sms-ukraine' => [
        'key'      => function_exists('env') ? env('SMSUKRAINE_KEY', '') : '',
        'login'    => function_exists('env') ? env('SMSUKRAINE_LOGIN', '') : '',
        'password' => function_exists('env') ? env('SMSUKRAINE_PASSWORD', '') : '',
        'from'     => function_exists('env') ? env('SMSUKRAINE_FROM', '') : '',
    ],
...

Для публикации провайдера:

php artisan vendor:publish --provider="Kagatan\SmsUkraine\SmsUkraineServiceProvider"

Настройка

После установки вам необходимо изменить файл ./.env добавив ключи

SMSUKRAINE_KEY=xxxxxxxxxxxxxxxxxxxxxx

SMSUKRAINE_FROM=SENDER-NAME

Если хотите использовать связку логин/пароль то добавляем следующие ключи:

SMSUKRAINE_LOGIN=xxxxx

SMSUKRAINE_PASSWORD=xxxxx

SMSUKRAINE_FROM=SENDER-NAME

Upgrading

composer update kagatan/sms-ukraine

Использование

Базовый пример отправки SMS уведомлений с использованием функционала нотификаций в Laravel-приложениях:

Доступные к использованию методы у объекта SmsUkraineMessage:

Имя метода Описание
from() Имя отправителя (опционально)
to() Номер телефона получателя (опционально)
content() Текст сообщения
sendAt() Дата доставки (опционально)
key() API ключ, для переопределения параметров из config(опционально)
login() API логин, для переопределения параметров из config(опционально)
password() API пароль, для переопределения параметров из config(опционально)
toJson() Обьект на выходе в JSON
toArray() Объект на выходе в массиве

Пример класса оповещения:

<?php

use Illuminate\Notifications\Notification;
use Kagatan\SmsUkraine\SmsUkraineChannel;
use Kagatan\SmsUkraine\SmsUkraineMessage;

/**
 * Notification object.
 */
class InvoicePaid extends Notification
{
    /**
     * Get the notification channels.
     *
     * @param mixed $notifiable
     *
     * @return array|string
     */
    public function via($notifiable)
    {
        return [SmsUkraineChannel::class];
    }

    /**
     * Get the SMS Ukraine Message representation of the notification.
     *
     * @param mixed $notifiable
     *
     * @return SmsUkraineMessage
     */
    public function toSmsUkraine($notifiable)
    {
        return SmsUkraineMessage::create()
            ->content('Some SMS notification message');
    }
}

В своей нотифицируемой моделе обязательно добавьте метод routeNotificationForSmsUkraine(), который возвращает номер телефона или массив телефонных номеров.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;

class User extends Model
{
    use Notifiable;

    /**
     * Route notifications for the SmsUkraine channel.
     *
     * @param $notifiable
     * @return string
     */
    public function routeNotificationForSmsUkraine($notifiable)
    {
        return $this->phone;
    }
}

Пример c использованием Notifiable Trait:

$user->notify(new InvoicePaid());

Пример c использованием Notification Facade:

Notification::send($users, new InvoicePaid());

Пример отправки SMS с использованием фасадов(без использования Notification):

<?php

use Kagatan\SmsUkraine\Facades\SmsUkraine;
use Kagatan\SmsUkraine\SmsUkraineMessage;

public function test(){

        $message = SmsUkraineMessage::create()
            ->content("Example sending SMS.")
            ->to("380987654210")
            ->from("WiFi-POINT")
            ->toArray();

        $id = SmsUkraine::send($message);
        
        echo $id;
}

Лицензирование

Код данного пакета распространяется под лицензией MIT.

kagatan

Author

kagatan