SMS Gateway Package untuk Laravel

Yugo
Laravel Indonesia
Published in
4 min readMay 14, 2018

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.

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.

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. 😉

Originally published at www.laravel.web.id on May 14, 2018.

--

--