Cara Membuat Sms Gateway Dengan Php

Membangun SMS Gateway dengan Android, SMSGateway.derita, dan Laravel

SMS gateway memungkinkan kita bagi mengirim dan menerima SMS lakukan berbagai keperluan plong tuntutan, misal kerjakan reminder, notifikasi, serta konfirmasi.

Detik ini saya menggembangkan sebuah package SMS Gateway buat Laravel. Package ini diharapkan untuk mendukung bineka vendor. Bikin detik ini, hanya mendukung SMSGateway.me dan Zenziva. Selengkapnya bisa dibaca pada tautan di bawah.
> SMS gateway

adalah sebuah sistem permintaan yang digunakan cak bagi mengirim juga menerima

SMS
, dan biasanya digunakan lega permintaan bisnis, baik bakal kemustajaban broadcast promosi (Bulk

SMS
), servis informasi terhadap pengguna, penyebaran content dagangan/jasa dan tidak lain.

Umumnya, ada dua cara yang digunakan bakal membangun SMS gateway.

* Menggunakan perangkat tambahan berupa modem dan aplikasi pendukung seperti Gammu.
* Memperalat layanan berbayar pihak ketiga seperti Sunan SMS atau Zenziva misalnya.

Masing-masing cara di atas memiliki kesuntukan dan kelebihan.

Seperti perangkat suplemen modem misalnya. Kita harus menancapkan modem tersebut puas sebuah PC ataupun laptop selama 24 jam munjung (atau selama SMS akan digunakan). Ini sebagaimana kita membangun server mini bagi sebuah task istimewa. Kelebihannya, kita bisa mengontrol SMS masuk ataupun keluar sesukanya.

Lain juga dengan layanan menggunakan pihak ketiga. Prinsip ini terbilang mudah digunakan. Kita cukup mengirim SMS secara programatically ke server mereka, sisanya sistem dan perangkat mereka yang akan mengangkut SMS ke penyambut. Kekurangannya, harga per SMS-nya jauh lebih mahal dibandign SMS reguler. Selain itu, untuk paket SMS paling murah, hanya boleh digunakan kerjakan mengirim SMS, tidak boleh menerima SMS. Nomornya pun terbatas dan (kebanyakan) bersifat acak. Bisa sih menggunakan momor premium, namun harganya tentu pula lain murah.

Masa ini, suka-suka alternatif buat membangun SMS gateway dengan mudah dan murah. Ialah menggunakan layanan SMSGateway.me.

Apa Itu SMSGateway.derita?
SMSGateway.berpenyakitan memungkinkan kita lakukan mengirim dan menerima SMS secara programmatically (dari aplikasi) dan menjadikan smartphone Android kita laksana perangkatnya.

Syaratnya tidak ribet, sepan instal permintaan SMSGateway.derita di Android, pastikan renyut untuk mengirim SMS mencukupi, serta smartphone dalam keadaan menyala momen digunakan.

Alur kerja untuk mengirim SMS adalah bagaikan berikut:

* Permintaan mengirim SMS secara programmatically ke peladen SMSGateway.derita.
* Data diterima Peladen.
* Aplikasi menghelat server SMSGateway.berpenyakitan bagi mendapatkan antrian SMS.
* Jikalau ada antrian, permintaan mengirim SMS serta merta melintasi smartphone.

Hal yang sama pula berlaku bakal alur kerja buat mengakui SMS.

* Aplikasi mengerjakan permintaaan ke server SMSGateway.derita.
* Permintaan diteruskan ke tuntutan SMSGateway.me di Android.
* Sekiranya ada SMS masuk, mengirimkan SMS tersebut ke peladen SMSGateway.me.
* Server SMSGateway.me mengembalikan balasan substansial data SMS masuk.

> Using our free service you can turn your Android phone into a free SMS Gateway. Allowing you to both send and receive SMS messages programmatically using our restful API.

Mempersiapkan SMS Gateway
Daftar terlebih dahulu pada layanan SMSGateway.derita, untuk mendapatkan email (username) dan password. Tenang, layanan ini gratis — setidaknya untuk sampai saat ini — .

Instal petisi SMSGateway.me pada smartphone Android nan mau digunakan bak SMS server. Setelah aplikasi diinstal, login ke aplikasi SMSGateway.me di Android dengan email dan password yang sama bilamana kita mendaftar pada versi web.

Dengan login ke dalam tuntutan Android, kita akan mendaftarkan dan mendapatkan laporan baru berwujud Device ID. Device ID ini nantinya akan gegares digunakan cak bagi autentikasi bersamaan dengan email & password puas saat utus SMS dari aplikasi.

Perumpamaan deklarasi lampiran, device nan didaftarkan dalam layanan bisa kian pecah satu. Hal tersebut bisa dilakukan dengan cara menginstal tuntutan SMSGateway.me kerjakan Android sreg smartphone yang farik.

Mempersiapkan Permohonan Berbasis Laravel
Penjelasan bagi membangun aplikasi sahaja saya tulis secara garis besar. Saya anggap kalian sudah familiar dengan Laravel beserta fitur di dalamnya.

Migrations
Buat sebuah tabel dengan nama
messages
memperalat migrations. Pastikan konfigurasi basisdata telah diatur sebelumnya. php artisan make:migration create_messages_table –create=messages
Tambahkan beberapa kolom lega tabel
messages. /** * Run the migrations. * * @return void */
public function up()
{ Schema::create(‘messages’, function (Blueprint $table) { $table->increments(‘id’); // contact information $table->integer(‘contact_id’); $table->string(‘contact_number’, 30); $table->string(‘contact_name’, 100); // message information $table->string(‘device_id’, 30); $table->text(‘message’); $table->enum(‘type’, [‘inbox’, ‘outbox’, ‘draft’])->default(‘outbox’); $table->dateTime(‘expired_at’); $table->timestamps(); $table->index([‘contact_name’, ‘contact_number’]); });
}

Sejatinya, n domestik proses pengiriman SMS, tabel ini tidak harus digunakan. Belaka, tak ada salahnya kita menyimpan pesan keluar sebagi log. Tabel ini nantinya akan sangat berfaedah saat digunakan lakukan menyimpan pesan turut berpunca smartphone.

Eksekusi migrations di atas dengan perintah berikut. php artisan migrate
Model
Migrations dan grafik
messages
sudah dibuat, selanjutnya ialah membuat teoretis. php artisan make:model Message
Adapun lokasi taris cermin tersebut ada di
app/Message.php.

Tambahkan ruangan
expired_at
ke dalam magic property
$dates
mudah-mudahan nilai kembaliannya berupa objek Carbon layaknya kolom
created_at
dan
updated_at. namespace App; use Illuminate\Database\Eloquent\Acuan; class Message extends Ideal
{ /** * @var array */ protected $dates = [‘expired_at’];
}

Config
Lakukan config baru dengan menambahkan taris
smsgateway.php
pada direktori
config. Config ini nanti berisi informasi credential seperti email, password, dan device ID yang akan digunakan plong controller bikin utus dan mengamini SMS melintasi Api. return [ ‘email’ => env(‘SMS_EMAIL’, ‘[email protected]’), // insert your email here ‘password’ => env(‘SMS_PASSWORD’, ”), // insert your password here ‘device’ => env(‘SMS_DEVICE’, ”), // insert your device ID here
];
Pada config di atas, saya menunggangi kepentingan
env()
yang memungkinkan kita menambahkan dan mengatak nilainya berasal gabung
.env.

Validasi dengan Form Request
Seharusnya controller lebih ramping, untuk validasinya kita memperalat form request yang bisa dibuat melampaui
artisan. php artisan make:request Message/ValidationRequest
Mengenai isi lengkapnya adalah andai berikut. namespace App\Http\Requests\Message; use Illuminate\Foundation\Http\FormRequest; class ValidationRequest extends FormRequest
/** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() max:30′, ‘name’ => ‘required

Controller
Bikin controller mentah dengan nama
MessageController
menggunakan
artisan. php artisan make:controller MessageController // lakukan mendapatkan layout default berbasis bootstrap php artisan make:auth
Di kerumahtanggaan controller ini, kita akan menambahkan dua buah method, adalah
form()
dan
send(). Yang mana, method
form()
berfungsi untuk menampilkan perolehan nomor telepon tujuan, segel, serta pesan yang akan dikirim. Padahal method
send()
berfungsi untuk mengirim SMS mengunakan SMSGateway.berpenyakitan.

Berikut isi class
MessageController. namespace App\Http\Controllers; use App\Http\Requests\Message\ValidationRequest;
use App\Message; /** * @author Yugo <[email protected]> * @copyright Laravel.web.id */
class MessageController extends Controller
{ /** * Show form for send messae */ public function form() { return view(‘contents.messages.form’); }

/** * @param ValidationRequest $request */ public function send(ValidationRequest $request) { abort_if(!function_exists(‘curl_init’), 400, ‘CURL is not installed.’); $curl = curl_init(‘/api/v3/messages/send’); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, [ ‘email’ => config(‘smsgateway.email’), ‘password’ => config(‘smsgateway.password’), ‘device’ => config(‘smsgateway.device’), ‘number’ => $request->number, ‘name’ => $request->name, ‘message’ => $request->message, ]); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = json_decode(curl_exec($curl)); curl_close($curl); if ($response->success === true) { if (!empty($response->result->fails)) { \Log::debug($response->result->fails); } else { foreach ($response->result->success as $success) { $messages[] = [ ‘type’ => ‘outbox’, ‘contact_id’ => $success->contact->id, ‘contact_name’ => $success->contact->name, ‘contact_number’ => $success->contact->number, ‘device_id’ => $success->device_id, ‘message’ => $success->message, ‘expired_at’ => \Carbon\Carbon::now()->timestamp($success->expires_at), ‘created_at’ => \Carbon\Carbon::now(), ‘updated_at’ => \Carbon\Carbon::now(), ]; } Message::insert($messages); return redirect() >route(‘message.form’) >withSuccess(‘Message has been sent successfully.’); } } else { \Log::debug(json_encode($response->errors)); } return redirect() >back() >withError(‘Failed to send message.’); }
}

> PHP supports libcurl, a library created by Daniel Stenberg, that allows you to connect and communicate to many different types of servers with many different types of protocols. libcurl currently supports the http, https, ftp, gopher, telnet, dict, file, and ldap protocols. libcurl also supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading (this can also be done with PHP’s ftp extension), HTTP form based upload, proxies, cookies, and user+password authentication. Adv minim penjelasan. Dalam method send() saya menunggangi librari cURL untuk mengirim data ke server SMSGateway.berpenyakitan. Adapun method-nya sendiri berupa POST dengan isi data nomor telepon, jenama, dan wanti-wanti. Response dari API SMSGateway.me diproses kembali bikin kemudian disimpan ke dalam tabel messages menggunakan model yang telah dibuat sebelumnya. Kamil response data ketika berakibat. { “success”: true, “result”: { “success”: [ { “id”: “308”, “device_id”: “4”, “message”: “hello world!”, “status”: “pending”, “send_at”: ” “, “queued_at”: “0”, “sent_at”: “0”, “delivered_at”: “0”, “expires_at”: ” “, “canceled_at”: “0”, “failed_at”: “0”, “received_at”: “0”, “error”: “None”, “created_at”: ” “, “contact”: { “id”: “14”, “name”: “Phyllis Turner”, “number”: “+ ” } } ], “fails”: [ ] } } SMSgateway.derita juga menyisihkan librari PHP siap pakai untuk melampiaskan n domestik mengirim dan mengambil data dari server mereka. Librarinya seorang boleh diunduh lega tautan berikut smsgateway.berpenyakitan/sms-api-libraries/sms-gateway-me-php.zip. Form Untuk berkas hijau dengan segel form.blade.php pada direktori resources/views/contents/messages. Salin template di bawah kerjakan membuat form bingkis SMS. Kalau terbiasa, dimodifikasi sedemkian rupa agar lebih nyaman internal pemanfaatan. @extends(‘layouts.app’) @section(‘content’) {{ $title or ‘Send Message’ }} @if (session()->has(‘error’)) @endif @if (session()->has(‘success’)) @endif {{ csrf_field() }} {{ method_field(‘post’) }} @if ($errors->has(‘number’)) {{ $errors->first(‘number’) }} @endif @if ($errors->has(‘name’)) {{ $errors->first(‘name’) }} @endif @if ($errors->has(‘message’)) {{ $errors->first(‘message’) }} @endif