• Home
  • /
  • SMS Gateway
  • /
  • Membuat Layanan Auto Reply SMS Untuk Mengetahui Artikel Terbaru Situs/Blog

Membuat Layanan Auto Reply SMS Untuk Mengetahui Artikel Terbaru Situs/Blog

 

Terkadang saya melihat-lihat lagi secara sekilas artikel-artikel yang pernah saya posting sebelumnya, sekedar mencari ide dan inspirasi untuk tulisan saya yang terbaru di blog tutorial ini. Dan… suatu ketika saya menemukan arsip artikel saya tentang SMS notifikasi artikel terbaru dan teknik menyingkat URL dengan Google API. Sepertinya kedua artikel ini bisa memberikan ide sebagai bahan artikel yang baru. Ide nya adalah bagaimana membuat layanan SMS auto reply untuk menginformasikan artikel terbaru dari sebuah situs atau blog. Hanya dengan format SMS misalnya: NEWS#BLOG.ROSIHANARI.NET, maka pengirim SMS ini bisa mendapatkan informasi artikel terbaru dari Blog.RosihanAri.Net termasuk link URL nya.

Lantas apa bedanya dengan ide baru ini dengan SMS Notifikasi sebelumnya? Bedanya adalah SMS Notifikasi ini bersifat broadcast SMS langsung ke banyak nomor ketika ada artikel terbaru dipublish, sedangkan ide baru yang menggunakan Auto Reply SMS ini adalah hanya mengirimkan SMS informasi ke orang yang merequest informasi tersebut. Tahu bedanya kan? 🙂 Kelebihan dari Auto Reply SMS adalah bersifat terbuka, artinya layanan ini terbuka bagi siapa saja yang ingin merequest informasi. Sedangkan untuk SMS notifikasi via broadcast, bersifat tertutup artinya kita hanya bisa mengirim informasi ke nomor-nomor tertentu yang ada dalam database.

Oya… lantas apa gunanya penyingkat URL nya? gunanya adalah untuk menyingkat URL artikel terbaru yang muncul dalam respon SMS auto replynya. Mengapa harus disingkat? ya… karena saat ini kebanyakan blog atau situs menggunakan permalink yang panjang untuk setiap artikelnya. Kalau URL permalinknya panjang, bisa-bisa tekor biaya pengiriman SMS balasannya 🙂

OK… dalam artikel kali ini, saya akan mencoba memaparkan cara membuat layanan auto reply SMS untuk mengetahui artikel terbaru dalam suatu situs/blog. Akan tetapi dalam artikel ini hanya akan saya batasi pada situs atau blog yang dibuat dengan WordPress saja karena pada umumnya blog WordPress memiliki URL RSS Feed standard yaitu di http://namasitus/feed, contohnya https://blog.rosihanari.net/feed. Dari RSS Feed itulah nanti kita akan manfaatkan untuk mendapatkan artikel terbaru.

Untuk membangun layanan ini, Anda bisa menggunakan Gammu sebagai core SMS engine nya, dan Gammu ini sudah Anda install dengan baik dengan modem SMS yang direkomendasikan.

Setelah Gammu diinstall, pertama kita buat script untuk membaca SMS yang masuk ke inbox. Script ini nanti berfungsi akan membaca SMS yang memiliki format NEWS#NAMASITUS. Setelah SMS dibaca, selanjutnya akan membaca RSS Feed dari situs tersebut dan mengambil data artikel terbaru meliputi judul artikel dan URL artikelnya. Kemudian URL artikel ini nantinya akan disingkat, dan akhirnya mengirimkan respon sms ke nomor pengirim berisi judul dan url artikel yang disingkat tersebut. Simpel kan idenya???

Oh ya… hampir lupa, pastikan sebelumnya Anda sudah membuat function untuk menyingkat URL nya. Nama function ini adalah singkatURL() yang disimpan dalam file function.php

function.php

<?php
function singkatURL($url)
{
   $curlHandle = curl_init();
   // melakukan request ke server Google API
   curl_setopt($curlHandle, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');
   curl_setopt($curlHandle, CURLOPT_HEADER, 0);
   curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, 0);
   // menentukan tipe konten hasil request yg berupa JSON
   curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
   // parameter yang berisi URL yang akan disingkat
   curl_setopt($curlHandle, CURLOPT_POSTFIELDS, '{"longUrl":"'.$url.'"}');
   curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($curlHandle, CURLOPT_TIMEOUT,30);
   // lakukan request dengan POST method
   curl_setopt($curlHandle, CURLOPT_POST, 1);

   // baca data hasil request yg berupa JSON
   $content = curl_exec($curlHandle);
   curl_close($curlHandle);

   // ekstrak data JSON untuk mendapatkan hasil URL yg disingkat
   $data = json_decode($content);
   return $data->id;
}
?>

Selanjutnya kita buat script untuk memproses SMS nya

newartikel.php

<?php

// mengincludekan function untuk menyingkat URL
include 'function.php';

// koneksi ke database Gammu
$dbhost = 'localhost';
$dbuser = '...';
$dbpass = '...';
$dbname = '...';
mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);

// membaca INBOX Gammu
$query = "SELECT * FROM inbox WHERE Processed = 'false'";
$hasil = mysql_query($query);
$data = mysql_fetch_array($hasil);
$id = $data['ID'];
$sms = $data['TextDecoded'];
$sender = $data['SenderNumber'];

// proses parsing SMS berdasarkan karakter #
$parse = explode('#', $sms);

// jika jumlah parameter hasil parsing adalah 2
if (count($parse) == 2)
{
   // baca keyword hasil parsing
   $keyword = strtoupper($parse[0]);
   // baca url blog hasil parsing
   $blogurl = $parse[1];
   // jika keyword adalah 'NEWS' maka jalankan proses update status
   if ($keyword == 'NEWS')
   {
        // mengubah URL blog menjadi huruf kecil spy seragam
        $url = strtolower($blogurl);
        // membaca data RSS Feed url blog
        $fetchData = simplexml_load_file('http://'.$url.'/feed');

        foreach($fetchData as $news)
        {
            // membaca title dari RSS Feed
            $title = $news->item->title;
            // membaca URL artikel
            $posturl = $news->item->link;
            // menyingkat URL artikel
            $singkatUrl = singkatURL($posturl);		
            break;
        }
        // setting balasan SMS
        $reply = 'Artikel terbaru dari '.$url.': "'.$title.'" ('.$singkatUrl.')';
   }
   else $reply = 'Keyword salah';
}
else $reply = 'Format SMS Salah';

// menandai SMS di INBOX Gammu bahwa sudah diproses
$query = "UPDATE inbox SET Processed = 'true' WHERE ID = '$id'";
mysql_query($query);

// mengirim pesan SMS balasan ke nomor pengirim
$query = "INSERT INTO outbox(DestinationNumber, TextDecoded, CreatorID)
          VALUES ('$sender', '$reply', 'Gammu')";
mysql_query($query);
?>

Supaya script newartikel.php ini bisa berjalan terus menerus sebagai SMS center, maka perlu kita gunakan AJAX yang otomatis merefresh setiap interval waktu tertentu, sehingga Anda tidak perlu repot merefresh script di atas secara manual berkali-kali.

index.html

<html>
   <head>
   <script type="text/javascript">
       function proses()
       {
            if (window.XMLHttpRequest)
            {
               xmlhttp=new XMLHttpRequest();
            }
            else
            {
               xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }

            xmlhttp.onreadystatechange=function()
            {
               if (xmlhttp.readyState==4 && xmlhttp.status==200)
               {
               }
            }

            xmlhttp.open("GET","newartikel.php");
            xmlhttp.send();
            setTimeout("proses()", 5000);
       }
    </head>
    <body onload="proses();">
        <h1>SMS Center</h1>
    </body>
</html>

Script AJAX di atas akan senantiasa merefresh script newartikel.php setiap selang interval 5 detik. Pastikan index.html ini selalu terbuka di browser Anda.

Berikut ini contoh tampilan SMS balasan dari SMS center yang diterima di HP pengirim request dengan format SMS: NEWS#BLOG.ROSIHANARI.NET

SMS Auto reply

Mmm… sepertinya script di atas masih ada kelemahan yaitu belum bisa mengirim balasan jika nama blog/situsnya tidak valid atau tidak ada di internet. Nah… hal ini sekaligus PR buat Anda untuk mengembangkan script di atas 🙂

 

Bagikan artikel ini jika bermanfaat !

Assalaamu'alaikum.. aktivitas keseharian saya mengajar di Universitas Sebelas Maret, dengan matakuliah pemrograman dan basis data. Adapun bidang penelitian saya tentang computational thinking dan computer-aided learning.

Leave a Reply