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 http://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
01.
02.
function
singkatURL(
$url
)
03.
{
04.
$curlHandle
= curl_init();
05.
// melakukan request ke server Google API
06.
curl_setopt(
$curlHandle
, CURLOPT_URL,
'https://www.googleapis.com/urlshortener/v1/url'
);
07.
curl_setopt(
$curlHandle
, CURLOPT_HEADER, 0);
08.
curl_setopt(
$curlHandle
, CURLOPT_SSL_VERIFYPEER, 0);
09.
// menentukan tipe konten hasil request yg berupa JSON
10.
curl_setopt(
$curlHandle
, CURLOPT_HTTPHEADER,
array
(
'Content-Type: application/json'
));
11.
// parameter yang berisi URL yang akan disingkat
12.
curl_setopt(
$curlHandle
, CURLOPT_POSTFIELDS,
'{"longUrl":"'
.
$url
.
'"}'
);
13.
curl_setopt(
$curlHandle
, CURLOPT_RETURNTRANSFER, 1);
14.
curl_setopt(
$curlHandle
, CURLOPT_TIMEOUT,30);
15.
// lakukan request dengan POST method
16.
curl_setopt(
$curlHandle
, CURLOPT_POST, 1);
17.
18.
// baca data hasil request yg berupa JSON
19.
$content
= curl_exec(
$curlHandle
);
20.
curl_close(
$curlHandle
);
21.
22.
// ekstrak data JSON untuk mendapatkan hasil URL yg disingkat
23.
$data
= json_decode(
$content
);
24.
return
$data
->id;
25.
}
26.
?>
Selanjutnya kita buat script untuk memproses SMS nya
newartikel.php
01.
02.
03.
// mengincludekan function untuk menyingkat URL
04.
include
'function.php'
;
05.
06.
// koneksi ke database Gammu
07.
$dbhost
=
'localhost'
;
08.
$dbuser
=
'...'
;
09.
$dbpass
=
'...'
;
10.
$dbname
=
'...'
;
11.
mysql_connect(
$dbhost
,
$dbuser
,
$dbpass
);
12.
mysql_select_db(
$dbname
);
13.
14.
// membaca INBOX Gammu
15.
$query
=
"SELECT * FROM inbox WHERE Processed = 'false'"
;
16.
$hasil
= mysql_query(
$query
);
17.
$data
= mysql_fetch_array(
$hasil
);
18.
$id
=
$data
[
'ID'
];
19.
$sms
=
$data
[
'TextDecoded'
];
20.
$sender
=
$data
[
'SenderNumber'
];
21.
22.
// proses parsing SMS berdasarkan karakter #
23.
$parse
=
explode
(
'#'
,
$sms
);
24.
25.
// jika jumlah parameter hasil parsing adalah 2
26.
if
(
count
(
$parse
) == 2)
27.
{
28.
// baca keyword hasil parsing
29.
$keyword
=
strtoupper
(
$parse
[0]);
30.
// baca url blog hasil parsing
31.
$blogurl
=
$parse
[1];
32.
// jika keyword adalah 'NEWS' maka jalankan proses update status
33.
if
(
$keyword
==
'NEWS'
)
34.
{
35.
// mengubah URL blog menjadi huruf kecil spy seragam
36.
$url
=
strtolower
(
$blogurl
);
37.
// membaca data RSS Feed url blog
38.
$fetchData
= simplexml_load_file(
'http://'
.
$url
.
'/feed'
);
39.
40.
foreach
(
$fetchData
as
$news
)
41.
{
42.
// membaca title dari RSS Feed
43.
$title
=
$news
->item->title;
44.
// membaca URL artikel
45.
$posturl
=
$news
->item->link;
46.
// menyingkat URL artikel
47.
$singkatUrl
= singkatURL(
$posturl
);
48.
break
;
49.
}
50.
// setting balasan SMS
51.
$reply
=
'Artikel terbaru dari '
.
$url
.
': "'
.
$title
.
'" ('
.
$singkatUrl
.
')'
;
52.
}
53.
else
$reply
=
'Keyword salah'
;
54.
}
55.
else
$reply
=
'Format SMS Salah'
;
56.
57.
// menandai SMS di INBOX Gammu bahwa sudah diproses
58.
$query
=
"UPDATE inbox SET Processed = 'true' WHERE ID = '$id'"
;
59.
mysql_query(
$query
);
60.
61.
// mengirim pesan SMS balasan ke nomor pengirim
62.
$query
= "INSERT INTO outbox(DestinationNumber, TextDecoded, CreatorID)
63.
VALUES (
'$sender'
,
'$reply'
,
'Gammu'
)";
64.
mysql_query(
$query
);
65.
?>
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
01.
<
html
>
02.
<
head
>
03.
<
script
type
=
"text/javascript"
>
04.
function proses()
05.
{
06.
if (window.XMLHttpRequest)
07.
{
08.
xmlhttp=new XMLHttpRequest();
09.
}
10.
else
11.
{
12.
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
13.
}
14.
15.
xmlhttp.onreadystatechange=function()
16.
{
17.
if (xmlhttp.readyState==4 && xmlhttp.status==200)
18.
{
19.
}
20.
}
21.
22.
xmlhttp.open("GET","newartikel.php");
23.
xmlhttp.send();
24.
setTimeout("proses()", 5000);
25.
}
26.
head
>
27.
<
body
onload
=
"proses();"
>
28.
<
h1
>SMS Centerh1
>
29.
body
>
30.
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
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
EmoticonEmoticon