About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

  • Home
  • /
  • SMS Gateway
  • /
  • SMS Notifikasi (Auto Broadcast) Jika Ada Artikel Terbaru di Blog WordPress

SMS Notifikasi (Auto Broadcast) Jika Ada Artikel Terbaru di Blog WordPress

Satu lagi persembahan artikel dari saya bagi para pecinta SMS Gateway di blog ini. Kali ini tentang bagaimana cara membuat SMS broadcast jika ada artikel terbaru pada blog Anda. BTW… ide ini muncul tadi malam setelah saya bangun tidur πŸ™‚ Nah… Barangkali teknik ini bisa dijadikan salah satu teknik marketing untuk memperkenalkan blog Anda, atau mendatangkan traffic. Melalui SMS yang dikirimkan, diharapkan pengunjung setia blog Anda akan merasa senang karena mendapat notifikasi atau pemberitahuan setiap kali ada artikel baru di blog Anda.

Lantas isi dari SMS notifikasi yang dibroadcast kepada pengunjung blog tersebut apa ya?

Ya… untuk SMS notifikasi yang dikirimkan isinya cukup dengan menampilkan judul atau title artikel terbaru tersebut dan juga URL link menuju ke artikel tersebut. Apakah URL link dalam SMS tersebut apakah bisa diklik?? Hmmm… untuk beberapa jenis hp-hp saat ini yang canggih, link URL tersebut bisa diklik dan langsung membuka browser menuju link tersebut.

Oya, untuk lebih menarik hati pengunjung blog Anda, mungkin bisa Anda tambahkan kata sapaan, misalnya: “Hallo [nama], ada artikel terbaru lho di blog, judulnya [judul], URL nya [URL]“.

Nah… pada artikel kali ini saya akan mencoba memaparkan cara membuat layanan SMS auto broadcast tersebut.

Untuk membuat auto broadcast SMS ini, kita membutuhkan software untuk SMS gateway yang berfungsi untuk melakukan proses pengiriman otomatis dari server melalui hp/modem. Di sini kita akan menggunakan Gammu sebagai software SMS gateway nya.

Ide dasar pembuatan layanan ini adalah, pertama kita baca dahulu RSS Feed dari blog. Oya, pembahasan di sini hanya untuk blog WordPress saja. Untuk blog yang lain silakan menyesuaikan formatnya. Untuk RSS feed dari blog WordPress, biasanya dapat dilihat di http://situsAnda/feed. Sebagai contoh adalah RSS feed dari blog ini adalah di https://blog.rosihanari.net/feed. Jika Anda lihat source dari RSS feed nya, maka akan memiliki format sebagai berikut

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
   <channel>
      <title>...</title>
      <link>...</link>
      <description>...</description>

      <item>
         <title>...</title>
         <link>...</link>
         <pubDate>...</pubDate>
         <guid>...</guid>
         <description></description>
         .
         .   
      </item>

      <item>
         <title>...</title>
         <link>...</link>
         <pubDate>...</pubDate>
         <guid>...</guid>
         <description></description>
         .
         .   
      </item>
      .
      .          
   </channel>
</rss>

Dari format RSS Feed di atas, data informasi artikel diapit oleh tag <item>...</item>. Sedangkan artikel yang paling terakhir dipublish (terbaru) terletak pada <item>..</item> paling atas. Jika kita perhatikan, di dalam tag <item>...</item> terdapat tag lagi yaitu <title>...</title> yang menyatakan title artikel, <link>...</link> untuk menampilkan link URL permalink artikelnya, <pubDate>...</pubDate> berisi informasi tanggal publikasi, <guid>...</guid> berisi URL link asli artikelnya non permalink. Dalam link guid ini terdapat nomor ID artikelnya. Sedangkan tag <description>...</description> berisi excerpt atau cuplikan artikel.

Dalam SMS broadcast ini, informasi feed yang hanya diambil misalkan hanyalah ID artikel yang berasal dari tag <guid>...</guid>, title yang diambil dari <title>...</title> dan juga URL link. Untuk link URL akan diambil dari <guid>...</guid> saja karena biasanya link URL dari <link>...</link> bentuknya panjang sekali sehingga bisa menyebabkan long sms dan biayanya pengiriman sms nya jadi mahal πŸ™‚

Data RSS feed artikel yang nantinya kita baca hanyalah artikel yang terletak pada <item>…</item> pertama saja (artikel terbaru). Setelah RSS feed dibaca kemudian lakukan pengiriman broadcast ke semua nomor hp. Oya, sebelumnya Anda harus sudah memiliki data nomor hp dan juga nama pemiliknya untuk sapaan pada SMS notifikasi.

Script tersebut harus dijalankan terus menerus, sehingga begitu ada artikel terbaru maka secara otomatis akan mengirim SMS notifikasi. Anda dapat menggunakan AJAX untuk menjalankan script baca RSS feed dan mengirimkan SMS secara terus menerus.

Mudah kan konsepnya??? Eit.. tapi tunggu dulu, dengan konsep tersebut tentunya SMS yang dikirim akan berulang-ulang meskipun belum ada artikel terbaru. Atau dengan kata lain, seseorang akan mendapat SMS notifikasi yang sama, selama belum ada artikel yang terbaru lagi karena script tersebut dijalankan secara berulang-ulang. Nah… untuk mengantisipasi hal tersebut kita harus cari cara supaya tidak terjadi pengiriman SMS notifikasi yang sama selama belum ada artikel terbaru. Adapun idenya adalah setiap kali kita membaca RSS feed, kita baca pula ID artikel yang dibaca dari <guid>...</guid> kemudian kita masukkan ke database. Di dalam database, field untuk menyimpan ID artikel ini kita buat PRIMARY KEY sehingga tidak bisa menyimpan ID yang sama berulang kali. Proses memasukkan data ID artikel ini akan gagal jika sudah terdapat ID artikel yang sama sebelumnya di dalam tabel database. Nah… sifat PRIMARY KEY dari field tersebut kita manfaatkan untuk mencegah pengiriman SMS berulang. Proses pengiriman baru akan dilakukan jika proses penyimpanan ID artikel ke tabel sukses atau dengan kata lain artikel dengan ID tersebut belum pernah dikirim sebelumnya. OK itu idenya.

Sekarang kita mulai saja proses pembuatan scriptnya. Pertama, kita siapkan dulu tabel phonebook yang digunakan untuk menyimpan data nomor HP dan juga nama yang nantinya akan dikirimi SMS notifikasi.

CREATE TABLE `phonebook` (
  `nohp` varchar(20),
  `nama` varchar(30)
);

dan juga tabel listartikel untuk menyimpan ID artikel.

CREATE TABLE `listartikel` (
  `id` int(11),
  PRIMARY KEY (`id`)
);

Kedua tabel itu dapat diletakkan dalam database yang sama dengan gammu nya, bersama tabel INBOX, OUTBOX, SENTITEMS dll.

Selanjutnya, kita buat script untuk proses pembacaan RSS Feed dan juga pengiriman SMS notifikasi secara broadcast ke semua nomor HP yang ada di tabel ‘phonebook’

sms.php

<?php
// koneksi ke database gammu
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");

// membaca semua data RSS feed dari blog
$dataxml = simplexml_load_file('https://blog.rosihanari.net/feed');

// counter
$count = 1;

// proses parsing data XML dari RSS feed
// data yang dibaca hanya di dalam tag <item>...</item>
foreach($dataxml->channel->item as $artikel)
{
   // data yang dibaca hanya data pertama
   if ($count == 1)
   {
     // baca title artikel
     $title = $artikel->title;
     // baca guid artikel 
     $guid = $artikel->guid;
   
     // proses mengambil ID artikel dari guid
     // ID artikel terletak pada link guid berbentuk http://situsAnda/?p=ID 
     $pecah = explode("?p=", $guid);
     $idArtikel = $pecah[1];
     
     // proses insert data ID artikel ke tabel listartikel 
     $query = "INSERT INTO listartikel VALUES ('$idArtikel')";
     $hasil = mysql_query($query);
     if ($hasil)
     {
       // jika proses insert ID artikel sukses maka lakukan kirim SMS

       // baca data nama dan nohp dari phonebook
       $query2 = "SELECT * FROM phonebook";
       $hasil2 = mysql_query($query2);
       while ($data2 = mysql_fetch_array($hasil2))
       {
          $nohp = $data2['noHP'];
          $nama = $data2['nama'];

          // format SMS notifikasi
          $isiSMS = "Hai ".$nama.", ada artikel baru nih \"".$title."\". URLnya ada di ".$guid;

          // kirim SMS notifikasi
          $query3 = "INSERT INTO outbox (DestinationNumber, TextDecoded, CreatorID) VALUES ('$nohp', '$isiSMS', 'Gammu')";
          mysql_query($query3);
       }	  
     }
   }
   // counter
   $count++;   
}

?>

Berikutnya, kita buat script AJAX untuk menjalankan script sms.php di atas secara terus menerus setiap interval tertentu. Di sini saya contohkan menjalankan script sms.php dalam setiap interval 10 menit (600.000 mili sekon).

index.php

<html>
<head>
<script type="text/javascript">
  
  function ajax() 
  {
  if (window.XMLHttpRequest)
  {
     xmlhttp=new XMLHttpRequest();
  }
  else
  {
     xmlhttp =new ActiveXObject("Microsoft.XMLHTTP");
  }
  
  xmlhttp.open("GET","sms.php");
  xmlhttp.send();
  setTimeout("ajax()", 600000);
  }  
  </script>

</head>
<body onload="ajax()">
   <h1>SMS Server running...</h1>
</body>
</html>

Nah… mudah bukan membuatnya? silakan mencoba ya…. πŸ™‚ Script di atas dicoba dengan sukses menggunakan modem Wavecom dan Gammu 1.25.

 

0
Bagikan artikel ini jika bermanfaat !

Saya seorang dosen dan peneliti di Universitas Sebelas Maret. Bidang penelitian saya tentang: adaptive learning, datascience, dan computer aided learning. Selain itu saya juga seorang blogger, serta penulis buku tentang pemrograman, dan matematika.

Leave a Reply