Open Source

Aplikasi SMS Gateway dengan Nodejs

Update terakhir: Rabu, 22 Juli 2020 (Update inisialisasi kode sumber dan pilihan instalasi servis pada sistem Linux)

Integrasi fungsi GSM semisal SMS atau USSD kini sangat dimungkinkan dengan adanya Aplikasi SMS Gateway ini. Aplikasi SMS Gateway ini dapat mengirim dan menerima pesan singkat (SMS), dan tidak diperlukan hardware khusus yang mahal. Cukup dengan modem USB yang biasanya digunakan untuk menyambungkan koneksi internet operator seluler.

Aplikasi SMS Gateway ini juga bisa berjalan di semua platform sistem operasi yang didukung oleh Nodejs termasuk Windows, Linux, dan MacOS juga berlisensi sumber terbuka yang dapat dilihat di Github.

Aplikasi SMS Gateway terbagi menjadi 2 (dua) bagian:

  • SMS Terminal yang menangani fungsi dasar komunikasi GSM semisal mengirim dan menerima SMS.
  • SMS Gateway berfungsi sebagai pengatur antrian, juga menyediakan fungsi jembatan untuk aplikasi lain yang memanfaatkan fungsi-fungsi GSM. SMS Gateway juga menyediakan antar muka plugin sehingga fungsi Aplikasi SMS Gateway dapat diperluas dengan fungsi-fungsi khusus sesuai yang diinginkan.

Persyaratan Sistem

  • Git
  • Nodejs versi 8.11.3 atau lebih tinggi. Jika menggunakan Linux, direkomendasikan menggunakan NodeSource Node.js Binary Distribution.
  • MySQL Server, penggunaan database server yang lain bisa digunakan sepanjang Sequelize mendukungnya.
  • Perangkat yang didukung antara lain Sony Ericsson, Siemens C-55, Huawei (E173, E3372, EC1260-2), ZTE (MF190), dan Wavecom.

Instalasi

Metode instalasi hanya tersedia menggunakan Git.

Kloning Aplikasi SMS Gateway

$ cd ~
$ git clone https://github.com/tohenk/node-sms-gw.git

Inisialisasi kode sumber SMS Terminal dan SMS Gateway

$ cd ~/node-sms-gw
$ git submodule update --init --recursive --merge --remote -- terminal
$ git submodule update --init --recursive --merge --remote -- gateway

Jika inisialisasi git submodule secara rekursif di atas tidak berhasil, update submodule dapat dilakukan satu per satu:

$ cd ~/node-sms-gw
$ git submodule update --init --merge --remote -- terminal/lib
$ git submodule update --init --merge --remote -- terminal/ui/lib
$ git submodule update --init --merge --remote -- terminal/ui/lib/script
$ git submodule update --init --merge --remote -- terminal/ui/public/js
$ git submodule update --init --merge --remote -- gateway/lib
$ git submodule update --init --merge --remote -- gateway/ui/lib
$ git submodule update --init --merge --remote -- gateway/ui/lib/script
$ git submodule update --init --merge --remote -- gateway/ui/public/js

Untuk meng-update, hilangkan opsi --init dari perintah git submodule update.

Persiapan

MySQL sudah harus terpasang dengan benar. Untuk melakukannya, rujuk ke dokumentasi MySQL.

Membuat skema MySQL

$ cd ~/node-sms-gw
$ mysql -u root -p < docs/smsgw.sql

Menambahkan user MySQL

$ mysql -u root -p
mysql> grant all privileges on 'smsgw'.'*' to 'user'@'%' identified by 'password';
mysql> exit

Gantikan baik untuk user dan password dengan user dan password yang diinginkan.

Menambahkan user sistem dan mengatur hak akses

Jika menggunakan Linux, sangat disarankan menambahkan user terpisah untuk service, kemudian mengatur hak akses ke file dan folder tersebut.

$ sudo adduser --system --no-create-home --disabled-login nodejs

$ cd ~/node-sms-gw/terminal
$ mkdir -p sessions
$ sudo chown -vR nodejs logs sessions msgref.json

$ cd ~/node-sms-gw/gateway
$ mkdir -p sessions
$ sudo chown -vR nodejs config logs sessions

Konfigurasi

Konfigurasi SMS Terminal

Konfigurasi lengkap SMS Terminal dapat dilihat di sini.

Konfigurasi SMS Gateway

Konfigurasi lengkap SMS Gateway dapat dilihat di sini.

Membuat service

Linux

Menggunakan systemd

Untuk membuat service SMS Terminal, ikuti perintah-perintah ini. Sesuaikan lokasi path dengan kondisi path sesungguhnya.

$ cd ~/node-sms-gw
$ vi service/linux/systemd/node-sms-terminal.service
$ sudo cp service/linux/systemd/node-sms-terminal.service /etc/systemd/system/
$ sudo systemctl daemon-reload
$ sudo systemctl enable node-sms-terminal.service

Dan akhirnya, untuk memulai service SMS Terminal lakukan:

$ systemctl start node-sms-terminal

Untuk membuat service SMS Gateway, ikuti perintah-perintah ini. Sesuaikan lokasi path dengan kondisi path sesungguhnya.

$ cd ~/node-sms-gw
$ vi service/linux/systemd/node-sms-gateway.service
$ sudo cp service/linux/systemd/node-sms-gateway.service /etc/systemd/system/
$ sudo systemctl daemon-reload
$ sudo systemctl enable node-sms-gateway.service

Dan akhirnya, untuk memulai service SMS Gateway lakukan:

$ systemctl start node-sms-gateway
Menggunakan init.d

Untuk membuat service SMS Terminal, ikuti perintah-perintah ini. Sesuaikan lokasi path dengan kondisi path sesungguhnya.

$ cd ~/node-sms-gw
$ chmod +x service/linux/init.d/node-sms-terminal
$ vi service/linux/init.d/node-sms-terminal
$ sudo cp service/linux/init.d/node-sms-terminal /etc/init.d/
$ sudo update-rc.d node-sms-terminal defaults
$ systemctl daemon-reload

Dan akhirnya, untuk memulai service SMS Terminal lakukan:

$ systemctl start node-sms-terminal

Untuk membuat service SMS Gateway, ikuti perintah-perintah ini. Sesuaikan lokasi path dengan kondisi path sesungguhnya.

$ cd ~/node-sms-gw
$ chmod +x service/linux/init.d/node-sms-gateway
$ vi service/linux/init.d/node-sms-gateway
$ sudo cp service/linux/init.d/node-sms-gateway /etc/init.d/
$ sudo update-rc.d node-sms-gateway defaults
$ systemctl daemon-reload

Dan akhirnya, untuk memulai service SMS Gateway lakukan:

$ systemctl start node-sms-gateway

Windows

Fungsi service pada Windows saat ini ditangani oleh node-windows. Untuk memasang node-windows ikuti langkah ini:

> cd path\to\node-sms-gw
> npm install node-windows --global
> npm link node-windows
Service SMS Terminal

Lakukan langkah-langkah berikut menggunakan Administrator Command Prompt:

> cd path\to\node-sms-gw
> node service\windows\terminal.js install

> net start nodesmsterminal.exe
Service SMS Gateway

Lakukan langkah-langkah berikut menggunakan Administrator Command Prompt:

> cd path\to\node-sms-gw
> node service\windows\gateway.js install

> net start nodesmsgateway.exe

Web Interface SMS Terminal

Web interface SMS Terminal secara baku menggunakan port 8000, buka browser pada alamat http://localhost:8000. User dan password untuk web interface adalah admin baik untuk username dan password (atau sesuai konfigurasi di atas).

Web Interface SMS Gateway

Web interface SMS Gateway secara baku menggunakan port 8080, buka browser pada alamat http://localhost:8080. User dan password untuk web interface adalah admin baik untuk username dan password (atau sesuai konfigurasi di atas).

Integrasi SMS Gateway dengan aplikasi lain

Untuk mengintegrasikan fungsi SMS Gateway ke aplikasi lain dapat melihat contoh ini.

Leave a Reply