Gammu SMS Gateway Autorespon with PHP

Sebelum lebih dalam, berikaitan dengan artikel ini mohon perhatikan hal-hal berikut :
  1. Pastikan anda sudah tahu mengenai PHP CLI, kalau belum anda wajib mengunjungi situs ini dulu http://www.php-cli.com/
  2. Pastikan anda tahu penggunakan Windows Task Schedule untuk pengguna Microsoft Windows dan Cron Job untuk pengguna Linux. Kalau belum ada sebaiknya kunjungi situs-situs berikut: - http://www.iopus.com/guides/winscheduler.htm - http://www.astahost.com/Cron-Jobs-Tutorial-t2324.html
  3. Selanjutnya pastikan anda tahu hubungan antara poin 1 & 2 diatas, kalau belum jangan malas untuk kunjungi situs berikut : http://www.devarticles.com/c/a/PHP/PHP-CLI-and-Cron/
  4. Pastikan juga anda sudah menguasai MySQL dasar & PHP dasar, pertanyaan mengenai penggunaan fungsi-fungsi build MySQL & PHP silahkan merujuk ke masing manual yang ada.
  5. Class PHP API for Gammu sudah siap digunakan, jadi kembangkan sesuai dengan kebutuhan anda, fungsi build dari class tersebut sudah cukup mengakomodir artikel ini.
  6. Anda kesulitan ??? sebaikanya anda tanya guru saya Mr. Goo....
Requirement : - Web Server with PHP 5.0 or latest version http://www.php.net/ - Database Server MySQL 5.0 or latest version http://www.mysql.com/ - Gammu 1.10 or latest version http://www.gammu.org/ - Class PHP API for Gammu http://www.phpclasses.org/browse/package/3865.html 1. Install Webserver compile PHP 5.x (silahkan merujuk ke manual webserver dan PHp) 2. Install Database Server MySQL 5.x (silahkan merujuk ke manual MySQL) 3. Install Gammu SMS Gateway (silahkan merujuk ke manual Gammu) 4. Buatkan folder 'sms' di www_root/home_web
Contoh:
*Win
Path = 'C:\Program Files\httpd\www\sms'
Jalankan Windows Command/CMD
ketik: md C:\Program Files\httpd\www\sms
*Nix
Path = '/var/www/sms'
mkdir /var/www/sms
5. Download dan letakkan class.sms.php di path yang dibuat tadi
Contoh: /var/www/sms/class.sms.php
6. Buatkan database baru di mysql dengan menggunakan MySQL Client Favorit anda atau Export SQL Query berikut:
CREATE DATABASE sms;
USE sms;
CREATE TABLE inbox (
id bigint(5) unsigned primary key auto_increment,
mID varchar(80) unique,
tanggal datetime default '0000-00-00 00:00:00',
nomor varchar(40),
pesan text,
pstatus varchar(10)
);

CREATE TABLE outbox (
id bigint(5) unsigned primary key auto_increment,
mID varchar(80) unique,
tanggal datetime default '0000-00-00 00:00:00',
nomor varchar(40),
pesan text,
pstatus varchar(10)
);
7. Buatkan satu file baru php dengan 'autosms.php' di path yang sama
Contoh: /var/www/sms/autosms.php ketik kode berikut :
enable_sudo(0); //Set 0 for windows

echo "Download SMS dari HP\n";
$data = $sms->Get(); //Download SMS dari HP
//Simpan Inbox
foreach ($data['Inbox'] as $inbox) {
if (!mysql_query("INSERT IGNORE INTO inbox (mID, tanggal, nomor, pesan, pstatus) VALUES ('".$inbox['ID']."', '".$inbox['SentTime']."', '".$inbox['Number']."', '".$inbox['body']."', 'UnRead')")) {
echo mysql_error();
}
else {  echo "[INBOX] ".$inbox['Number'].":".$inbox['body']."\n"; }
}
//Simpan Outbox
foreach ($data['Outbox'] as $outbox) {
if (!mysql_query("INSERT IGNORE INTO outbox (mID, tanggal, nomor, pesan, pstatus) VALUES ('".$outbox['ID']."', '".$outbox['SentTime']."', '".$outbox['Number']."', '".$outbox['body']."', '".$outbox['Status']."')")) {
echo mysql_error();
}
else {  echo "[OUTBOX] ".$outbox['Number'].":".$outbox['body']."\n"; }
}

//Hapus SMS dari HP
//Hilangkan tanda komentar '#' jika ingin menghapus
# $sms->Del(1,$respon); //Hapus Inbox (Memory SIM)
# echo "$respon\n";
# $sms->Del(2,$respon); //Hapus Outbox (Memory SIM)
# echo "$respon\n";
# $sms->Del(3,$respon); //Hapus Inbox (Memory HP)
# echo "$respon\n";
# $sms->Del(4,$respon); //Hapus Outbox (Memory HP)
# echo "$respon\n";
sleep(5);
echo "Memeriksa format SMS dari Inbox\n";
$query=mysql_query("select * from inbox where pstatus='UnRead'");
while($result=mysql_fetch_assoc($query)) {
$text = explode(" ",$result['pesan']);
if (strtoupper($text[0]) == "CEK" and strtoupper($text[1]) == "SALDO") {
echo "FORMAT: CEK SALDO [ID_ANGGOTA]\n";
/*
Kode Pemeriksaan Saldo Anggota disini
jika valid berikut pesan otomatisnya
*/
$pesan="SALDO ANDA Rp. 123.456";
//Catatan:
//Jumlah saldo diasumsikan telah dicari lewat database berdasarkan
//ID_ANGGOTA = $text[2]
mysql_query("INSERT INTO outbox (mID, tanggal, nomor, pesan, pstatus) VALUES ('".$result['mID']."', now(), '".$result['nomor']."', '".str_replace(array("\t","\r","\n")," ",$pesan)."', 'UnSent')");
echo "[OUTBOX] ".$result['nomor'].": $pesan\n";
}
if (strtoupper($text[0]) == "REG") {
echo "FORMAT: REG [NAMA] [KOTA]\n";
/*
Kode Pendaftaran disini dan jika berhasil
berikut pesan otomatisnya
*/
$pesan="Terima kasih, pendaftaran berhasil Nama: ".$text[1]." Alamat: ".$text[2]." ";
mysql_query("INSERT INTO outbox (mID, tanggal, nomor, pesan, pstatus) VALUES ('".$result['mID']."', now(), '".$result['nomor']."', '".str_replace(array("\t","\r","\n")," ",$pesan)."', 'UnSent')");
echo "[OUTBOX] ".$result['nomor'].": $pesan\n";
}
mysql_query("UPDATE inbox set pstatus='Read' where id='".$result['id']."'");
}
sleep(5);
echo "Mengirimkan SMS dari Outbox\n";
$query=mysql_query("select * from outbox where pstatus='UnSent'");
while($result=mysql_fetch_assoc($query)) {
if ($sms->Send($result['nomor'],$result['pesan'],0,0,0,$respon)) {
echo "[KIRIM] ".$result['nomor'].": ".$result['pesan']."\n";
echo $respon;
mysql_query("UPDATE outbox set pstatus='Sent' where id='".$result['id']."'");
} else {
echo $sms->Error;
}
}
?>
8. Selanjutnya buatkan satu file untuk eksekusi php Untuk *Win Buat File: sms.bat
PATH\php.exe -c PATH\php_custom.ini PATH\autosms.php
Catatan: buatkan custom php.ini (beda dengan php.ini default) dan perhatikan extension_dir Kemudian tambahkan pada Windows Task Schedule lewat Command Line (Windows CMD/Command.com)
schtasks /CREATE /SC MINUTE /MO 5 /ST 12:00:00
/TN "AUTO SMS" /TR "PATH\sms.bat" /RU "System"
*Nix/Linux Tambahkan pada cron job: crontab -e (Edit cront job with vi editor)
# Execute every 5 minutes
*/5 * * * * PATH/php PATH/autosms.php
Selamat Mencoba

Komentar

  1. mas nanya ini --> $sms->enable_sudo(0)

    enable_sudo itu fungsi sdh ada atau yg sdh di fungsikan di class ?.. kalo di class saya tidak menemukan enable_sudo

    BalasHapus
  2. Anda dapat men'disable' (comment)
    fungsi itu jika menggunakan windows atau tidak menggunakan sudo untuk menjalan gammu command execute.

    Tapi jika anda menggunakan sudo
    silahkan download Version update 2.1 di
    http://www.phpclasses.org/browse/package/3865.html

    BalasHapus
  3. wah,salut abis dech buat mas steven..
    mas, btw slide show itu putranya yaa?
    wew, lucu juga yaa?
    salam buat si kecil..
    jangan bosen buat ngoprek sms gatewaynya ya mas..

    merdeka buat gammunya..

    BalasHapus
  4. malam mas?
    mas, kalo mau jalanin perintah konsol di PHP gimana caranya mas?
    misal saya mau menampilkan Jenis Handset saya. kalo lewat konsol kan pake #gammu --identify, lha kalo di php gimana ya mas?
    dibuat seperti link lho mas..
    masih bingung nich sampe sekarang.

    terima kasih banyak dan sukses selalu ya mas!! salam buat dedek kecil..

    BalasHapus
  5. Selamat Malam mas Stiev?
    mas, saya minta tolong..
    saya kesulitan dalam pengembangan aplikasi sms gateway gammu..
    btw, script yang ada diblog mas ketika saya jalankan(sudah saya edit)
    kok error(gak tampil sama sekali) ya mas?
    saya sudah menjalanakan sms gateway bawaan gammu,berhasil sich mas..
    tapi sms gatewayku gak bisa autoreply, dia hanya bisa mengirimkan
    secara otomatis sesuai Time yang saya berikan.
    saya kepingin sms gateway saya bisa autoreply ketika ada sms masuk
    yang belum kebaca sesuai yang mas buat.
    solusinya gimana ya mas??

    ini system saya :
    Mysql Version = -4.1.7-4.RHEL4.1
    Php Vwersion = -4.3.9-3.1
    Linux Kernel = -2.6.9-5.EL
    Apache Web Server = 2.0
    Gammu version = 1.09.00 built 04:07:58 Mar 13 2008 in gcc 3.4

    apa itu berpengaruh mas?

    regards,

    mardhie / mapays

    BalasHapus
  6. gunanya apa sich ngisi komentar / pertanyaan disini???
    bisa dijawab mas admin?

    BalasHapus
  7. Gunanya supaya bisa dijawab admin kalo tidak sibuk, sudah untung admin mau menyediakan waktu untuk sedikit menulis tutorial, Admin was not the only one who created this articl e. You can search another references, there are many tutorial about sms gateway just search it

    BalasHapus
  8. mas kalau misalnya saya punya kasus seperti ini;
    user mengirim format sms
    #reg#ack#nama tempat yg akan dilaporkan#comment"#,dengan kondisi inputan "nama tempat yang akan dilaporkan" dan "comment" terserah formatnya trus yg sya mau tanayakan ::
    ->bgm script untuk memecah isi sms, sehingga hanya inputan yang terserah formatnya yang dimasukkan ke data base? scriptnya boleh php/mysql terserah mas.trima kasih,ditunggu pencerahannya mas.....

    BalasHapus
  9. $hasil=explode("#",$pesannya);

    See manual PHP explode() function for mor detail

    BalasHapus
  10. Mas mau tanya klo setelah saya jalankan command
    gammu --smsd MYSQL smsdrc

    hasilnya seperti ini :

    41A : 54T:2B+: .....
    1 "At+CPIN?"
    2 "+CPIN:READY"
    RECEIVED frame type 0x00/length 0x19/25
    41A : 54T:2B+: .....
    Security status received - nothing to enter
    1 "OK"
    RECEIVED frame type 0x00/length 0x04/4
    4FO:4BK:0D:0A
    UPDATE 'phones' SET 'TimeOut' = (NOW() + INTERVAL 10 SECOND)+) WHERE 'IMEI' ='354350009355467'
    Getting security code status
    SENDING frame type 0x00/length 0x09/9

    muncul berulang2 sampai ga ada berhenti2nya sampai berjam2, kira2 itu yg salah apa yah? aau memang hasilnya harusnya seperti itu? Mohon pencerahannya :D. Thx before

    BalasHapus
  11. irene> maaf ya, kayaknya itu dari gammu, saya bukan developer gammu silahkan merujuk websitenya gammu. http://www.gammu.org

    BalasHapus
  12. irene ya memamng muncul berulang2, namanya sms servernya di start so running donk

    BalasHapus
  13. Mas saya nau tanya kok muncul pesan erro seperti ini ya saat saya coba autosms.php nya

    Fatal error: Call to undefined method gammu::enable_sudo() in C:\xampp\htdocs\gammu-sms-gateway\autosms.php on line 7

    terus pada saat saya coba
    C:\Documents and Settings\Windows XP>schtasks /CREATE /SC MINUTE /MO 5 /ST 12:00
    :00/TN "AUTO SMS" /TR "PATH\sms.bat" /RU "System"
    ERROR: Invalid Argument/Option - 'AUTO SMS'.
    Type "SCHTASKS /CREATE /?" for usage.

    C:\Documents and Settings\Windows XP>schtasks /CREATE /SC MINUTE /MO 5 /ST 12:00
    :00/TN "AUTOSMS" /TR "PATH\sms.bat" /RU "System"
    ERROR: Invalid Argument/Option - 'AUTOSMS'.
    Type "SCHTASKS /CREATE /?" for usage.

    pesannya seperti itu mas.
    terimakasih mohon pencerahannya mas.

    BalasHapus
  14. Mas terima kasih sudah menjawab pertanyaan saya sebelumnya dan alhamdulillah schedule tasks nya sudah jalan.
    ada sedikit pertanyaan mas mengenai php_custom.ini itu isinya sama dengan php.ini ataukah ada yang dirubah settingannya? terus saya pengen buat info valas berbasis sms dimana data kurs kita ambil dari web lain semisal BCA kemudian kita simpan didatabase lokal terus data2 kurs dari yang lama sampai yang terbaru itu masih tersimpan...kira2 ada saran nggk mas baik itu dari model databasenya atau lainnya? terima kassih sebelumnya.

    BalasHapus
  15. mas aku da tugas database. tlg jelasin tentang mysql api pd php?

    BalasHapus
  16. MySQL API untuk PHP boleh baca disini : http://id2.php.net/mysql

    BalasHapus
  17. Kemeeruh Mas........... Yen Gak Iso Gak Usah Posting....... Jancokkkkkkkkkkkk

    BalasHapus
  18. Hallo mas, aq bwt auto reply nya pake scheduler windows udah bisa. Terima kasih atas postingannya mas =)

    Trs skg aq mo nyoba pake crontab nya di linux, klo di postingannya kan seperti ni :
    */5 * * * * PATH/php PATH/autosms.php

    bwt PATH/php di linux tu dimana yas mas? aq coba nyari di /usr/bin kq gk ada. Mohon bimbingannya...

    aq pake Ubuntu intrepid, php5.2.6, apache2.2.9

    BalasHapus
  19. di linux
    umumnya ada di /usr/bin/php
    untk tau pasti lokasi php
    ketik
    > whereis php

    BalasHapus
  20. mas steiven saya mau bertanya, kalau dari gammu bisa ngak sih kita mengirim linked sms (1 sms terdiri dari > 160 karakter)??
    kalau dari dos bisa dengan menggunakan parameter -len

    echo {pesan} | gammu --sendsms TEXT {nomer} -len {length karakter}

    yang saya mau tanyakan, apa kalau dari gammu ada yang harus disetting untuk mengirim linked sms??? karena saya liat ditabel default ada outbox multipart segala, tapi penggunaan tabel ini dari forum yang saya dapat di internet tetap mengirim lebih dari 1 sms jika panjang > 160 karakter...
    Atau bisa nga kita menjalankan perintah sendsmsnya dari php?? jadi bukan dari command prompt, terima kasih...
    untuk yang punya jawaban atau sekedar sharing pengalaman bisa email ke email saya: yopie@intraco.co.id

    BalasHapus
  21. mas kalau menggunakan windows settingan class nya gimana yah?
    terima kasih mas :)

    BalasHapus
  22. mas steve, klo ada pertanyaan dari pembaca direspon dgn baik donk, kok kesannya gak ikhlas gitu. percuma donk anda menulis jika kurang manfaat!!! tul ga'???? ntar malaikat yg input amal anda juga setengah2 lho... hehehe

    BalasHapus
  23. ya sabar donk mas,
    yang bersangkutan mungkin lagi sibuk,
    sudah untung beliau mau bagi ilmu gratis.. kan masih banyak referensi lain. Tuh kalo baca baik2 artikel ini liat aja point terakhir
    "Anda kesulitan ??? sebaikanya anda tanya guru saya Mr. Goo...."
    alias tanya om google

    BalasHapus
  24. wah keren scriptny...thanks yah bro.,..ada yg pnya co kirim kebanyak no menggunakan script php..

    BalasHapus
  25. membuat file sms.bat nya dmn mas??

    BalasHapus

Posting Komentar