parsilver/laravel-sms

SMS provider for laravel framework

1.2.0 2022-04-23 07:47 UTC

This package is auto-updated.

Last update: 2024-04-23 11:55:30 UTC


README

ส่ง SMS ไม่ใช่เรื่องยากอีกต่อไป เพียงแค่

<?php

\SMS::send('0899991111', 'This is message');

ความต้องการระบบ

PHP 7.1 ขึ้นไป
Laravel 5.x หรือสูงกว่า

ติดตั้ง

ติดตั้งด้วยคำสั่ง composer

composer require parsilver/laravel-sms

หรือ เพิ่ม dependency เข้าไปใน composer

{
  "require": {
    "parsilver/laravel-sms": "^1.0"
  },
}

แล้วรันคำสั่ง

php artisan vendor:publish --provider="Parsilver\SMS\SMSServiceProvider" --tag="config"

คุณก็จะได้คอนฟิกไฟล์ที่

/config/sms.php

ผู้ให้บริการ SMS

ตอนนี้ทางเรามีแค่ของ smartcomm เท่านั้นนะครับ หากท่านใดสนใจเพิ่มผู้ให้บริการก็ pull request มาได้เลยนะครับ

Smartcomm Provider

ดูเพิ่มเติมที่ Net-Innova

โปรดติดตั้ง guzzlehttp ก่อนการใช้งาน

composer require guzzlehttp/guzzle
# .env
SMS_PROVIDER=smartcomm
SMS_SMARTCOMM_USERNAME=xxxxxx
SMS_SMARTCOMM_PASSWORD=xxxxxx

Null Provider

ไม่ทำการส่งใดๆทั้งสิ้น

# .env
SMS_PROVIDER=null

การใช้งานเบื้องต้น

คุณสามารถส่งข้อความผ่านคำสั่งสั้นๆได้ด้วย SMS class

<?php

\SMS::send('0899991111', 'This is message');

หรือด้วยวิธีจากการทำ DI ซึ่งในตัวอย่างนี้ทางเราได้ทำใน Controller ครับ ซึ่งท่านจะต้อง import class ด้านล่างเพื่อใช้งานด้วยครับ

<?php
use Parsilver\SMS\Contract\SMSProvider;
<?php

use App\Http\Controllers\Controller;
use Parsilver\SMS\Contract\SMSProvider;

class UserController extends Controller
{
    /**
    * @var SMSProvider 
     */
    private $sms;
    
    public function __construct(SMSProvider $sms) 
    {
        $this->sms = $sms;
    }
    
    public function handle()
    {
        //...
        $this->sms->send('0999999999', 'This is message');
        //...
    }
}

สร้างผู้ให้บริการของตัวเอง

ในบางครั้งท่านอาจจะมีผู้ให้บริการของท่านเองอยู่แล้ว แต่อยากจะ Customize เอง สามารถทำได้ดังนี้

<?php App\SMS;

use Parsilver\SMS\Provider\AbstractSMSProvider;

class MyProvider extends AbstractSMSProvider
{
    /**
     * @param string $phoneNumber
     * @param string $message
     */
    public function send($phoneNumber, $message)
    {
        // Process your provider here...
    }
}

จากนั้นให้ไปลงทะเบียนที่ app\Providers\AppServiceProvider.php

<?php namespace App\Providers;

use Parsilver\SMS\Facade\SMS;

class AppServiceProvider extends ServiceProvider
{
    //....
    
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        SMS::extend('myProvider', function() {
            return new MyProvider();
        });
    }
}

และเรียกใช้งานได้ด้วย

\SMS::driver('myProvider')->send('0999999999', 'This is message');

การทดสอบใน PHPUnit

คุณสามารถเปลี่ยนผู้ให้บริการเพื่อทดสอบได้ด้วย

<?php 
use Parsilver\SMS\Facade\SMS;

SMS::fake();

ยกตำอย่างเช่น

<?php

namespace Tests\Feature;

use Tests\TestCase;
use Parsilver\SMS\Facade\SMS;

class ExampleTest extends TestCase
{
    
    public function testShouldSuccess()
    {
        // Set SMS Provider to Fake SMS
        SMS::fake();
        
        $phoneNumber = '0989999999';
        $message = 'This is message';
        
        // Try to send
        SMS::send($phoneNumber, $message);
        
        // Assert
        SMS::assertSent($phoneNumber, $message);
    }
}

Contributing

หากท่านต้องการมีส่วนร่วมพัฒนาต่อใน repository นี้ ท่านต้องดำเนินการตามคำแนะนำดังนี้

อ่านเพิ่มเติมที่ CONTRIBUTING.md