Membuat SMS Auto Reply with Filtering Sederhana pada Kalkun

Berhubung saya malas me-reply satu persatu sms broadcast ucapan selamat lebaran, dan kebetulan hp saya sedang ngambek, jadi saya putuskan buat sedikit memodifikasi kalkun agar bisa mengirim secara otomatis terhadap sms yang masuk, tentunya sms-sms tertentu yang sepertinya sms broadcast ucapan lebaran.

Untuk gammu yang saya gunakan gammu versi 1.29.0 dan kalkun versi 0.3 (samosir). Pada kalkun versi 0.3 ini sebenarnya sudah terdapat fitur auto reply, akan tetapi hanya auto reply sederhana tanpa filter tertentu.


Berikut langkah memodifikasinya :
ada tiga file yang harus di edit, kalkun_settings.php , daemon.php, message_model.php
pada file kalkun_settings.php tambahkan baris kode berikut

$config['sms_filtered'] = TRUE;
$config['sms_filtered_keyword'] = array('maaf','lahir','batin','bathin','idul','fitri'); // keyword filter
$config['sms_filtered_msg'] = 'Selamat Idul Fitri, mohon maaf lahir batin.. :)  '; // auto reply message content

kemudian pada file daemon.php tambahkan kode berikut didalam fungsi message_routine,

if($this->config->item('sms_filtered'))
{
	$this->_sms_filtered($tmp_message->SenderNumber,$tmp_message->TextDecoded);					
}

Kemudian buat fungsi juga pada file daemon.php dengan nama _sms_filtered()

function _sms_filtered($phone_number,$TextDecoded)
{
		$data['coding'] = 'default';
		$data['class'] = '1';
		$data['dest'] = $phone_number;
		$data['date'] = date('Y-m-d H:i:s');
		$data['smsdata'] = $TextDecoded;
		$data['message'] = $this->config->item('sms_filtered_msg');
		$data['keyword'] = $this->config->item('sms_filtered_keyword');
		$data['delivery_report'] = 'default';
		$this->Message_model->send_filtered_msg($data);				
	} 


langkah terakhir tambahkan sebuah fungsi pada file message_model.php


	function send_filtered_msg($data)
	{	//print_r($data);die;
        if($this->config->item('disable_outgoing'))
        {
            echo "
Outgoing SMS Disabled
"; return; } $keyword_found = false; foreach($data['keyword'] as $keyword){ if(preg_match('/\b'.$keyword.'\b/i', $data['smsdata'])){ $keyword_found = true;break; }else{ $keyword_found = false; } } //print_r($data);var_dump($keyword_found);die; if($data['dest']!=NULL && $data['date']!=NULL && $data['smsdata']!=NULL && $keyword_found && $data['dest'] != '+62818260594') { // Check message's length $messagelength = strlen($data['message']); // Check coding switch($data['coding']) { case 'default': $standar_length = 160; $data['coding'] = 'Default_No_Compression'; break; case 'unicode': $standar_length = 70; $data['coding'] = 'Unicode_No_Compression'; break; } $UDH_length = 7; $multipart_length = $standar_length - $UDH_length; // Multipart message if($messagelength > $standar_length) { // generate UDH $UDH = "050003"; $UDH .= strtoupper(dechex(mt_rand(0, 255))); $data['UDH'] = $UDH; // split string $tmpmsg = str_split($data['message'], $multipart_length); // count part message $part = count($tmpmsg); if($part < 10) $part = '0'.$part; // insert first part to outbox and get last outbox ID $data['option'] = 'multipart'; $data['message'] = $tmpmsg[0]; $data['part'] = $part; $outboxid = $this->_send_message_route($data); $this->Kalkun_model->add_sms_used($this->session->userdata('id_user')); // insert the rest part to Outbox Multipart for($i=1; $i_send_message_multipart($outboxid, $tmpmsg[$i], $i, $part, $data['coding'], $data['class'], $UDH); $this->Kalkun_model->add_sms_used($this->session->userdata('id_user')); } } else { $data['option'] = 'single';//print_r($data);die; $this->_send_message_route($data); $this->Kalkun_model->add_sms_used($this->session->userdata('id_user')); } } }

Sedikit penjelasan dari perubahan pada tiga file di atas.
pada file daemon.php ditambahkan pengecekan apakah fitur sms_filtered sudak aktif, jika sudah akhif akan memanggil fungsi untuk mengecek sms yang masuk apakah terdapat kata-kata yang sesuai dengan keyword, jika ada maka akan langsug mengeksekusi / me-reply sesuai conten pada kalkun_settings.php.

kekurangan :
1. untuk perubahan keyword dan content auto reply masih harus menuliskan pada file kalkun_settings.php.

Download sms_filtered.tar.bz2

Komentar

  1. mungkin ada yang salah di message_model.php, saya jalankan jadi g bisa

    BalasHapus
  2. wah,, ada unduhan buat soucecode nya ga..? boleh di coba nieh tutorialnya.

    BalasHapus
  3. Thanks postingannya, artikel ini akan membantu saya dlm membuat autoreplay sms dgn kalkun

    BalasHapus

Posting Komentar

Postingan populer dari blog ini

Getting Better Accuracy with Google Maps API v3

mengaktifkan library cURL php

Membuat alias web server di ubuntu