Rabu, 09 Maret 2016

Auto Reply with Filtering Kalkun

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

Tidak ada komentar:

Posting Komentar