Php ile Toplu Sms Göndermek

Değerli dostlarım merhabalar, bu yazımda Php ile Toplu Sms nasıl gönderilir? onu öğreneceğiz. Biliyorsunuz ki Php ile nasıl Sms gönderilir ilem ilgili yazım oldukça popüler oldu ve bu yazım defalarca tıklanadı. Php ile Sms göndermek ile ilgili yazıma buradan ulaşabilirsiniz.

Ama gelen yorumlara baktığımda ise toplu Sms nasıl gönderilir? şeklinde birden fazla yorumlar geldi. Bu işlemi yapmak için fonksiyonumuzu döngüye sokmak yeterli olacaktır. Ama fonksiyonumuzu döngüye sokmak sunucumuzu bi hayli yoracak ve belirli bir sayıdan sonra sistemimiz hata verecektir.

Peki binlerce numaraya mesajı sunucumuzu yormadan aynı anda nasıl göndereceğiz? Bununda bir yöntemi var tabiki. Öncelike Php ile Sms göndermek için bir operatöre ihtiyacımız var. Ben İleti Merkezi’ni kullanıyorum ve oldukçada memnunum. Bu zamana kadar herhangi bir problem yaşamadım.

Şimdi öncelikle sms.class.php adında dosya oluşturup aşağıda yer alan örnek kodlarımızı ekleyelim.

<?php 
  /**
  * hüseyin yaman 
  * www.huseyinyaman.com
  * php sms class 
  */
class smsGonder 
{
    private $username = 'API KULLANICI ADI';
    private $password = 'API ŞİFRE';
    private $title    = 'SMS BAŞLIĞINIZ';
    private $reqSendLink      = 'http://api.iletimerkezi.com/v1/send-sms';
    private $reqBalanceLink   = 'https://api.iletimerkezi.com/v1/get-balance';
    private $reqReportLink    = 'https://api.iletimerkezi.com/v1/get-report';
  function sendRequest($reqLink,$send_xml,$header_type)
  {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$reqLink);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$send_xml);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,2);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_HTTPHEADER,$header_type);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);
    $result = curl_exec($ch);
    return $result;
  }

  function topluSms($numbers, $message)
  {
   foreach ($numbers as $number) {
    $nmbrs.= "<number>". $number ." </number>";
  }
     $xml = <<<EOS
         <request>
           <authentication>
             <username>{$this->username}</username>
             <password>{$this->password}</password>
           </authentication>
           <order>
               <sender>{$this->title}</sender>
               <sendDateTime></sendDateTime>
               <message>
                   <text>{$message}</text>
                   <receipents>
                       {$nmbrs}
                   </receipents>
               </message>
           </order>
         </request>
EOS;
    $result = $this->sendRequest($this->reqSendLink ,$xml,array('Content-Type: text/xml'));
    $xml = simplexml_load_string($result);
    
    return $xml->status->code;
    die();
  }
}

Ekleme işleminin hemen ardından operatörümüzde ki kullanıcı adı, şifre ve sms başlığımızı değiştirelim.

Şimdi burada önemli olan fonksiyonumuza dizi değişken göndermek. Dizi değişkenimiz fonksiyonumuz çalıştığında gönderilen numaraları <receipents> tag’ları arasına numaraları ekleyecektir.

Şimdi bir örnek ile fonksiyonumuza dizi değişken içerisinde veri yollayalım. Yapmamız gereken ilk iş gönder.php adında bir dosya oluşturmak ve aşağıda yer alan kodları yapıştırmak.

require_once ('sms.class.php');
$sms = new smsGonder;

$numaralar = ['05332221111', '05559998877', '05441112233'];
$mesaj  = 'Bu bir test mesajıdır';

$cevap = $sms->topluSms($numaralar, $mesaj);
if ($cevap == '200') {
   echo "Mesaj Gönderildi";
 }else {
   echo "Mesaj Gönderme Hatası $cevap";
}

Yukarıda yer alan örnek kodumuzda topluSms fonksiyonumuzu dizi değişken içerisinde numaralar gönderdik. Fonsiyonumuz ise dizi değişken içerisindeki numaraları foreach yardımı ile <number> tag’ları içerisine alıp <receipents> tag’ları içerisine yazdırdı.

Bu şekilde aynı aynda sunucumuzu kasmadan binlerce kişiye Php ile Sms göndermiş oluyoruz. Yorumlarınızı muhakkak beklemekteyim. Diğer bir örnek uygulamamızda görüşmek üzere değerli dostlar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Shares