SMS Gateway Package untuk Laravel


Beberapa waktu lalu, saya sempat menulis sebuah tutorial yang mengulas pembuatan SMS gateway menggunakan Android di Laravel, lengkap dengan contoh aplikasinya. Rencananya, tulisan tersebut akan diimplementasikan dalam bentuk aplikasi jadi, kemudian dibagikan secara gratis. Apalah daya, kemalasan dan kesibukan menghalangi. Jangankan aplikasi, bahkan tulisan yang saya sebutkan di atas juga belum ada lanjutan. šŸ˜€

Rencananya, saya malah ingin menghapus tulisan tersebut karena beberapa hari sebelum tulisan ini tayang, aplikasi Android SMSGateway.me sudah tidak tersedia di Play Store. Saya sempat menghubungi pengembang untuk menanyakan kejelasan layanan, namun tidak ada balasan.

Berbalik dengan apa yang saya duga, ternyata layanan mereka tidak berhenti sepenuhnya. Malah, mereka memperbarui API ke versi 4 (di tulisan ini masih menggunakan versi 3). Tidak lupa, mereka juga memperbarui aplikasi Android di Play Store yang dapat diunduh pada tautan berikut.

Sekilas

Karena layanan SMSgateway.me sudah dapat digunakan kembali, maka saya berencana untuk membuat aplikasi komplit SMS gateway dengan fitur kirim dan terima pesan. Sayangnya rencana tersebut saya urungkan karena bakal menyita waktu yang cukup besar. Kekhawatiran saya adalah ketika layanan sudah berubah atau tidak bisa digunakan, maka saya harus bekerja lebih keras agar aplikasi SMS gateway tetap dapat digunakan.

Sebagai gantinya, saya mengembangkan SMS gateway package yang dikhususnya untuk Laravel. Ketika hanya mengembangkan package, saya berharap perubahan dari sisi layanan pihak ketiga tidak mengambil banyak sumber daya untuk pembaruan package.

Sedari awal, package SMS gateway ini didesain untuk mendukung layanan SMS dari berbagai vendor, namun untuk saat ini saya fokuskan pada layanan SMSGateway.me. Vendor lain yang dapat digunakan adalah Zenziva dan (saat ini) hanya dapat mengirim pesan.

Bagi yang tertarik untuk mencoba package ini, kalian bisa mengikuti langkah instalasi dan penggunaannya dalam aplikasi.

Sebelumnya, package ini hanya dapat digunakan pada Laravel versi 5.4 ke atas, dan pastikan pula kalian sudah menggunakan PHP 7.1 ke atas.

Instalasi dan Konfigurasi

Tambahkan package pada aplikasi berbasis Laravel menggunakan Composer. Contoh perintah dapat kalian salin dari potongan skrip di bawah.

$ composer require yugo/smsgateway -vvv

Publikasikan asset yang berhubungan dengan package menggunakan perintah berikut.

Dalam asset, hanya berkas config yang akan disalin ke direktori config aplikasi. Tidak ada asset yang berhubungan dengan database seperti migration, factory, atau seed.

$ php artisan vendor:publish

Pilih vendor package yang akan dipublikasikan seperti pada gambar di bawah.

Khusus untuk Laravel 5.4, publikasi asset package dapat menggunakan perintah berikut.

$ php artisan vendor:publish --provider="Yugo\SMSGateway\Providers\SmsServiceProvider"

Jangan lupa, sebelumnya untuk menambahkan providerĀ Yugo\SMSGateway\Providers\SmsServiceProvider pada file config/app.php.

App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
Yugo\SMSGateway\Providers\SmsServiceProvider::class,

Setelah asset berhasil dipublikasikan, kalian akan menemukan sebuah berkas baru dengan namaĀ message.php dalam direktori config. Berkas ini berisi konfigurasi yang diambil dari berkas .env.

Agar fitur SMS dapat berfungsi, maka kalian juga harus menambahkan konfigurasi baru pada berkas .env.

SMS_VENDOR="smsgwateyme"
SMSGATEWAYME_DEVICE=
SMSGATEWAYME_TOKEN=""

KonfigurasiĀ SMSGATEWAYME_DEVICE bisa didapatkan dari menu device di website SMSGateway.me. Hal yang sama juga berlaku untuk konfigurasiĀ SMSGATEWAYME_TOKEN yang didapatkan dari menu settings.

Penggunaan

Untuk menggunakan package Laravel SMS gateway, kalian hanya perlu mengimpor real-time facade dari package tersebut. Sebagai contoh, implementasi langsung pada route.

<?php

use Facades\Yugo\SMSgateway\Interfaces\SMS;

Route::get('sms/send', function (){
    return SMS::send(['0811111234'], 'Hello, world!');
});

Selain method send(array $destinations, string $message), ada beberapa method tambahan yang dapat digunakan untuk layanan di SMSgatewayme, seperti contact dan callback.

Berikut beberapa contoh method tambahan yang tersedia.

// setToken(string $token) dan setDevice(int $device) untuk override pengaturan bawaan
SMS::setToken('acb')
    ->setDevice(123)
    ->send(['08112334567'], 'Hello');

// check device
SMS::device();

// atau custom device
SMS::device(123);

// manajemen contact
SMS::contact()->create('Name', ['Number 1', 'Number 1'];
SMS::contact()->info(1234);
SMS::contact()->update(1234, 'Name');
SMS::contact()->addNumber(1234, 'Number 1');
SMS::contact()->removeNumber(1234, 'Number 2');

// manajemen callback
SMS::callback()
    ->name('Message Received')
    ->event('MESSAGE_RECEIVED')
    ->url('http://your-domain.com/hook/smsgatewayme')
    ->create();

SMS::callback()->info(12345);

SMS::callback()
    ->name('Message Sent')
    ->event('MESSAGE_SENT')
    ->url('https://your-domain.com/newhook/smsgatewayme')
    ->update(1234);

Ketika menggunakan vendor SMS lain, method di atas tentunya tidak tersedia mengingat setiap vendor menawarkan fitur yang berbeda pula.

Sebagai contoh, ketika menggunakan Zenziva, tentunya kita tidak bisa mendapatkan informasi device. Alih-alih fitur seperti contoh di atas, vendor Zenziva menyediakan methodĀ credit() untuk mendapatkan informasi sisa SMS yang tersedia.

SMS::credit();

Nah, tutorial kirim SMS menggunakan Zenziva akan saya bahas pada tulisan lainnya. Contoh kilasan dapat kalian baca pada README di repositori.

Method dan penggunaan pada tulisan ini bisa jadi suatu saat tidak berlaku. Pastikan selalu baca README pada repositori sebelum menginstall dan menggunakan SMS gateway package untuk Laravel.

Repositori & Kontribusi

Laravel SMS gateway saya publikasikan secara terbuka dengan lisensi MIT. Kalian dapat melihat langsung pada repositori https://github.com/arvernester/laravel-sms. Clone dan fork untuk perubahan tentunya diizinkan, bahkan saya terbuka terhadap berbagai kontribusi.

Kontribusi bisa dapat berupa laporan issue, saran untuk pengembangan package, serta ide vendor yang akan ditambahkan pada package. Khusus bagian penambahan fitur package, kalian dapat menambahkan pull request pada repositori. Kalau kalian tidak dapat membuatnya sendiri, menyediakan sumber daya vendor SMS akan lebih mudah untuk saya ketika mengembangkan vendor baru. šŸ˜‰

Yugo Purwanto

Pemrogram PHP dan JavaScript yang sedang sibuk mengembangkan aplikasi Glosarium Bahasa Indonesia.

3 comments

    • use Facades\Yugo\SMSgateway\SMS;
      ganti pake
      use Facades\Yugo\SMSGateway\Interfaces\SMS;

Tinggalkan Balasan

This site uses Akismet to reduce spam. Learn how your comment data is processed.