Artikel Blog Sms Gateway

Embed Size (px)

Citation preview

  • 8/19/2019 Artikel Blog Sms Gateway

    1/36

     

     .    d   i   a   s  -   x   2 .

       c   o .

       c   c 

    dias's collection 

    Artikel Blog SMSGATEWAYTrik SMS Gateway dengan Gammu dengan PHP & MySQL 

    DiasX2

    www.dias-x2.co.cc

  • 8/19/2019 Artikel Blog Sms Gateway

    2/36

    Artikel Blog SMS GATEWAY

      Setting Gammu untuk Aplikasi SMS Gateway 

      Teknik Dasar Mengirim SMS dengan Gammu

      Script Auto Reply SMS Gateway dengan PHP

     

    Membuat SMS Gateway Ucapan Ulang Tahun Otomatis dengan

    PHP + MySQL

     

    Setting Gammu Untuk Lebih Dari Satu HP/Modem

     

    Menjalankan Script PHP Untuk SMS Gateway Tanpa Autorefresh

    Dengan AJAX

     

    Teknik Mengirim Long Text SMS Gammu dengan Query SQL

     

    Cara Supaya Service SMS Daemon Gammu Berjalan Otomatis di

    Windows

      Cara Membuat Script PHP Untuk Cek Pulsa Dengan Gammu 

  • 8/19/2019 Artikel Blog Sms Gateway

    3/36

    Setting Gammu untuk Aplikasi SMS Gateway

    Dalam blog ini saya mencoba menulis artikel dalam ketegori baru yaitu tentang SMS

    Gateway. Soalnya agak jenuh juga nulis artikel yang itu-itu saja  Nggak ding… mudah-mudahan kejenuhan itu bersifat temporary saja.

    OK… untuk mengawali artikel tentang SMS Gateway ini saya akan membahas cara setting

    Gammu. Pernahkah Anda mendengar Gammu? Ya.. Gammu adalah semacam service yang

    disediakan untuk membangun aplikasi yang berbasis SMS Gateway. Setelah kita sukses

    membangun Gammu, maka kita bisa membangun aplikasi SMS Gateway dengan bahasa

     program atau platform apapun, baik itu web based dengan PHP maupun ASP atau apapun,

    dan juga desktop dengan menggunakan Delphi, VB atau lainnya.

    Kelebihan dari Gammu ini adalah merupakan software opensource yang tersedia dalam

     bentuk source code atau binary nya, so.. Anda tidak usah khawatir tentang lisensinya. Selain

    itu Gammu juga tersedia untuk OS WIndows maupun Linux.

    Terkait dengan masalah kemampuan, Gammu tidak perlu diragukan lagi karena selain bisa

    untuk mengirim/menerima SMS, Gammu juga dapat mengirim/menerima MMS,

     backup/restore phonebook, serta upload/download file ke HP. Selain itu Gammu juga support

    untuk lebih dari 400 jenis HP. Anda dapat melihat list HP yang dapat disupport oleh Gammu

    di Gammu Phone List Database.

    OK… sekarang akan kita bahas cara mensetting Gammu di platform Windows. Untuk yang

    di Linux silakan dibaca sendiri di situs resminya ya soalnya saya kurang menguasai Linux.

    Dalam artikel ini pembahasan akan sampai dengan cara instalasi service dan menjalankannya.

    Langkah Pertama (Download File) 

    Silakan mendownload Gammunya terlebih dahulu di

    http://www.4shared.com/file/248965295/700b07f9/gammu-install.html

    Keterangan: file tersebut sudah saya modifikasi dan disederhanakan untuk kemudahan

     proses instalasi. Gammu yang saya gunakan tersebut adalah versi 1.25.

    Langkah Kedua (Ekstrak File) 

    Silakan ekstrak file yang telah Anda download tadi di komputer Anda. File hasil ekstrak bisa

    Anda letakkan di C:\ atau D:\ atau dimanapun yang Anda inginkan. Dalam contoh ini,

    misalkan file diekstrak di C:\ sehingga akan didapatkan folder Gammu nya di C:\gammu.

    Langkah Ketiga (Setting Konfigurasi Gammu) 

  • 8/19/2019 Artikel Blog Sms Gateway

    4/36

    Setelah file Gammu diekstrak, langkah berikutnya adalah setting konfigurasi. Setting ini

    diperlukan guna keperluan penyesuaian jenis HP dan nomor port yang akan digunakan.

    Bagaimana cara settingnya? Caranya adalah silakan edit file „GAMMURC„ yang ada di

    dalam direktori „C:\gammu„. Editlah file GAMMURC tersebut menggunakan Notepad atau

    sejenisnya.

    Trus.. bagian mana yang perlu diubah konfigurasinya? OK.. bagian yang perlu diubah adalah

     pada

    [gammu]

    port =

    connection =

     parameter port itu nanti diisi dengan nomor port sesuai lokasi colokan HP Anda. Untuk

    mengetahui nomor port dimana Anda colokkan HP Anda di komputer, silakan masuk ke

    Control Panel –  Phone and Modem Options –  Modem. Nah… bila HP Anda sudah

    tercolok di PC dan drivernya sudah terinstal dengan baik maka pastinya pada bagian tersebut

    akan muncul nomor portnya.

    Ralat Penting !! 

    Pada saat artikel ini dibuat, untuk melihat nomor port di mana kita colokkan modem/hp, saya

    menuliskan caranya yaitu melalui Control Panel –  System –  Hardware –  Device Manager

     –  Ports (COM & LPT). Tolong jangan melihat portnya melalui cara tersebut, karena nomor port yang muncul tidak bisa digunakan untuk mengirim long SMS. Nomor port yang muncul

    dari cara tersebut hanya bisa untuk mengirim SMS dengan panjang tak lebih dari 160

    karakter saja.

    Tips: sebaiknya setiap kali HP Anda dicolokkan ke PC, gunakan lokasi port USB yang sama

    alias jangan pindah-pindah colokan, karena setiap ganti colokan maka nomor portnya akan

     berubah-ubah. Akibatnya Anda musti ubah setting GAMMURC nya berkali-kali pula karena

    harus menyesuaikan nomor portnya.

    Kembali pada konfigurasi GAMMURC di atas, parameter connection itu digunakan untuk

    memberi keterangan jenis koneksi yang digunakan HP untuk berkomunikasi dengan PCnya.

    Setiap jenis HP memiliki jenis koneksi yang berbeda-beda. Untuk mengetahui jenis koneksi

     pada jenis HP tertentu, silakan download file di sini. File tersebut adalah hasil kompilasi

    yang saya lakukan pada jenis-jenis HP yang mendukung SMS Gateway dengan Gammu.

    Berikut ini contoh konfigurasi GAMMURC bila saya menggunakan modem Wavecom

    M1206B yang terhubung ke port com5 USB.

  • 8/19/2019 Artikel Blog Sms Gateway

    5/36

    [gammu]

    port = com5:

    connection = at115200

    (Penting: jangan lupa tanda : di belakang port)

    Bila Anda gunakan lebih dari satu HP yang tercolok ke PC, maka Anda bisa menambah atau

    mengubah konfigurasinya pada bagian

    [gammu1]

    .

    .

    [gammu2]

    .

    .

    dst..

    Langkah Keempat (Uji Koneksi) 

    Langkah terakhir untuk proses setting GAMMU ini adalah melakukan uji koneksi antara

    Gammu dengan HP/modem Anda. Langkah ini dilakukan setelah proses setting konfigurasi

    dilakukan. Caranya adalah dengan masuk folder „C:\gammu„ pada direktori Gammu Anda

    via DOS PROMPT. Lalu ketikkan perintah ini pada command promptnya.

    gammu identify

    Apabila setelah perintah tersebut dienter lalu muncul informasi mengenai HP Anda, maka

    koneksi antara Gammu dengan HP Anda sukses. Bila responnya tidak seperti yang

    diharapkan, maka cek kembali nomor portnya atau jenis connectionnya. Berikut ini contoh

    tampilan yang keluar apabila proses setting berhasil dilakukan

    Langkah Kelima (Membuat Database MySQL untuk Gammu) 

    Langkah ini bertujuan untuk menyiapkan database MySQL untuk menampung data-data SMS

    yang diperlukan Gammu untuk SMS Gateway. Sebenarnya tidak hanya MySQL yang bisa

    digunakan, namun bisa juga SQL Lite atau Posgre SQL. Namun… dalam artikel ini hanya

    untuk MySQL saja deh, karena saya tidak familiar dengan yang lainnya.

  • 8/19/2019 Artikel Blog Sms Gateway

    6/36

    Caranya adalah buat database dengan nama „sms„ atau yang lain (terserah) menggunakan

     phpMyAdmin Anda.

    Lalu buatlah tabel-tabel yang diperlukan oleh Gammu. Waduh.. tabelnya apa aja ya? Don’t

    worry karena Gammu sudah menyiapkan file dumpnya untuk create tabel. Letak file

    dumpnya ada di folder „C:\gammu\tabel-gammu.sql„. Nah.. silakan gunakan file dump

    tersebut untuk membuat tabel-tabelnya menggunakan phpMyAdmin.

    Pada Gammu sebenarnya SMS tidak hanya bisa disimpan dalam database, namun juga bisa

    sebagai file teks yang disimpan di PC Anda. Namun untuk keperluan SMS gateway

    sepertinya lebih enak menggunakan database sebagai storagenya.

    Langkah Keenam (Setting Konfigurasi Untuk SMS Daemon) 

    Langkah ini dilakukan setelah setting database untuk Gammu. SMS daemon pada Gammudigunakan untuk proses pembacaan otomatis SMS yang diterima lalu disimpan ke database.

    SMS daemon juga diperlukan untuk keperluan pengiriman SMS.

    Untuk melakukan setting SMS daemon, bukalah file „SMSDRC„ yang terletak di direktori

    „C:\gammu„. Bukalah dengan Notepad atau sejenisnya. Bagian yang diubah adalah: 

     port = diisi nomor port sesuai yang ada di file GAMMURC

    connection = diisi jenis connection sesuai yang ada di GAMMURC

    service = mysql (diisi dengan „mysql‟ karena kita akan menggunakan mysql sebagai storage

    data SMSnya)user = diisi user database koneksi ke mysql Anda

     password = diisi password koneksi ke mysql Anda

     pc = diisi nama host mysql (biasanya localhost)

    database = sms (atau sesuai nama database yang tadi kita buat)

    Contoh konfigurasi yang ditulis

    port = com5:

    connection = at115200

    service = mysqluser = root

    password = passwordroot

    pc = localhost

    database = sms

    Catatan: hilangkan tanda # di depan parameter-parameter di atas bila ada.

    Langkah Ketujuh (Membuat Gammu Service) 

  • 8/19/2019 Artikel Blog Sms Gateway

    7/36

    Langkah ini bertujuan untuk membuat service Gammu di Windows. Dengan dibuatnya

    service di Windows ini kita bisa lebih mudah menjalankannya tanpa menggunakan perintah

    tertentu di command prompt.

    Untuk membuat Gammu service di Windows, ketikkan perintah ini di DOS PROMPT setelah

    Anda masuk ke folder „C:\gammu„. 

    gammu-smsd.exe -c smsdrc -i

     Nah.. bila ada konfirmasi bahwa proses pembuatan service sukses, maka Anda akan melihat

    service Gammu muncul pada daftar service yang berjalan di Windows. Service ini bisa dilihat

    melalui „CONTROL PANEL > Administrative Tools > Services‟. Nah.. untuk menjalankan

    service Gammu ini tinggal klik START pada service Gammu tersebut.

     Namun bila proses pembuatan service ini gagal, maka silakan cek kembali konfigurasi

    SMSDRC nya atau mungkin nama databasenya salah, atau bisa juga command yang

    dituliskan salah.

    OK demikian cara setting konfigurasi Gammu di Windows. Untuk artikel selanjutnya akan

    dibahas teknik dasar mengirim dan menerima SMS dengan Gammu. Teknik ini akan menjadi

    dasar SMS Gateway yang akan dibuat. So.. stay tune terus di blog ini ya

  • 8/19/2019 Artikel Blog Sms Gateway

    8/36

    Teknik Dasar Mengirim SMS dengan Gammu 

    Pada artikel sebelumnya, saya sudah paparkan bagaimana cara melakukan setting Gammu

    untuk SMS Gateway yang diintegrasikan dengan MySQL. Jika proses setting ini sudah beres,maka selanjutnya kita bisa bermain-main sepuasnya dengan Gammu.

    Dalam artikel ini saya akan paparkan bagaimana teknik dasar mengirim SMS dengan Gammu

     baik dalam bentuk short text maupun long text. Pada bagian akhir nanti kita akan coba

    membuat script sederhana dengan PHP untuk mengirim pesan SMS ini yang diintegrasikan

    dengan Gammu melalui sebuah form.

    OK.. pada dasarnya dengan Gammu kita bisa mengirim pesan SMS dalam 2 cara yaitu

    dengan menggunakan command inject yang sudah disediakan oleh Gammu, atau cara kedua

    kita menyisipkan record dengan menggunakan query SQL ke dalam tabel „outbox„. Bila

    Anda ingin mengirimkan pesan dengan cara yang kedua ini, terlebih dahulu Anda harus

    sudah memiliki database ‟sms‟ dan tabel-tabel yang diperlukan oleh Gammu sebagaimana

    sudah saya jelaskan cara instalasinya pada langkah ke-5 dari artikel sebelumnya.

    Untuk cara pertama yaitu dengan menggunakan command inject yang disediakan oleh

    Gammu, caranya adalah masuklah ke folder/direktori Gammu Anda melalui Command

    Prompt di mana terdapat file bernama „gammu-smsd-inject„, lalu ketikkan perintah berikut

    ini kemudian tekan ENTER.

    gammu-smsd-inject -c pathtoconfigfile TEXT notujuan -text "pesan"

    dengan parameter „pathtoconfigfile„ adalah path direktori file „SMSDRC‟ Gammu Anda. 

    Sebagai contoh misalkan akan dikirim pesan SMS ke no. tujuan +62811000001 dengan pesan

    “Hello World”, dan file SMSDRC nya terletak di C:\gammu, maka perintahnya

    gammu-smsd-inject -c c:\gammu\smsdrc TEXT +62811000001 -text "Hello World"

    Keterangan: tanda petik ganda pada command inject digunakan untuk mengapit string pesan

    yang akan dikirim.

    Perintah di atas akan mengirimkan pesan SMS dengan maksimum panjang karakternya

    adalah 160.

    Lantas, bagaimana jika untuk long text atau dengan panjang yang lebih dari itu? Caranya

    adalah dengan menggunakan pesan dalam format EMS.

    gammu-smsd-inject -c pathtoconfigfile EMS notujuan -text "pesan"

  • 8/19/2019 Artikel Blog Sms Gateway

    9/36

  • 8/19/2019 Artikel Blog Sms Gateway

    10/36

    Perintah exec() dalam PHP digunakan untuk menjalankan perintah command DOS dalam

    hal ini adalah perintah command inject nya Gammu.

    Karena command inject Gammu pada script di atas menggunakan format EMS maka

    memungkinkan kita mengirim SMS dengan jumlah karakter lebih dari 160 buah.

    Oya… sebelum Anda menjalankan script di atas, pastikan bahwa service Gammu nya telah

    Anda jalankan, dan HP Anda tercolok ke PC

    Sekarang… bagaimana bila pengiriman SMS dari script di atas menggunakan query

    INSERT? Ini dia scriptnya.

    send.php 

     

  • 8/19/2019 Artikel Blog Sms Gateway

    11/36

    Script Auto Reply SMS Gateway dengan PHP 

    Setelah sekian lama tidak update blog, kangen rasanya untuk berbagi kembali pada

     pengunjung setia blog ini. Dalam postingan kali ini saya akan berbagi ilmu tentang

     bagaimana cara membuat script auto reply SMS Gateway dengan PHP dan MySQL. Topikini sebenarnya sudah lama dinantikan oleh beberapa rekan namun baru sempat kali ini saya

    mewujudkannya. Maaf ya rekans… 

    OK deh… masih dengan menggunakan Gammu kita akan membuat contoh studi kasus yaitu

    tentang nilai mahasiswa. Adapun skenarionya adalah sbb: andaikan kita telah memiliki data

    nilai matakuliah Kalkulus mahasiswa. Nah… untuk melihat nilainya, si mahasiswa tinggal

    mengirim pesan melalui SMS dengan format „NILAINIM„ dan dikirim ke nomor HP

    tertentu. Selang beberapa waktu si mahasiswa tadi akan mendapat SMS balasan berisi nilai

    matakuliah Kalkulus yang diperolehnya secara otomatis. OK paham ya skenarionya?

    Sebelum kita bahas lebih lanjut mengenai pembuatan scriptnya, terlebih dahulu kita harus

    mengetahui ide pembuatan script auto reply SMS dengan Gammu ini.

    Tentu kita sudah ketahui bersama bahwa setiap kali SMS yang diterima oleh Gammu, maka

    SMS tersebut akan masuk ke dalam tabel „INBOX„ yang ada di database MySQL. Lantas..

    mungkin Anda bertanya, bagaimana cara membedakan mana SMS yang telah diproses dan

    yang belum diproses (baru saja masuk)? Jawabannya adalah terletak pada field yang bernama

    „Processed„. Begitu ada SMS masuk, maka secara default nilai pada field ini adalah „false„.

     Nah… Bila ditemukan record SMS yang bernilai „false‟ ini maka kita bisa proses denganmenggunakan script tertentu. Kemudian setelah data SMS tersebut diproses kita harus segera

    mengubah nilainya menjadi „true„ untuk membedakan mana SMS yang telah diproses

    dengan yang belum.

    Proses di atas ini harus dilakukan setiap saat. Anda dapat menggunakan script PHP atau

    script apapun untuk memproses data SMS yang masuk ke dalam INBOX ini. Bila Anda

    menggunakan script PHP, maka Anda perlu membuat script auto refresh yang secara

    otomatis berjalan pada selang interval waktu tertentu. Proses auto refresh ini bertujuan untuk

    mengecek ada tidaknya SMS baru yang masuk sekaligus memprosesnya.

    OK… now back to the case… pertama kita siapkan dahulu data nilai Kalkulus mahasiswa

     beserta tabelnya.

    CREATE TABLE `nilaikalkulus` ( 

    `nim` varchar(10), 

    `nilai` int(11), 

    PRIMARY KEY  (`nim`) 

    );

    INSERT INTO `nilaikalkulus`  VALUES ('M0197001', '80');

    INSERT INTO `nilaikalkulus`  VALUES ('M0197002', '79');

    INSERT INTO `nilaikalkulus`  VALUES ('M0197003', '86');

  • 8/19/2019 Artikel Blog Sms Gateway

    12/36

    Oya, untuk tabel di atas Anda bisa buat pada satu database yang sama dengan tabel-tabel

     bawaannya Gammu atau bisa juga berbeda.

    Selanjutnya, kita buat script PHP untuk pemrosesannya. Oya.. pastikan bahwa keyword dari

     perintah SMS yang dikirimkan adalah sesuai dengan format. Untuk memastikan bahwa

    keyword dari perintah itu benar, Anda harus membuat parsing terlebih dahulu. Jika format

     perintah benar maka SMS akan diproses untuk mengirimkan nilainya. Namun jika tidak

    sesuai, maka tetap diproses dengan mengirimkan pesan kesalahan dalam bentuk SMS pula.

    Hal terpenting… jangan lupa mengubah status ‘processed’ menjadi ‘true’ pada setiap

    SMS yang telah diproses di dalam tabel INBOX nya.

     Nah.. ini dia scriptnya untuk membuat auto reply, lengkap saya sertakan penjelasannya dalam

     bentuk komentar.

     

  • 8/19/2019 Artikel Blog Sms Gateway

    13/36

      if (mysql_num_rows($hasil2) == 0) $reply = "NIM tidak ditemukan"; 

    else 

    // bila nilai ditemukan 

    $data2 = mysql_fetch_array($hasil2); 

    $nilai = $data2['nilai']; 

    $reply = "Nilai Kalkulus Anda: ".$nilai; 

    else $reply = "Maaf perintah salah"; 

    // membuat SMS balasan 

    $query3 = "INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES

    ('$noPengirim ', '$reply')"; 

    $hasil3 = mysql_query($query3); 

    // ubah nilai 'processed' menjadi 'true' untuk setiap SMS yang telahdiproses 

    $query3 = "UPDATE inbox SET Processed = 'true' WHERE ID = '$id '"; 

    $hasil3 = mysql_query($query3); 

    ?>  

    Oya… mungkin Anda bertanya, mengapa untuk proses parsing di atas pesan SMS nya perlu

    dibuat huruf kapital dengan strtoupper(). Ya… hal ini perlu karena supaya ada keseragaman

     bentuk pesan. Karena terkadang SMS dikirim dengan huruf kapital semua, kecil semua atau

    campuran. Bila tidak seragam, maka sulit dalam proses memparsingnya, karena string

    „NILAI‟ dengan „nilai‟ itu berbeda sehingga bila ditulis huruf kecil semua nantinya bisa

    dianggap perintah salah. Nah.. supaya seragam, maka setiap SMS yang masuk kita buat

    kapital semua saja.

    Keterangan:

    Cara pengiriman pesan balasan pada script di atas, saya menggunakan teknik insert data pada

    tabel OUTBOX dengan query SQL. Anda dapat mempelajari kembali teknik ini serta

    menggunakan teknik lain dengan membaca artikel saya tentang „Teknik Dasar Mengirim

    SMS dengan Gammu„.

    Selanjutnya supaya script di atas berjalan secara otomatis mengecek SMS yang masuk, Anda

    harus buat auto refresh dalam selang beberapa detik.

    sms.php 

  • 8/19/2019 Artikel Blog Sms Gateway

    14/36

     

    SMS server running....

     

  • 8/19/2019 Artikel Blog Sms Gateway

    15/36

     

    $query3 = "INSERT INTO outbox(DestinationNumber, TextDecoded) VALUES

    ('$noPengirim ', '$reply')"; 

    $hasil3 = mysql_query($query3); 

    // ubah nilai 'processed' menjadi 'true' untuk setiap SMS yang telah

    diproses 

    $query3 = "UPDATE inbox SET Processed = 'true' WHERE ID = '$id '"; 

    $hasil3 = mysql_query($query3); 

    ?>  

    Sebenarnya untuk memproses SMS dan memberikan auto reply, selain dengan auto script

    menggunakan auto refresh seperti di atas, Anda dapat pula menggunakan TRIGGER  di

    MySQL nya. Namun.. bagi yang belum terbiasa membuatnya seperti saya, mungkin agak

    repot, apalagi bila panjang text auto reply nya di atas 160 karakter.

    OK deh.. selamat mencobanya, dan silakan berkreasi sendiri ya… Anda dapat menambahkan

    keyword lain atau format SMS lain yang lebih dari satu.

  • 8/19/2019 Artikel Blog Sms Gateway

    16/36

    Membuat SMS Gateway Ucapan Ulang Tahun Otomatis

    dengan PHP + MySQL 

    Seperti yang pernah saya janjikan dahulu, saya akan mencoba memposting artikel tentangaplikasi SMS gateway untuk membuat SMS ucapan ulang tahun secara otomatis dalam blog

    ini.

    Jika Anda punya banyak teman dan Anda memiliki data tanggal lahir semua teman Anda,

    maka mudah-mudahan script yang dibahas dalam artikel ini akan bermanfaat. Oleh teman

    Anda, Anda akan dianggap sebagai teman yang sangat perhatian, karena setiap kali sang

    teman berulang tahun maka SMS ucapan ultah selalu terkirim ke dia tepat waktu tanpa

    meleset 1 hari pun, 1 jam bahkan 1 menit pun (kalo waktu di komputer Anda sama dengan

    waktu di rumah teman Anda … he 3x). Tapi jangan bilang ke temen Anda, bhw yangmengirim SMS ucapan ultah adalah program komputer ya

    OK, untuk membuat SMS ucapan ulang tahun otomatis ini kita memerlukan Gammu sebagai

    SMS daemonnya, HP tentu saja dan sebuah komputer yang senantiasa ON terus. Mengapa

    haris ON terus komputernya? ya.. kalo pas ada temen Anda yang ulang tahun namun

    kebetulan komputer Anda lagi mati, ya… SMS nya gak bisa terkirim. It makes sense, doesn’t

    it ? Oya, satu lagi Anda perlu XAMPP atau AppServ untuk menjalankan programnya,

    karena kita akan membuatnya menggunakan PHP + MySQL. Untuk mengetahui cara

    instalasi Gammu dan bagaimana cara mengintegrasikannya dengan MySQL silakan baca

    artikel cara setting Gammu.

    Trus… untuk tabel datanya, apa saja yang dibutuhkan?

    Untuk keperluan ini, kita buat 2 buah tabel. Tabel pertama untuk menyimpan data teman

    Anda. Data apa saja yang disimpan? cukup nama, nomor HP dan tanggal lahirnya saja. Tabel

    ini kita namai „friends‟. Kemudian tabel kedua untuk menyimpan data SMS ucapan ultah

    yang telah terkirim ke teman Anda. Tabel ini kita namai „kirim‟. Untuk tabel „kirim‟ cukup

    memiliki field nomor HP dan tanggal kirim SMS saja. Tabel ini berfungsi sebagai pencegah

     pengiriman SMS ucapan secara berulang, karena script yang kita buat ini nanti menggunakan

    Auto Refresh atau dengan kata lain script ini berjalan secara otomatis pada selang waktu

    tertentu. Tanpa adanya tabel kedua ini, maka proses pengiriman SMS ucapan ultah bisa

    dilakukan beberapa kali. Oleh karena itu untuk tabel kedua ini, field nomor HP dan tanggal

    kirim SMS kita buat sebagai primary key.

     Nah.. untuk kedua tabel di atas, berikut ini struktur tabel dan contoh datanya

    CREATE TABLE `friends` ( 

    `noHP` varchar(30), 

    `nama` varchar(100), 

    `tglLahir` date, 

    PRIMARY KEY  (`noHP`) 

  • 8/19/2019 Artikel Blog Sms Gateway

    17/36

    );

    CREATE TABLE `kirim` ( 

    `noHP` varchar(30), 

    `tglKirim` date, 

    PRIMARY KEY  (`noHP`,`tglKirim`) 

    );

    INSERT INTO `friends`  VALUES ('08881111111', 'A', '1979-02-21');

    INSERT INTO `friends`  VALUES ('08120101010', 'B', '1980-09-07');

    INSERT INTO `friends`  VALUES ('08562810000', 'C', '1986-03-10');

    Kedua tabel di atas nantinya dibuat di dalam database yang sama dengan tabel-tabel bawaan

    dari Gammu, seperti tabel INBOX, OUTBOX, SENTITEMS dsb… 

    Kemudian bagaimana ide dari script SMS ucapan ulang tahun ini. Idenya adalah pertama kali

    kita cari dulu data teman yang ada di tabel „friends‟ yang tanggal lahir dan bulan lahirnya

    sama dengan saat ini (current date). Untuk tahun lahirnya tidak usah diperhatikan saja.

    Kemudian bila ada data teman yang tanggal dan bulan lahirnya sesuai dengan current date,

    kita baca nomor HP dan namanya. Proses selanjutnya adalah jangan langsung mengirim SMS

    ucapannya, namun kita simpan data nomor HP dan current date nya ke tabel „kirim‟. Jika

     proses insert atau simpan data ke tabel „kirim‟ ini berhasil barulah kita kirim SMS ucapannya

    ke tabel „OUTBOX‟ yang sudah disediakan oleh Gammu. Namun jika gagal, berarti SMS

    ucapan sebelumnya sudah pernah terkirim. Proses insert data ke tabel „kirim‟ ini gagal jika

    terdapat data nomor HP dan tanggal kirim yang sama, mengingat kedua field tersebut adalah

     primary key. Dengan demikian pasti ada jaminan bahwa SMS ucapan yang terkirim ke teman

    Anda tidak dilakukan berulang kali pada hari yang sama. Lantas bagaimana bila ulang

    tahunnya pada tahun depan? ya tidak ada masalah, kan current date nya sudah berbeda?sehingga proses insert data ke tabel „kirim‟ pasti berhasil pada tahun depan.

    Berdasarkan ide di atas, berikut ini implementasi script PHP nya:

    SMS Ulang Tahun

  • 8/19/2019 Artikel Blog Sms Gateway

    18/36

    // baca bulan sekarang  

    $blnNow = date("m"); 

    // baca tahun-bulan-tanggal sekarang  

    $now = date("Y-m-d"); 

    // cari data teman yang bulan lahir dan tanggal lahir sesuai pada current

    date 

    $query = "SELECT * FROM friends WHERE DAY(tglLahir) = '$tglNow' AND

    MONTH(tglLahir) = '$blnNow'"; 

    $hasil = mysql_query($query); 

    while ($data = mysql_fetch_array($hasil)) 

    // baca nomor HP dan nama teman 

    $noHP = $data['noHP']; 

    $nama = $data['nama']; 

    // insert data ke tabel kirim $query2 = "INSERT INTO kirim (noHP, tglKirim) VALUES ('$noHP', '$now')"; 

    $hasil2 = mysql_query($query2); 

    // jika proses insert ke tabel kirim sukses maka kirim sms ucapan 

    if ($hasil2) 

    // isi pesan SMS ucapan ultah, disertai nama temannya 

    $pesanSMS = "Wahai sahabatku ".$nama.", Happy Birthday !! Semoga

    dengan bertambahnya usiamu, semakin bertambah pula amalan ibadahmu."; 

    // proses kirim sms via insert data ke tabel outbox  $query2 = "INSERT INTO outbox (DestinationNumber, TextDecoded) VALUES

    ('$noHP', '$pesanSMS')"; 

    mysql_query($query2); 

    ?>  

    Script di atas akan melakukan autorefresh setiap 10 detik. Perhatikan perintah di bawah ini

  • 8/19/2019 Artikel Blog Sms Gateway

    19/36

    Menjalankan Script PHP Untuk SMS Gateway Tanpa

    Autorefresh Dengan AJAX 

    Sebenarnya sudah lama niat saya untuk artikel ini, tapi maaf baru kesampaian sekarang.

    Sepertinya para fans blog ini sudah gak sabar Artikel ini didasarkan pada hasil eksperimen

     pribadi yang awalnya hanya bersifat iseng-iseng saja. Dari judul artikel di atas, tentu Anda

    sudah bisa memperkirakan apa isi artikel ini yaitu cara alternatif menjalankan script PHP

    untuk memproses SMS gateway tanpa autorefresh browser. Dalam hal ini pembahasan hanya

    dibatasi untuk SMS Gateway dengan Gammu.

    Pada artikel-artikel sebelumnya, seringkali saya membuat contoh-contoh script PHP untuk

    memproses SMS yang masuk ke database menggunakan konsep autorefresh setiap n detik

    atau menjalankan script berulang-ulang secara otomatis setiap n detik. Namun konsep initerkadang kurang cocok untuk browser yang menolak autorefresh. Beberapa rekan-rekan

    mengeluh karena browsernya tidak bisa melakukan autorefresh yang kemungkinan

    disebabkan settingan di browsernya. Dengan autorefresh yang sering tersebut, terkadang

     browser menganggap adanya suatu program abnormal.

    Dari hal di atas, maka saya menggunakan pendekatan lain untuk menjalankan script PHP

     pengolah SMS gateway tersebut bukan lagi menggunakan autorefresh namun menjalankan

    script PHP nya di balik layar (browser) menggunakan AJAX (Asynchronous Javascript And

    XML).

    Pada prinsipnya, penggunaan AJAX untuk menjalankan script PHP pengolah SMS gateway

    ini hampir sama dengan autorefresh, namun perbedaannya hanyalah autorefreshnya dilakukan

    di balik layar browser. Untuk proses autorefreshnya sendiri nanti menggunakan Javascript

    dan bukannya meload script ke browser seperti sebelumnya.

    Lantas.. bagaimana implementasinya? OK, andaikan kita memiliki script PHP bernama

    “script.php” untuk mengolah SMS gatewaynya, dan juga halaman “index.htm” untuk

    halaman utama tampilan. Maka isi struktur dari halaman index.htm adalah sbb:

    index.htm 

    SMS Server

    SMS SERVER

    .

    .

  • 8/19/2019 Artikel Blog Sms Gateway

    20/36

    Keterangan:

      File „ajax.js‟ merupakan file berisi script Javascript untuk menjalankan AJAX 

     

    Sedangkan function „autorefresh()‟ adalah function untuk menjalankan autorefresh

     pada ‟script.php‟. Function ini nantinya diletakkan dalam ajax.js. 

    Selanjutnya, bagaimana isi script ajax.js nya? OK ini dia isinya

    ajax.js 

    var page = "script.php"; 

    function autorefresh(page) { 

    if (window.XMLHttpRequest) { req = new XMLHttpRequest(); 

    req.open("GET", page, true); 

    req.send(null); 

    } else if (window.ActiveXObject) { 

    req = new ActiveXObject("Microsoft.XMLDOM"); 

    if (req) { 

    req.open("GET", page, true); 

    req.send(null); 

    setTimeout("autorefresh(page)", 5000); 

    Javascript di atas akan melakukan autorefresh menggunakan AJAX pada setiap interval 5

    detik (5000 milisekon). Anda bisa mengatur sendiri lama intervalnya pada bagian

    setTimeout("autorefresh(page)", 5000); 

    OK… that‟s all. Nah… Script mana yang nantinya dijalankan di browser? yang dijalankan

    cukup file index.htm saja. Untuk script.php nya tidak perlu dijalankan karena yang

    menjalankan adalah script AJAX nya.

    Sekarang saya akan mengambil contoh implementasi pendekatan di atas pada kasus SMS

    Ulang Tahun yang pernah dibahas.

    Misalkan kita punya script PHP untuk memproses SMSnya sbb:

    ultah.php 

     

  • 8/19/2019 Artikel Blog Sms Gateway

    21/36

    mysql_select_db("dbname"); 

    // baca tanggal sekarang  

    $tglNow = date("d"); 

    // baca bulan sekarang  

    $blnNow = date("m"); 

    // baca tahun-bulan-tanggal sekarang  

    $now = date("Y-m-d"); 

    // cari data teman yang bulan lahir dan tanggal lahir sesuai pada current

    date 

    $query = "SELECT * FROM friends WHERE DAY(tglLahir) = '$tglNow' AND

    MONTH(tglLahir) = '$blnNow'"; 

    $hasil = mysql_query($query); 

    while ($data = mysql_fetch_array($hasil)) 

    { // baca nomor HP dan nama teman 

    $noHP = $data['noHP']; 

    $nama = $data['nama']; 

    // insert data ke tabel kirim 

    $query2 = "INSERT INTO kirim (noHP, tglKirim) VALUES ('$noHP', '$now')"; 

    $hasil2 = mysql_query($query2); 

    // jika proses insert ke tabel kirim sukses maka kirim sms ucapan 

    if ($hasil2) 

    { // isi pesan SMS ucapan ultah, disertai nama temannya 

    $pesanSMS = "Wahai sahabatku ".$nama.", Happy Birthday !! Semoga

    dengan bertambahnya usiamu, semakin bertambah pula amalan ibadahmu."; 

    // proses kirim sms via insert data ke tabel outbox  

    $query2 = "INSERT INTO outbox (DestinationNumber, TextDecoded) VALUES

    ('$noHP', '$pesanSMS')"; 

    mysql_query($query2); 

    ?>  

    Berikutnya kita buat javascript „ajax.js‟ untuk AJAX nya sbb: 

    ajax.js 

    // setting file tujuan autorefresh via AJAX  

    var page = "ultah.php"; 

    function autorefresh(page) { 

    if (window.XMLHttpRequest) { 

    req = new XMLHttpRequest(); 

    req.open("GET", page, true); 

  • 8/19/2019 Artikel Blog Sms Gateway

    22/36

      req.send(null); 

    } else if (window.ActiveXObject) { 

    req = new ActiveXObject("Microsoft.XMLDOM"); 

    if (req) { 

    req.open("GET", page, true); 

    req.send(null); 

    setTimeout("autorefresh(page)", 5000); 

    Sedangkan isi dari file index.htm nya adalah

    index.htm 

    SMS Server

    SMS SERVER ULANG TAHUN

    OK begitulah contoh implementasi pendekatan AJAX untuk mengolah data SMS dengan

    script PHP. Mudah-mudahan artikel ini bermanfaat.

  • 8/19/2019 Artikel Blog Sms Gateway

    23/36

    Setting Gammu Untuk Lebih Dari Satu HP/Modem 

    Dalam artikel yang lain, saya telah memaparkan cara setting Gammu. Namun pembahasan

    tersebut hanya pada cara setting untuk 1 buah HP/modem saja. Lantas bagaimana bilaHP/modem yang ingin dipasang lebih dari satu? Trus… misalkan ada 2 HP/modem misalkan

    A dan B, gimana cara mengirim SMS dengan Gammu melalui HP/modem A atau B?

    Temukan jawabannya di artikel ini.

    Bila Anda masih bingung dengan penjelasannya, sebaiknya baca dulu artikel sebelumnya 

    yang membahas setting gammu untuk sebuah HP/modem.

    OK kita mulai pembahasannya ya. Kita mulai bahas dulu cara setting Gammu untuk lebih

    dari satu HP/modem dahulu. Di sini saya andaikan akan memasang 2 buah HP/modem.

    Untuk HP/modem sejumlah 3, 4 atau lebih caranya sama persis.

    Berikut ini adalah cara setting Gammu untuk 2 buah HP/modem atau lebih:

    Langkah 1. 

    Silakan colokkan HP/modem yang Anda ingin instal di Gammu ke sembarang port komputer

    (lihat gambar di bawah)

    Keterangan:

    Pada gambar di atas, saya ingin menginstal 2 buah HP di notebook  Sony Ericcsson W200i

    kesayangan saya yang kini mau saya jual hiks…

    Oya… Pastikan 2 buah HP/modem tersebut sudah dikenali oleh komputernya. Gimana

    caranya? ya.. tentu saja harus menginstal drivernya dulu. Untuk mengecek apakah sudah

    dikenali atau belum, Anda bisa lihat di Control Panel –  Phone and Modems Option –  

    Modem.

    http://blog.rosihanari.net/dijual-sony-ericcson-w200i-gammu-sms-gateway-supporthttp://blog.rosihanari.net/dijual-sony-ericcson-w200i-gammu-sms-gateway-supporthttp://blog.rosihanari.net/dijual-sony-ericcson-w200i-gammu-sms-gateway-support

  • 8/19/2019 Artikel Blog Sms Gateway

    24/36

    Ralat Penting!! 

    Pada saat artikel ini dibuat, untuk melihat nomor port di mana kita colokkan modem/hp kita,

    saya menyarankan melalui Control Panel –  System –  Hardware –  Device Manager, dan

    lihat bagian Ports (COM & LPT). Tolong jangan melihat portnya melalui cara tersebut,

    karena nomor port yang muncul tidak bisa digunakan untuk mengirim long SMS. Nomor port

    yang muncul dari cara tersebut hanya bisa untuk mengirim SMS dengan panjang tak lebih

    dari 160 karakter saja.

    Langkah 2. 

    Setelah kedua HP dikenali oleh komputer, sekaligus nomor portnya sudah diketahui yaitu

    misalnya COM8 dan COM17, selanjutnya adalah mengedit file GAMMURC nya yang ada di

    direktori Gammu Anda. Karena ada 2 buah HP/modem, maka kita edit konfigurasinya pada

     bagian [gammu] dan [gammu1]. Settinglah parameter port dan connection pada keduanya.Berikut ini contoh konfigurasi GAMMURC dari kasus di atas.

    [gammu]

    port = com8:

    connection = at115200

    .

    .

    [gammu1]

    port = com17:

    connection = at115200.

    .

    Bila Anda ingin menambahkan HP/modem ke tiga, maka cukup Anda tambahkan sendiri

    konfigurasi untuk

    [gammu2]

    port = com17:

    connection = at115200

    .

    .

     begitu seterusnya… 

    Langkah 3. 

    Setelah file GAMMURC diedit menyesuaikan jenis HP/modem dan port nya, langkah

     berikutnya adalah mengecek apakah kedua HP/modem sudah dapat dideteksi oleh

    Gammunya. Untuk melakukan hal ini adalah dengan mengetikkan perintah berikut ini pada

    direktori Gammu Anda melalui command prompt:

    gammu 0 identify

  • 8/19/2019 Artikel Blog Sms Gateway

    25/36

    Keterangan: perintah di atas untuk mengecek apakah Gammu sudah dapat mengenali

    HP/modem yang tercolok ke port COM8.

    dan perintah

    gammu 1 identify

    Keterangan: perintah di atas untuk mengecek apakah Gammu sudah dapat mengenali

    HP/modem yang tercolok ke port COM17.

    Untuk mengecek HP/modem ke tiga, perintah yang Anda gunakan adalah

    gammu 2 identify

     begitu seterusnya.

    Dalam contoh ini, apabila kedua HP sudah dikenali oleh Gammu maka hasil dari kedua

     perintah di atas akan tampak informasi tentang HP/modem Anda sebagaimana gambar di

     bawah ini.

    Langkah 4. 

    Setelah GAMMURC dimodifikasi, langkah berikutnya adalah mengedit di file SMSDRC nyayang ada di direktori Gammu Anda. Karena Anda menggunakan lebih dari satu HP/modem,

    maka file SMSDRC nya juga dibuat lebih dari satu sejumlah HP/modem Anda. Trus.. nama

    filenya apa donk? Anda bisa beri nama filenya terserah, misalnya: SMSDRC1, SMSDRC2,

    dst… dengan cara merename nama file aslinya.  

    Berikut ini contoh isi konfigurasi untuk file SMSDRC1 yang nantinya akan kita kaitkan

    dengan HP/modem yang tercolok di port COM8. Ubahlah pada bagian parameter tertentu

    saja seperti pada contoh ini bila Anda ingin Gammunya diintegrasikan dengan MySQL.

    [gammu]port = com8:

  • 8/19/2019 Artikel Blog Sms Gateway

    26/36

    connection = at115200

    .

    .

    service = mysql

    .

    .

    phoneid = Phone1

    .

    .

    user = dbuser

    password = dbpass

    pc = localhost

    database = dbname

    Keterangan:

    Perhatikan konfigurasi di atas! Di situ terdapat parameter „phoneid‟. Phoneid ini pentingkarena nantinya digunakan untuk penanda ketika kita menerima atau mengirim sms.

    Misalkan kita ingin mengirim sms via HP yang tercolok di port COM8, maka kita gunakan

     phoneid tersebut ketika proses mengirimnya. Dalam contoh ini, HP/modem yang tercolok di

    COM8 ini dinamai „Phone1′. Hilangkan tanda # di depan parameter phoneid bila ada. 

    dan berikut contoh isi konfigurasi file SMSDRC2 yang nantinya kita kaitkan dengan

    HP/modem yang tercolok di port COM17.

    [gammu]

    port = com17:connection = at115200

    .

    .

    service = mysql

    .

    .

    phoneid = Phone2

    .

    .

    user = dbuser

    password = dbpass

    pc = localhost

    database = dbname

    Keterangan:

    Dalam contoh ini, HP/modem yang tercolok di port COM17 dinamai „Phone2′ pada phoneid

    nya.

    Langkah 5. 

    Setelah file SMSDRC kita buat sejumlah HP/modem nya, langkah berikutnya adalah

    menginstal servicenya. Karena jumlah HP/modem yang digunakan lebih dari satu, maka kita

  • 8/19/2019 Artikel Blog Sms Gateway

    27/36

     buat servicenya juga lebih dari satu. Berikut ini perintah untuk membuat servicenya melalui

    command prompt di dalam direktori Gammu.

    gammu-smsd.exe -c namafilesmsdrc -n namaservice -i

    Keterangan:

    „namafilesmsdrc‟ nanti diganti dengan nama file SMSDRC yang telah kita buat sebelumnya,

    dan „namaservice‟ kita ganti dengan nama service yang kita inginkan. 

    Berikut ini perintah untuk menginstal service untuk HP/modem yang tercolok ke port COM8

    yang menggunakan file SMSDRC1 sebagai konfigurasinya, dan servicenya kita beri nama

    (gammu1). Untuk nama servicenya kita bisa tentukan sembarang (terserah), asal untuk nama

    service yang satu dengan yang lain berbeda.

    gammu-smsd.exe -c smsdrc1 -n gammu1 -i

    dan berikut ini perintah untuk menginstal service untuk HP/modem yang tercolok ke port

    COM17 yang menggunakan file SMSDRC2 sebagai konfigurasinya, dan servicenya kita beri

    nama (gammu2).

    gammu-smsd.exe -c smsdrc2 -n gammu2 -i

    Cara yang sama juga dilakukan untuk 3 buah HP/modem atau lebih.

    Apabila kedua service telah sukses dibuat, maka di bagian CONTROL PANEL  –  

    ADMINISTRATIVE TOOLS –  SERVICES akan muncul kedua service yang telah dibuat,

    sebagaimana tampak pada gambar di bawah ini

    Untuk menjalankan servicenya, tinggal double klik saja pada kedua service tersebut.

    OK proses setting/instalasi Gammu dengan lebih dari satu HP/modem sudah selesai.

    Sekarang kita telusuri di tabel MySQL nya. Kita akan lihat pengaruh dari instalasi lebih dari

    satu HP/modem ini.

  • 8/19/2019 Artikel Blog Sms Gateway

    28/36

    Kita telusuri dulu data SMS yang masuk ke tabel INBOX apabila ada sms yang diterima dari

    salah satu HP/modem yang sudah terinstal di Gammunya. Apabila ada SMS yang masuk

    melalui salah satu HP/modem yang sudah terinstal di Gammu, maka pada bagian field

    „RecipientID‟ akan muncul nama phoneid sesuai yang sudah kita setting di SMSDRC nya

    tadi. Perhatikan gambar berikut ini yang menunjukkan isi tabel INBOX setelah beberapaSMS masuk melalui HP/modem yang terinstal di Gammu,

    Jika field „RecipientID‟ nya muncul „Phone1′ berarti SMS tersebut diterima oleh HP/modem

    yang tercolok di port COM8. Demikian pula bila yang diterima oleh HP/modem yang

    tercolok di COM17, yang akan menampilkan „Phone2′ pada field RecipientID nya. 

    Selanjutnya bagaimana bila kita ingin mengirim SMS dengan Gammu melalui HP/modem

    tertentu yang sudah terinstal? Caranya mudah sekali kawan, yaitu tinggal kita tentukan saja

    nama phoneid nya, lalu phoneid ini kita masukkan ke field „SenderID‟, contoh: 

    INSERT INTO outbox (DestinationNumber, TextDecoded, SenderID) 

     VALUES ('085728434754', 'Test', 'Phone1') 

    Contoh di atas adalah perintah SQl untuk mengirim SMS ke no 085728434754 (no HP saya

    he3x ) melalui HP/modem yang tercolok ke port COM8.

     Nah… mudah bukan settingnya? selamat mencoba ya… 

  • 8/19/2019 Artikel Blog Sms Gateway

    29/36

    Teknik Mengirim Long Text SMS Gammu dengan Query

    SQL 

    Pada artikel yang lalu, saya pernah menulis topik Teknik Dasar Mengirim SMS denganGammu. Dalam artikel tersebut salah satunya adalah pembahasan tentang teknik mengirim

    SMS dengan panjang karakter lebih dari 160 karakter (long text SMS ) yaitu dengan command

    “gammu-smsd-inject”. Nah.. pada artikel kali ini saya akan menjelaskan cara mengirim long

    text SMS Gammu menggunakan query SQL.

    Kelemahan mengirim long text SMS dengan command “gammu-smsd-inject” adalah

    lambatnya proses bila diintegrasikan dengan script PHP. Dari hasil eksperiman sendiri,

    ceilee… , untuk mengirim long text SMS ke lebih dari 500 nomor dengan menggunakan

    command “gammu-smsd-inject” yang diintegrasikan dengan script PHP butuh waktu lebihdari 30 detik. Bisa dibayangkan bila digunakan untuk mengirim ke ribuan nomor sekaligus.

    Tentu running timenya lebih lama. Sedangkan kelebihan mengirim long text SMS dengan

    query SQL adalah running time yang jauh lebih cepat dibandingkan command “gammu-

    smsd-inject”. Namun.. di sisi lain, kekurangannya adalah agak rumitnya membuat script

    untuk melakukan hal ini. Sedangkan kelebihan dari command “gammu-smsd-inject” adalah

     perintahnya jauh lebih mudah dibandingkan via script query SQL. Akan tetapi mengingat

    kelebihannya yang lebih efisien, saya kira kesulitan untuk membuat script pengiriman long

    text SMS dengan query tak perlu dipermasalahkan, toh… saya akan beberkan caranya di sini

    So.. gimana teknik pengiriman long text SMS Gammu dengan query SQL? OK tekniknya

    adalah kita harus split atau memecah-mecah dahulu text SMS yang akan kita kirimkan. Untuk

    setiap pecahan terdiri dari text yang panjangnya 153 karakter. Jadi misal kita punya text SMS

    dengan panjang 400 karakter, maka sebelum dikirim dengan Gammu, kita harus split textnya

    menjadi 3 bagian, yaitu pecahan pertama terdiri dari 153 karakter, pecahan kedua 153

    karakter dan pecahan ketiga 94 karakter.

    Mungkin Anda bertanya, gimana caranya memecah-mecah text atau string dengan panjang

    153 karakter tsb? Lho… kan sudah pernah saya bahas caranya di artikel Teknik MemecahString Menjadi Substring Dengan Jumlah Karakter Sama.

    Setelah kita pecah text SMS asli ke dalam n pecahan dengan panjang maks 153 karakter,

    selanjutnya pecahan bagian pertama kita masukkan ke dalam tabel OUTBOX, sedangkan

     pecahan yang lain dimasukkan ke tabel OUTBOX_MULTIPART

    Adapun query untuk memasukkan text pecahan pertama ke tabel OUTBOX adalah sbb:

    INSERT INTO outbox (DestinationNumber, UDH, TextDecoded, MultiPart) 

     VALUES ('NO TELP TUJUAN', 'KODE UDH', 'ISI TEXT PECAHAN KE-1', 'true') 

  • 8/19/2019 Artikel Blog Sms Gateway

    30/36

    Perhatikan, bahwa khusus untuk long text SMS, kita set nilai „true‟ pada field „MultiPart‟,

    dan ada pula kode UDH. Wah apaan tuh UDH? Nanti saya akan jelaskan.

    Selanjutnya perintah query untuk memasukkan text pecahan ke tabel

    OUTBOX_MULTIPART adalah sbb:

    INSERT INTO outbox_multipart(UDH, TextDecoded, ID, SequencePosition) 

     VALUES ('KODE UDH', 'ISI TEXT PECAHAN', 'NO ID', 'NO URUT PESAN') 

    Keterangan:

      NO ID adalah nomor id dari pesan pecahan pertama yang telah disimpan ke tabel

    OUTBOX. Misal pecahan pertama setelah dimasukkan ke tabel OUTBOX memiliki

    ID = 100, maka dalam query SQL untuk memasukkan pecahan text ke tabel

    OUTBOX_MULTIPART juga harus menggunakan NO ID = 100.

      NO URUT PESAN adalah nomor urutan pesan dari pesan utuhnya.

    UDH adalah kode header untuk menunjukkan urutan pecahan text SMS. Kode UDH ini

    terdiri dari 12 digit yang memiliki format sbb:

    AAAAAAAA XX YY dimana AAAAAAAA itu adalah kode random dalam format hexadesimal, XX 

    itu menunjukkan jumlah pecahan SMS, dan YY menunjukkan nomor urutan pecahan.

    Salah satu kode random hexadesimal yang bisa digunakan adalah „050003A7„, atau Anda

     juga bisa memilih sendiri kode random yang lain.

    Contoh UDH untuk sebuah pesan adalah sbb:

    050003A7 10 02.

    Pada kode di atas, nilai 10 menunjukkan bahwa pesan tersebut total terdiri dari 10 pecahan

    SMS, dan UDH tersebut adalah milik pesan ke 2 (perhatikan nilai „02′). 

    Sebagai gambaran misalkan kita punya teks SMS asli sbb:

     Perkenalkan Nama Saya Rosihan Ari Yuana. Saya Memiliki Tiga Anak, Dua Diantaranya

     Laki-Laki Dan Satu Orang Perempuan. Saya Juga Punya Seorang Istri Yang Saya Cintai.

     Rumah Saya Di Colomadu Karanganyar. Saya Lahir Di Boyolali Tiga Puluh Tahun Yang

     Lalu. Sekarang Saya Mengajar Di Salah Satu Perguruan Tinggi Di Kota Solo, Yaitu

    Universitas Sebelas Maret. 

    Panjang karakter text SMS di atas adalah 353 buah.

    Karena pesan tersebut panjangnya lebih dari 160 karakter, maka langkah pertama kita harus

    split dahulu menjadi beberapa pecahan string dengan panjang maks 153 untuk setiap

     pecahannya. Berikut ini hasil pecahannya

  • 8/19/2019 Artikel Blog Sms Gateway

    31/36

    Pecahan ke-1 : Perkenalkan Nama Saya Rosihan Ari Yuana. Saya Memiliki Tiga Anak, Dua

    Diantaranya Laki-Laki Dan Satu Orang Perempuan. Saya Juga Punya Seorang Istri Yang

    Pecahan ke-2 : Saya Cintai. Rumah Saya Di Colomadu Karanganyar. Saya Lahir Di Boyolali

    Tiga Puluh Tahun Yang Lalu. Sekarang Saya Mengajar Di Salah Satu Perguruan Tinggi

    Pecahan ke-3 : Di Kota Solo, Yaitu Universitas Sebelas Maret.

    Panjang pecahan ke-1 dan ke-2 adalah 153 karakter, dan pecahan ke-3 panjangnya 47

    karakter.

    Setelah dipecah, selanjutnya kita simpan pecahan ke-1 ke tabel OUTBOX

    INSERT INTO outbox (DestinationNumber, UDH, TextDecoded, MultiPart) 

     VALUES ('NO TELP TUJUAN', '050003A70301', 'Perkenalkan Nama Saya Rosihan

    Ari Yuana.

    Saya Memiliki Tiga Anak, Dua Diantaranya Laki-Laki Dan Satu Orang

    Perempuan. Saya JugaPunya Seorang Istri Yang ', 'true');

    Perhatikan nilai UDH dari pecahan pertama di atas, yaitu 050003A70301. Nilai „03′ dari

    „0301′ menunjukkan total pecahan ada 3 buah, dan „01′ dari „0301′ menunjukkan urutan

     pecahan.

    Selanjutnya misalkan ID dari record hasil query di atas adalah 200 (lihat field ID record di

    atas pada tabel OUTBOX), maka kita gunakan ID = 200 ini untuk proses penyimpanan

     pecahan yang ke-2 dan ke-3 di tabel OUTBOX_MULTIPART nya.

    Perintah query untuk menyimpan pecahan ke-2 ke tabel OUTBOX_MULTIPART:

    INSERT INTO outbox_multipart(UDH, TextDecoded, ID, SequencePosition) 

     VALUES ('050003A70302', 'Saya Cintai. Rumah Saya Di Colomadu Karanganyar.

    Saya Lahir Di

    Boyolali Tiga Puluh Tahun Yang Lalu. Sekarang Saya Mengajar Di Salah Satu

    Perguruan

    Tinggi', '200', '2');

    Perhatikan nilai UDH dari pecahan kedua di atas, yaitu 050003A70302.

    Perintah query untuk menyimpan pecahan ke-3 ke tabel OUTBOX_MULTIPART:

    INSERT INTO outbox_multipart(UDH, TextDecoded, ID, SequencePosition) 

     VALUES ('050003A70303', 'Di Kota Solo, Yaitu Universitas Sebelas Maret.', 

    '200', '3');

    Perhatikan nilai UDH dari pecahan kedua di atas, yaitu 050003A70303.

     Nah.. dah paham kan konsepnya? OK sekarang saya berikan script khusus untuk mengirim

    long text SMS sebagaimana ide di atas.

  • 8/19/2019 Artikel Blog Sms Gateway

    32/36

     

  • 8/19/2019 Artikel Blog Sms Gateway

    33/36

    Cara Supaya Service SMS Daemon Gammu Berjalan

    Otomatis di Windows 

    sudah diinstall di komputer dapat berjalan secara otomatis begitu komputer dihidupkan (start

    automatically)? Jika ya, maka mudah-mudahan artikel ini bisa bermanfaat bagi Anda.

    Mungkin Anda bertanya dalam hati pada saya: “ Lho mas/pak, bukankah di service Gammu

     yang ada Windows sudah otomatis berjalan? kan kalau dilihat di Control Panel >

    Administrative Tools > Services  tampak bahwa Startup Type dari service Gammu sudah

    tertulis Automatic?”

    Iya.. sih.. tampaknya begitu, namun kenyataannya Anda tetap harus menjalankannya secara

    manual. Saya juga tidak mengerti kenapa hal ini terjadi. Mungkin ini bug dari service

    Gammu kali ya? ah.. yang ngomong demikian tidak lebih pintar dari yang buat Gammu positive thinking aja ah… 

    OK… bagi Anda yang sudah berhasil membuat service SMSD di Gammu, dan ingin supaya

    service tersebut berjalan otomatis begitu komputer dihidupkan, cobalah menjalankannya

    dengan menggunakan BATCH FILE. Di dalam batch file tersebut nantinya kita tuliskan

     perintah untuk menjalankan service Gammu nya. Supaya perintah untuk menjalankan service

    tersebut dijalankan secara otomatis, maka Anda letakkan ke dalam folder START UP.

    Mengapa di folder START UP? iya karena setiap kali Windows melakukan booting, maka

    dia akan menjalankan program yang ada di folder tersebut secara otomatis. Nah.. begitu

    idenya.

    So… apa isi dari batch file tersebut? ini dia isinya: 

    START C:\gammu\gammu-smsd.exe -s -c C:\gammu\smsdrc -n GammuSMSD

    Anda dapat membuat batch file dengan menggunakan Notepad, lalu tuliskan perintah di atas

    dan simpan sebagai file berekstensi (*.bat).

    Oya… perintah di atas akan menjalankan file „gammu-smsd.exe„ yang terdapat dalam

    direktori C:\gammu serta menggunakan file „smsdrc„ sebagai file konfigurasi yang juga

    terletak di C:\gammu. Sehingga Anda harus menyesuaikan direktorinya bila letak file

    „gammu-smsd.exe‟ dan ‟smsdrc‟ nya tidak di C:\gammu.

    Setelah batch file dibuat, selanjutnya Anda letakkan file tersebut di folder START UP.

    Dimanakah gerangan letak folder START UP? Kalau di Windows XP, letaknya di

    C:\Documents and Settings\All Users\Start Menu\Programs\Startup. Sedangkan kalau di

    Windows Vista atau Windows 7 ane belum tahu Silakan dicari sendiri ya… 

    It‟s DONE…. untuk melihat efeknya, silakan Anda restart komputer dan lihat hasilnya

    melalui Control Panel > Administrative Tools > Services, maka Gammu servicenya sudahotomatis berjalan.

  • 8/19/2019 Artikel Blog Sms Gateway

    34/36

    Cara Membuat Script PHP Untuk Cek Pulsa Dengan

    Gammu 

    Banyak sekali pengunjung setia blog ini yang menanyakan bagaimana cara melakukan cek

     pulsa menggunakan Gammu. Pertanyaannya menarik juga, karena kebanyakan orang

    mengidentikkan Gammu hanya sebagai tool untuk pengolah SMS Gateway saja. Tapi…

     bisakah Gammu ini digunakan untuk cek pulsa juga? Setelah saya melakukan eksperimen

    sendiri beberapa waktu yang lalu, dan hasilnya ternyata …. “BISA”

    OK.. dalam artikel ini saya akan mencoba memaparkan cara melakukan cek pulsa dengan

    Gammu, baik melalui console (command prompt) maupun menggunakan script PHP.

    Untuk melakukan cek pulsa dengan menggunakan Gammu melalui console (command

     prompt), caranya cukup mudah yaitu dengan menggunakan perintah sbb:

    gammu getussd nocekpulsa

    Sebagai contoh misalkan saya menggunakan kartu XL, maka perintahnya

    gammu getussd *123# 

    Perintah di atas dijalankan setelah Anda masuk ke direktori Gammu nya.

    Jika setelah Anda berikan perintah tersebut dan ternyata muncul keterangan “Press CTRL+C

    to break…” tunggulah sebentar karena Gammu sedang merequest perintah cek pulsa tersebut

    ke operator.

    Oya… sebelum Anda melakukan cek pulsa dengan Gammu, pastikan bahwa konfigurasi di

    GAMMURC nya sudah tepat, khususnya parameter CONNECTION dan PORT nya. Untuk

     panduan lengkapnya, silakan baca Cara Setting Gammu.

    Berikut ini tampilan yang muncul setelah perintah di atas diberikan

    Dari tampilan di atas tampak bahwa pulsa nya masih ada Rp. 2.000,-. Mmm.. tapi kok hasil

    requestnya rumit gitu ya? ada tulisan USSD Received , Status, Service Reply, dsb… belum lagi

  • 8/19/2019 Artikel Blog Sms Gateway

    35/36

    ada iklan dari XL yang banyak. Padahal inti terpenting dari keterangan tersebut hanyalah

     jumlah sisa pulsanya saja. Trus… bagaimana cara menampilkan hanya besar sisa pulsanya

    saja? He… 3x itu nanti kita lakukan dengan script PHP. Dengan script PHP kita b isa

    hilangkan beberapa informasi yang kurang berguna.

    OK.. sekarang kita coba buat script PHP untuk cek pulsa dengan Gammu. Pada prinsipnya

    caranya sama seperti di atas yaitu dengan menjalankan perintah di console lalu hasilnya

    dibaca oleh PHP.

    Di dalam PHP, terdapat function exec() yang digunakan untuk menjalankan perintah dalam

    console, dan keterangan hasil dari proses tersebut bisa ditangkap kembali oleh PHP untuk

    ditampilkan via browser.

    So… script PHP untuk cek pulsa dengan Gammu adalah sbb: 

    cekpulsa.php 

       

    Keterangan: 

    Script di atas dibuat berdasarkan asumsi bahwa direktori Gammu berada di C:\gammu

    Perintah

    exec("c:\gammu\gammu -c c:\gammu\gammurc getussd *123#", $hasil); 

    digunakan untuk menjalankan perintah cek pulsa Gammu melalui console. Tapi… kok

     perintahnya beda dengan yang diberikan di atas? Ya… khusus untuk perintah console yang

    dijalankan lewat script PHP ini, path direktorinya harus jelas. Perhatikan pula, bahwa untuk

     perintah gammu getussd ini perlu ditambahkan path untuk GAMMURC nya (file

    konfigurasi). Bagaimana bila dihilangkan path GAMMURC nya? dari hasil eksperimen saya,

    ternyata tidak bisa. Oya, untuk cek pulsa ini, file yang diperlukan adalah GAMMURC, bukan

    SMSDRC.

  • 8/19/2019 Artikel Blog Sms Gateway

    36/36

    Setelah perintah di console dijalankan, selanjutnya hasilnya disimpan dalam variabel $hasil.

    Selanjutnya bagian

    for ($i=0; $i 0) $index = $i; } 

    digunakan untuk memfilter $hasil yang di dalamnya hanya terdapat string “Service Reply“.

    Mengapa harus string “Service Reply”? Perhatikan gambar hasil cek pulsa lewat console di

    atas. Keterangan jumlah sisa pulsa muncul pada baris output yang didahului dengan string

    “Service Reply”. Oleh karena itu kita hanya ambil saja baris output yang terdapat string

    “Service Reply”. Oya perlu saya tambahkan pula bahwa hasil dari perintah exec() ini adalah

     berupa array dimana elemen array nya adalah tergantung jumlah baris outputnya atau dalam

    hal ini nilai $hasil adalah berupa data array.

    Trus.. mungkin Anda melihat bahwa pada gambar hasil cek pulsa di atas terdapat 2 buah

     baris yang di dahului dengan string “Service Reply”, nah… lantas mana yang diambil, karena

    keterangan sisa pulsanya muncul pada baris “Service Reply” yang terakhir, maka kita ambil

    saja index terakhirnya.

    Sekarang, ini dia tampilan cek pulsa melalui script PHP yang dijalankan via browser.

     Nah.. mudah bukan? Selamat mencoba ya… Semoga bermanfaat.