Ayuk coding : Memanfaatkan runonreceive pada Gammu untuk SMS autoreply

Sebelumnya, tutorial ini menggunakan gammu 1.27.90 versi Windows karena banyak tutorial – tutorial yang yang dibuat pada saat menggunakan gammu versi lama sehingga tidak bisa dijalankan pada saat menggunakan gammu versi yang lebih baru. Gammu memang sangat mudah digunakan dan mendukung banyak sekali fitur yang bisa dimanfaatkan, support untuk berbagai macam handphone juga sangat bagus, belum lagi lisensinya yang GPL membuat saya lebih jatuh cinta dengan gammu🙂

Ada banyak pilihan ketika kita ingin membuat aplikasi SMS Gateway yang bisa autoreply. Mas Stieven Kalengkian menawarkan pendekatan dengan memanfaatkan scheduler task pada windows, sedangkan mas Rosihan Ari menawarkan pendekatan dengan memanfaatkan file php yang berjalan pada browser. Semuanya bisa berjalan dengan kelebihan dan kekurangannya masing – masing. Jika kita memanfaatkan scheduler task pada windows, maka pengecekan hanya bisa dilakukan untuk waktu yang telah diset. Apabila kita menambahkan file batch pada scheduler tiap menit rasanya itu sangat kurang efektif karena tidak real time dan itu juga menambah beban pada sisi server. Di sisi lain apabila kita memanfaatkan browser yang akan menjalankan file php dengan refresh per beberapa detik itu juga sangat memberatkan dari sisi browser, belum lagi banyak memori yang dihabiskan pada browser. Hal – hal seperti menjadi isu tersendiri bukan??

Saya mencoba untuk menawarkan pendekatan yang lebih baik lagi, yaitu dengan memanfaatkan fitur runonreceive pada file smsdrc yang ada pada gammu. Bagaimana cara kerjanya?? Oke, saya asumsikan file gammurc sudah dikonfigurasi. Selanjutnya kita buka file smsdrc, maka kita akan menemukan baris berikut :

# Script to be executed when new message has been received
#runonreceive = /some/script

Kita aktifkan opsi runonreceive tersebut kita isikan dengan sebuah batch file

# Script to be executed when new message has been received
runonreceive = D:/exec.bat #misalnya diisi seperti ini

Selanjutnya kita tinggal membuat file batch yang akan mengeksekusi file php yang akan membuat autoreply. Kita bisa menggunakan php CLI dalam file exec.bat tersebut.

# Isi file exec.bat
C:\wamp\php\php -f C:\wamp\www\proses.php

Oke, batch file sudah selesai dibuat dan konfigurasi smsdrc sudah selesai. Harusnya autoreply sudah bisa berjalan, sekarang kita hanya perlu membuat file proses.php yang akan mengirimkan balasan otomatis ketika ada sms masuk.

<?php
# File proses.php digunakan untuk mengirimkan reply ketika ada sms masuk
# Ini merupakan file POC, bisa disesuaikan sesuai kebutuhan
$sql = "SELECT ID, SenderNumber, TextDecoded FROM inbox WHERE processed = 'false'";
$qry = mysql_query($sql) or die(mysql_error());

while ($arr = mysql_fetch_array($qry)) {
       mysql_query("INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES ('".$arr['SenderNumber']."', 'Halo, ini balasan sms anda.')") or die(mysql_error());

       mysql_query("UPDATE inbox SET processed='true' WHERE ID='".$arr['ID']."'");
}
?>

Setelah semuanya siap, kita tinggal jalankan saja servis Gammu secara default lewat perintah berikut :

gammu-smsd -c smsdrc

Lalu kita coba mengirim SMS, apa yang terjadi selanjutnya??? Jika ternyata SMS anda dibalas berarti anda sukses menerapkan runonreceive pada Gammu. Bila tidak?? silakan ulangi lagi tutorial diatas.

Semoga bermanfaat

38 thoughts on “Ayuk coding : Memanfaatkan runonreceive pada Gammu untuk SMS autoreply

  1. mantab pak.. tpi ak masih bingung isi dari file bat nya pak.. maklum gak pernah make php..:(.. itu bisa make bahasa laen gak..?? kalo emang harus php..
    isi dari bat
    C:\wamp\php\php -f C:\wamp\www\proses.php

    wamp..?? direktory darimana yak.. kalo aku make appserv aja bisa..gak..???

    • berhubung saya pake windows, saya menggunakan file batch (*.bat) yang berisi untuk mengeksekusi file PHP dengan CLI yang dimiliki PHP. Berhubung php.exe terletak di direktori C:\wamp\php dan file yang dituju ada di C:\wamp\www\proses.php maka isi dari file bat saya tulis demikian :
      C:\wamp\php\php -f C:\wamp\www\proses.php

      Kalo anda menggunakan appserv, silakan cari direktori tempat php.exe berada. Semoga membantu.

      • klo km pake appserver bisa km simpan d c:appsern\www
        simpan d dalem folder www.
        klo yang pake XAMP masuk XAMP trus cari folde htdocs. coba ak semoga berhasil

  2. Ini dia neh yg aq cari. Emang bener, rata2 pake trik autorefresh (baik manual ato pake ajax), cron ato task scheduler, sampe ada yg rela bikin service. Trims banget yah. Akhirnya nemukan solusi yg lebih praktis.

    • Kalo gagal banyak sebabnya,mas. Coba cek kondisi berikut :

      1. Konfigurasi gammurc sudah benar dan sudah bisa dikenali oleh komputer.
      2. Konfigurasi smsdrc sudah benar, tanda ‘#’ untuk opsi runonreceive sudah dihilangkan.
      3. Service Gammu sudah dijalankan.
      4. Apache, PHP, MySQL sudah dijalankan.

      • Kasus saya sama mas,
        Kalau file .bat di running, sms balasan sukses terkirim. Berarti ndak ada masalah dengan apache, php,mysql,gammu.

        Tapi ketika ada sms masuk, gammu nggak mau nge-run file .bat tersebut. Gimana ya mas ?

        Berikut isi file smsdrc punya saya, tlg diperiksa apakah ada yg kurang :

        [gammu]
        port = com6:
        connection = at9600

        [smsd]
        service = mysql
        logfile = smsdlog
        debuglevel = 0
        phoneid = MyPhone1
        commtimeout = 10
        sendtimeout = 10
        deliveryreport = no
        PIN = 1234

        # —————————–
        # Konfigurasi koneksi ke MySQL
        # —————————–
        pc = localhost
        user = root
        password = pwd
        database = smsgateway

        #—————————————————–
        # Script to be executed when new message has been received
        #————————————————–
        runonreceive = c:/wamp/www/sms/autoreply.bat

  3. Pingback: Memanfaatkan RunOnReceive pada GAMMU untuk SMS AutoReply - Om Alwi ™

    • @alwi :
      terima kasih komentarnya, saya memang hanya menyederhanakan kebutuhan dari dua penulis yang saya kutip. Mungkin memang bisa dipermudah dengan solusi anda, tapi untuk yang berkaitan dengan database saya rasa solusi saya masih cukup bisa digunakan..hehehe…

  4. Pingback: Memanfaatkan RunOnReceive pada GAMMU untuk SMS AutoReply | Kliping Blog

  5. mas saya kok ng bisa ya..saya menggunakan xampp
    ini perintahnya..
    C:\xampp\php\php -f C:\xampp\htdocs\Latihan\sms ITI\auto_reply_sms.php
    saya kirim sms, tpi tidak ada balasan..tapi klo saya cek buka pake manual dgn membuka file auto_reply_sms.php..sms baru dibalas..kira2 knp itu ya mas..terima kasih..

  6. knp ketika exec.bat dijalankan secara manual error ya phpnya.

    this aplication has failed to star php_mbstring.dll was not found reinstal the aplication may fix the problem

    knp ya kira2?tidak semua suport phpnya php yg q gunakan 5.26

  7. Mas, kalo sms udah jalan tapi blsnnya cuma sms kosong, pada tabel outbox muncul textdecoded-nya tapi pas di tabel sentitems textdecoded nya kosong.. gmn kira2 solusinya? thx b4

  8. mas mau tanya..
    “Di sisi lain apabila kita memanfaatkan browser yang akan menjalankan file php dengan refresh per beberapa detik itu juga sangat memberatkan dari sisi browser, belum lagi banyak memori yang dihabiskan pada browser”
    hubungan autoreply dengan refresh per bberapa detik apa? saya membuat sms scheduler yg menggunakan auotrefresh..

  9. mas kok punya saya ga jalan2 yah…

    ini isi smsdrc: runonreceive = C:\Gammu\bin\auto_reply.bat

    isi di auto_reply.bat: C:\Program Files\Apache Software Foundation\Apache2.2\php5\php -f C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\getinfo.php

    apa salahnya di auto_reply.bat gara2 di directorynya ada huruf spasi?

    • Coba isi dari auto_reply.bat dieksekusi dulu di cmd apakah sukses atau error. Kalo menurut saya masalahnya memang adanya spasi di direktorinya itu CMIIW..

  10. saya malah ga jalan autoreplynya mas. tapi ada solusi bikin sebuah services dari vb6😀
    pertama saya membuat execute file bat tersebut di vb6 dengan kode :
    shell daemon.bat
    compile dan copy dalam 1 folder daemon.bat tsb.
    Nah tinggal auto start aja :3

  11. salam….. sy liat di tutorialx itu hanya 1 buah file .bat yg mau di jalankan di runonreceive nya… nah kalo misalnya sy ingin menjalankan lebih dari 1 file .bat, misalx 2 ato 3 lah file .bat yg aku mau jalankan di runonreceived nya… gimana yaaa?? trims

    • Kalo 3 file batch sih saya juga belum pernah. Mungkin perlu disesuaikan aksi apa aja yang akan dilakukan, siapa tahu memungkinkan untuk dibuat sebagai 1 file batch.

  12. mas,kalau pake CI script yg dirun di bat gmn susunannya ya?saya sudah tes tanpa pake CI memang sudah sukses,autoreply berjalan.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s