Jumat, 11 Mei 2012

Teknik 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.

1.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
1.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.
1.gammu-smsd-inject -c pathtoconfigfile EMS notujuan -text "pesan"
Setelah Anda mengetikkan perintah di atas, maka Gammu akan segera mengirim SMS ke nomor tujuan.
Selanjutnya kita gunakan cara kedua, yaitu dengan menyisipkan sebuah record ke dalam tabel ‘outbox’.
Di dalam tabel ‘outbox‘ Anda akan lihat banyak sekali field, namun yang perlu diperhatikan hanyalah field ‘DestinationNumber‘ dan ‘TextDecoded‘. Field ‘DestinationNumber’ itu nanti akan diisi dengan nomor HP tujuan dan ‘TextDecoded’ diisi dengan pesan SMS yang akan dikirimkan.
Contoh:
1.INSERT INTO outbox(DestinationNumber, TextDecoded, CreatorID) VALUES ('+62811000001', 'Hello World', 'Gammu');
Nah… cara ini hanya hanya akan bisa dilakukan bila pesan teks SMS nya maksimal 160 karakter saja. Sedangkan bila lebih dari itu tidak bisa. Meskipun di situs resminya Gammu telah menjelaskan teknik mengirim SMS long text melalui INSERT tabel menggunakan multipart, namun setelah saya coba berkali-kali dan berhari-hari ternyata tidak bisa dilakukan. Sehingga untuk mengirim long text (di atas 160 karakter) sebaiknya gunakan command inject di atas.
OK.. sekarang kita akan mencoba membuat script PHP sederhana untuk mengirim pesan SMS yang terintegrasi dengan Gammu ini.
Langkah pertama kita buat form untuk mengirim pesan SMS nya terlebih dahulu.
1.<form method="post" action="send.php">
2.No. HP Tujuan : <input type="text" name="nohp" value="+62"><br>
3.Pesan : <textarea name="msg">textarea><br>
4.<input type="submit" name="submit" value="Kirim SMS">
5.form>
Langkah kedua, kita buat script php untuk mengirim pesannya.
send.php
1.
2.$noTujuan = $_POST['nohp'];
3.$message = $_POST['msg'];
4. 
5.exec('c:\gammu\gammu-smsd-inject.exe -c c:\gammu\smsdrc EMS '.$noTujuan.' -text "'.$message.'"');
6. 
7.?>
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
01.
02.mysql_connect("dbhost", "dbuser", "dbpass");
03.mysql_select_db("sms");
04. 
05.$noTujuan = $_POST['nohp'];
06.$message = $_POST['msg'];
07. 
08.$query = "INSERT INTO outbox (DestinationNumber, TextDecoded, CreatorID) VALUES ('$noTujuan', '$message', 'Gammu')";
09.$hasil = mysql_query($query);
10.if ($hasil) echo "SMS berhasil dikirim";
11.else echo "SMS gagal dikirim";
12. 
13.?>
Teknik pengiriman SMS di atas sudah diuji coba dan berjalan dengan lancar di modem Wavecom Fastrack.
Bagaimana mudah bukan membuatnya? Nantikan artikel berikutnya tentang cara pengolahan SMS yang masuk dengan studi kasus autorespon atau autoreply.
Sebagai catatan, baik cara pertama maupun cara kedua, bila pesan SMS sudah terkirim maka secara otomatis akan tersimpan ke dalam tabel ‘sentitems’ dalam database ‘sms’.
Update:
Oya, satu lagi… teknik di atas merupakan teknik pengiriman sms untuk Gammu versi mulai 1.25 sampai dengan terbaru. Untuk versi Gammu di bawah 1.25 kemungkinan ada sedikit perbedaan perintah.

Artikel Terkait


EmoticonEmoticon