Rabu, 22 September 2010

Setting SMS Gateway Multi Modem

SMS Gateway, kadang dibutuhkan lebih dari satu modem untuk berbagai macam urusan yang berbeda-beda. Dalam salah satu kasus misalnya pada client saya, karena pengakses SMS cukup banyak dan multi operator, maka dibutuhkan layanan yang murah pulsa juga untuk semua operator. Tentu SMS ke sesama operator akan jauh lebih murah daripada lintas operator. Untuk itu bisa digunakan banyak modem untuk banyak nomer yang berbeda operator. Tujuannya adalah mengurangi pengeluaran pulsa. Misal:

Pengakses menggunakan Telkomsel akan dibalas dengan nomer Telkomsel juga
Pengakses Indosat akan dibalas dengan nomer Indosat juga
dan seterusnya.
Dan bagaimana jika pengakses menggunakan telkomsel melakukan sms ke nomer XL? Tentu berasumsi dari pengurangan biaya pulsa, tetap akan dibalas dengan Telkomsel juga. Bisakah? Tentu saja bisa. Berikut tutorialnya:

Pada SMSDRC terdapat beberapa opsi sebagai berikut:

-
# This is a sample Gammu SMSD configuration file. It's required for gammu-smsd,
# see gammu-smsdrc(5) for documentation.

# Gammu configuration, this section is like section "gammu" in "gammurc" file,
# see gammurc(5) for documentation.
[gammu]
port = /dev/ttyUSB0
#model = 6110
connection = at115200
#synchronizetime = yes
#logfile = gammulog # this is not used at all in SMSD mode
logformat = textall
#use_locking = yes
#gammuloc = gammu.us
#startinfo = yes

# When uncomment this section and insert numbers here, smsd will process
# incoming sms only from numbers written here (incoming sms from all other
# numbers will be deleted)
#[include_numbers]
#number1 = 1234

# When uncomment this section and insert numbers here, smsd will process
# incoming sms from all numbers not written here (incoming sms from numbers
# written here will be deleted). This is "black" list.
# Note: after using "include_numbers" section this one will be ignored
#[exclude_numbers]
#number1 = 1234

# General SMSD settings, see gammu-smsdrc(5) for detailed description.
[smsd]
# SMSD service to use, one of FILES, MYSQL, PGSQL, DBI
service = mysql
# PIN for SIM card
#PIN = 1234
# File (or stderr, syslog, eventlog) where information will be logged
logfile = /var/log/smsdlog-telkomsel
# Amount of information being logged, each bit mean one level
debuglevel = 0
# Configuration for using more phones on same database
#phoneid = MyPhone1
# Script to be executed when new message has been received
runonreceive = /home/bimo/sms.sh
# Commication frequency settings
commtimeout = 30
sendtimeout = 30
#receivefrequency = 0

# Phone communication settings
.
.
.
.
-

Perhatikan pada bagian phoneId, kita bisa mengubahnya menjadi :

# This is a sample Gammu SMSD configuration file. It's required for gammu-smsd,
# see gammu-smsdrc(5) for documentation.

# Gammu configuration, this section is like section "gammu" in "gammurc" file,
# see gammurc(5) for documentation.
[gammu]
port = /dev/ttyUSB2
#model = 6110
connection = at115200
#synchronizetime = yes
#logfile = gammulog # this is not used at all in SMSD mode
logformat = textall
#use_locking = yes
#gammuloc = gammu.us
#startinfo = yes

# When uncomment this section and insert numbers here, smsd will process
# incoming sms only from numbers written here (incoming sms from all other
# numbers will be deleted)
#[include_numbers]
#number1 = 1234

# When uncomment this section and insert numbers here, smsd will process
# incoming sms from all numbers not written here (incoming sms from numbers
# written here will be deleted). This is "black" list.
# Note: after using "include_numbers" section this one will be ignored
#[exclude_numbers]
#number1 = 1234

# General SMSD settings, see gammu-smsdrc(5) for detailed description.
[smsd]
# SMSD service to use, one of FILES, MYSQL, PGSQL, DBI
service = mysql
# PIN for SIM card
#PIN = 1234
# File (or stderr, syslog, eventlog) where information will be logged
logfile = /var/log/smsdlog-indosat
# Amount of information being logged, each bit mean one level
debuglevel = 0
# Configuration for using more phones on same database
phoneid = NoIndosat
# Script to be executed when new message has been received
runonreceive = /home/bimo/sms.sh
# Commication frequency settings
commtimeout = 30
sendtimeout = 30
#receivefrequency = 0

# Phone communication settings
.
.
.
.

Lantas bagaimana dengan yang lain? Nah setelah selesai, rename saja smsdrc anda tersebut dengan sembarang nama: smsdrc-telkomsel.

Setelah itu anda dapat mengkopi smsdrc tersebut, dengan nama smsdrc-indosat, smsdrc-xl, smsdrc-3, smsdrc-axis, atau dengan nama apapun. Tentunya masing-masing smsdrc harus disesuaikan Port COM nya, seperti tutorial beberapa waktu lalu. Selain itu disesuaikan juga nama phoneId nya sesuai keinginan anda. Untuk konfigurasi saya menggunakan sistem operasi Linux, tidak masalah juga dengan anda yang menggunakan Windows, biasanya perbedaan konfigurasi hanya pada COM port nya, dan paling beberapa susunan struktur path direktori.

contoh:

di linux :
port = /dev/ttyUSB0

di windows
port = com5:

di linux path log ada di :
/var/log/smsdlog-telkomsel

di windows :
C:\smsdlog-telkomsel



Installasi Service

Kemudian anda dapat melakukan installasi service satu persatu. Sehingga gammu anda pada service akan terdapat lebih dari satu.

Pada windows dapat dilakukan installasi seperti berikut:

- Buka Command Prompt
- Arahkan pada direktori yang bersangkutan

contoh :
cd \
cd Gammu
cd bin

- ketikkan perintah installasi

gammu-smsd.exe -i -c smsdrc-telkomsel -n SMSD-Telkomsel
gammu-smsd.exe -i -c smsdrc-indosat -n SMSD-Indosat
gammu-smsd.exe -i -c smsdrc-xl -n SMSD-XL

Pada Linux, anda tinggal memasang script command gammu untuk menjalankannya, dan dipasang pada startup:

gammu-smsd -c /etc/smsdrc-telkomsel &
gammu-smsd -c /etc/smsdrc-indosat &
gammu-smsd -c /etc/smsdrc-xl &




Dengan demikian, masing-masing Gammu telah berjalan untuk modem yang berbeda-beda. Gammu itu juga telah memiliki PhoneID yang berbeda beda. Lantas darimana kita tahu bahwa sebuah SMS muncul dari modem tertentu?

Perhatikan pada database SMSD yang telah anda buat, dan perhatikan pada tabel INBOX, seluruh SMS akan masuk sesuai dengan phoneId nya. PhoneId pada smsdrc akan masuk ke database sebagai RecipientId

Perhatikan pada RecipientId. pada modem yang telah diberikan PhoneId akan muncul RecipientId pada tabel inboxnya.

Lantas bagaimana dengan pengiriman? Sama saja dengan penerimaan, maka proses pengiriman tinggal memberikan id pada SenderId dan CreatorId

INSERT INTO `outbox` (`DestinationNumber`,`TextDecoded`,`SenderId`,`CreatorId`) VALUES ('08181818181','Ini sms xl','NoXL','NoXL');

INSERT INTO `outbox` (`DestinationNumber`,`TextDecoded`,`SenderId`,`CreatorId`) VALUES ('085608560856','Ini sms Indosat','NoIndosat','NoIndosat');


Pada PHP bisa dilakukan seperti ini

.
.
.
.


$sql = "INSERT INTO `outbox` (`DestinationNumber`,`TextDecoded`,`SenderId`,`CreatorId`) VALUES ('$noHp','$bunyi-sms-nya','$phoneid','$phoneid')";

mysql_query($sql);



.
.
.

Kira-kira demikian, semoga cukup membantu mengingat-ingat, dan membantu siapa yang membutuhkannya

CMIIW

15 komentar:

  1. hm..sepertinya untuk tingkat 'advance' nih..

    Btw, tfa gan!

    BalasHapus
  2. mulai dari basicnya pun pernah saya tulis kok di MP :) coba disearch di google :

    sms gateway bimosaurus.multiply.com

    sepertinya tetep bakal ketemu.. karena biasanya tutorial saya setting for Everyone. sedikit-sedikit saya tuliskan disini sembari mengingat, juga memudahkan siapapun yang membutuhkan

    BalasHapus
  3. nice info,,but kayanya otak ku belum sampai kesana,,,,hahahahaa...

    BalasHapus
  4. Dengan ijin Tuhan, saya jamin mengikuti tutorial saya mesti bisa :D

    BalasHapus
  5. sing wingi wae dhurung implementasi oom... hahahaha

    BalasHapus
  6. wekekeee.. lha ayo :D
    minimal disimpen sik sopo ngerti kanggo sukmben

    BalasHapus
  7. bikin event pelatihan, nanti biar saya dan teman teman sekomunitas yang nggarap :D

    BalasHapus
  8. nitip absensi sik x sopo ngerti iso berguna

    maturnuwun bim

    BalasHapus
  9. sami sami mugo migunani ngo liyan

    BalasHapus
  10. nah loh... ketemu yg ini... mau tanya om.. itu modem nya di tancepin dimana?? di device sendiri kah?? mesti punya server yg fisiknya ada di kita donk yah om kalo kayak gini :(

    BalasHapus