PHP ile SMS API Kullanarak İletişim Formu Oluşturma
İnternetin ve web sayfalarının gelişmesi ile müşteriler daha hızlı cevap ve gerçek zamanlı iletişim beklemektedirler. Firmaların iş akışlarını otomatize etmek ve müşterileriyle daha hızlı iletişime geçmek zorunlu hale gelmiştir.
Birçok firma bu dönem değişiminde başarılı olabilmek için web sayfalarının iletişim formlarını SMS bildirim sistemiyle entegre etmektedir. Bu sayede müşteri soruları, şikayetleri veya teklifleri ilgili personele anında SMS ile iletilmektedir.
İletişim Formu ve SMS Bildirim İntegrasyonunun Önemi
Yazılımlar ve web sayfalarında müşteri iletişim formları, müşteri soruları, şikayetleri ve tekliflerin alındığı kritik bir bölümdür. İletişim formundan gelen sorulara hızlı cevap verilmesi:
- Müşteri memnuniyetini doğrudan etkiler
- Satış fırsatlarının kaybedilmesini önler
- İşletmenin profesyonel imajını pekiştirir
- İşletmenin yanıt verme hızını gösterir
SMS Bildirim Entegrasyonunun Faydalı
SMS API entegrasyonu sayesinde iletişim formu doldurulduğu anda ilgili kişi veya kişilere SMS gönderilebilir. Bu şekilde:
- İletişim formundan gelen sorular gerçek zamanlı olarak kişileri bilgilendirir
- İnsan hatası nedeniyle bildirimin unutulması riski ortadan kalkır
- Tüm sorular eşit şekilde izlenmiş olur
- Hızlı yanıt süresi sağlanır
Adım Adım İletişim Formu Yapımı
Aşağıda detaylı olarak iletişim formunun nasıl oluşturulacağı ve SMS API ile nasıl entegre edileceği anlatılmaktadır.
Adım 1: HTML Formu Oluşturma
İlk olarak iletişim formumuzun HTML kısmını hazırlamaya başlayacağız. Tasarımın düzenli gözükmesi için Bootstrap CSS kütüphanesini ve asenkron istekler için jQuery kütüphanesini kullanacağız.
İlk sayfamızı iletisim.html adında oluşturalım ve HTML kodlarını ekleyelim:
Dosya Adı: iletisim.html
Bu dosyada Bootstrap CSS kütüphanesi, jQuery ve form işlevselliği için JavaScript kodları bulunmaktadır:
<meta charset="utf-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
// iletisim formundan gelen verileri sms gonderiminin yapilacagi sayfaya gonderen kisim
function formuGonder() {
var form_verisi = $('#iletisim_formu').serialize();
$.ajax({
type: 'POST',
url: 'iletisim_sms_gonder.php',
data: form_verisi,
success: function(ajaxResponse) {
var result = ajaxResponse.split(':');
if(result[0]=='success') {
//Eger sms gonderimi basariliysa kullaniciya basari mesajini gosteriyoruz
$('#error_success').show();
$('#error_success').html(result[1]);
} else {
//Eger sms gonderimi basarili degilse kullaniciya uyari mesajini gosteriyoruz
$('#error_danger').show();
$('#error_danger').html(result[1]);
}
}
});
}
</script>
<title>İletişim Formu</title>
<div class="container">
<div class="starter-template">
<form id="iletisim_formu" class="form-horizontal">
<h3>İletişim</h3>
<h6>Görüş, öneri ve şikayetleriniz için formu doldurarak bizimle iletişime geçebilirsiniz.</h6>
<div id="error_success" style="display:none;" class="alert alert-success" role="alert"></div>
<div id="error_danger" style="display:none;" class="alert alert-danger" role="alert"></div>
<div class="form-group">
<label for="ad-soyad" class="col-sm-1 control-label">Ad Soyad</label>
<div class="col-sm-6">
<input type="text" class="form-control" name="ad-soyad" id="ad-soyad" placeholder="Ad Soyad">
</div>
</div>
<div class="form-group">
<label for="email" class="col-sm-1 control-label">Email</label>
<div class="col-sm-6">
<input type="text" class="form-control" name="email" id="email" placeholder="Email">
</div>
</div>
<div class="form-group">
<label for="telefon" class="col-sm-1 control-label">Telefon</label>
<div class="col-sm-6">
<input type="text" class="form-control" name="telefon" id="telefon" placeholder="Telefon">
</div>
</div>
<div class="form-group">
<label for="mesaj" class="col-sm-1 control-label">Mesaj</label>
<div class="col-sm-6">
<textarea name="mesaj" class="form-control" rows="3"></textarea>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-1 col-sm-6">
<button type="button" onclick="formuGonder();" class="btn btn-default">Gönder</button>
</div>
</div>
</form>
</div>
</div>
HTML Dosyasının Açıklaması:
- Kütüphane Eklemeleri: Bootstrap CSS kütüphanesini ve jQuery kütüphanesini
<head> bölümüne ekledik
- JavaScript Fonksiyonu:
formuGonder() adlı fonksiyon, form verilerini AJAX ile SMS gönderim sayfasına iletmektedir
- Form Alanları: Ad-soyadı, e-mail, telefon ve mesaj alanlarını Bootstrap sınıflarına uygun şekilde oluşturduk
- Gönder Butonu: Kullanıcının formu göndermesi için bir buton ekledik ve
onclick özelliği ile JavaScript fonksiyonunu çağırdık
- Hata Yönetimi: Başarı ve hata mesajlarını göstermek için div alanları ekledik
formuGonder() fonksiyonunun görevi:
- Form verilerini serialize ederek almak
- AJAX POST isteği yaparak PHP sayfasına göndermek
- Dönüş cevabına göre başarı veya hata mesajı göstermek
Adım 2: PHP ile SMS API Entegrasyonu
Dosya Adı: iletisim_sms_gonder.php
Bu PHP dosyasında İleti Merkezi SMS API aracılığıyla gerçek SMS gönderimi yapılmaktadır:
<authentication>
<username>{$username}</username>
<password>{$password}</password>
</authentication>
<order>
<sender>{$orgin_name}</sender>
<senddatetime>01/05/2013 18:00</senddatetime>
<message>
<text><!--[CDATA[Sitenizin iletişim formu dolduruldu, {$ad_soyad} size mesaj gönderdi.]]--></text>
<receipents>
<number>{$yonetici_telefonlari[0]}</number>
</receipents>
</message>
</order>
EOS;
// <number>{$yonetici_telefonlari[1]}</number>
$result = sendRequest($xml);
$array = XML2Array::createArray($result);
if($array['response']['status']['code']=='200') {
die('success:İşleminiz başarıyla yapılmıştır.');
} else {
die('fail:'.$array['response']['status']['message']);
}
PHP Dosyasının Detaylı Açıklaması:
1. XML2Array Kütüphanesi Ekleme
PHP sayfamızın başında, API çağrısı yaptığımızda dönen XML cevabını diziye dönüştürecek bir kütüphane kullanıyoruz.
Kütüphaneyi buradan indirebilirsiniz.
Bu kütüphane sayesinde XML'deki değerleri PHP kodunda daha rahat bir şekilde işleyebiliriz.
2. sendRequest Fonksiyonu
SMS API'ye istek yapan sendRequest() fonksiyonu, cURL aracılığıyla PHP yazılımınızdan İleti Merkezi sunucusuna veri göndermektedir.
cURL, PHP eklentisi olup çoğu sunucuda yüklü ve aktif durumdadır. Eğer hata alırsanız, sunucu yöneticiniz cURL eklentisini etkinleştirmesi gerekebilir.
3. Form Verilerini Alma ve Hazırlama
Gelen form verilerini alarak API isteği için gerekli parametreleri hazırlıyoruz:
- Müşteri adı-soyadı
- E-mail adresi
- Telefon numarası
- Mesaj içeriği
- Uyarılacak kişilerin telefon numaraları (firma çalışanları)
Telefon numaralarını eklerken format zorunluluğu yoktur. Başında 90 veya aralarında "-" veya "." işaretleri olması gönderimi engellemez.
4. XML Veri Yapısı Oluşturma
SMS API'sine göndermek için XML formatında veri oluşturuyoruz. Burada dikkat edilmesi gereken en önemli nokta:
Mesaj alanında Türkçe karakterler veya özel karakterler kullanıldığında XML yapısını bozmamak için <![CDATA[...]]> etiketi içine mesajı sarmalıyoruz.
5. API Çağrısı ve Cevap İşleme
XML veriyi API'ye gönderdikten sonra:
- Dönen XML cevabını XML2Array kütüphanesi ile diziye çeviriyoruz
- Durum kodunu kontrol ederek işlemin başarılı olup olmadığını anlıyoruz
- Başarı veya hata mesajını kullanıcıya iletiyoruz
Adım 3: Birden Fazla Alıcıya SMS Gönderme
Oluşturduğumuz XML yapısında basit değişiklikler yaparak birden fazla kişiye aynı anda SMS gönderilebilir.
Tek Alıcıya Gönderim:
<receipents>
<number>905301234567</number>
</receipents>
Birden Fazla Alıcıya Gönderim:
<number> etiketini tekrarlayarak birden fazla kişiye toplu SMS gönderebilirsiniz:
<receipents>
<number>905301234567</number>
<number>905309876543</number>
<number>905319876543</number>
</receipents>
Bu sayede iletişim formu doldurulduğunda aynı SMS mesajı birden fazla firma çalışanına aynı anda iletilecektir.
Adım 4: API Cevabının İşlenmesi
SMS gönderirken İleti Merkezi sunucusundan aşağıdaki gibi bir XML cevabı alırız:
<response>
<status>
<code>200</code>
<message>İşlem başarıyla tamamlandı</message>
</status>
<order>
<id>12345678</id>
</order>
</response>
Cevabın Anlamı:
- code: İşlemin sonucunu belirtir. 200 başarıyı gösterir
- message: İşlem hakkında detaylı bilgi mesajı
- id: İletilen SMS'nin takip numarası
Adım 5: Sonuç Mesajını Kullanıcıya Gösterme
İşlem başarılı olup olmama durumuna göre, formuGonder JavaScript fonksiyonu yardımıyla işlemin sonucunu kullanıcıya gösteririz.
Gerçek Hayat Senaryosu için Ek Öneriler
Bu temel örneği kendi ihtiyaçlarınıza göre geliştirirken dikkat etmeniz gereken noktalar:
1. Güvenlik Önlemleri
Form verilerini direkt olarak işlemeden önce:
- Gelen verileri kontrol edin (SQL Injection, XSS koruması)
- Telefon numarası formatını doğrulayın
- E-mail adres formatını kontrol edin
2. SMS Mesaj Boyutu Kontrolü
SMS'in boyutuna göre ücretini hesaplayın:
- 160 karaktere kadar = 1 SMS
- Her 153 karakterlik ek = 1 ek SMS
3. Kütüphaneleri Güncelleme
XML2Array gibi eski kütüphaneler yerine modern JSON tabanlı API çözümleri tercih edebilirsiniz.
4. Hata Yönetimi
Farklı hata kodlarına karşı detaylı hata mesajları hazırlayın ve logging sistemi kurarak sorunları takip edin.
Sonuç
Bu örneğini kullanarak web sitenizin iletişim formunu SMS bildirim sistemiyle entegre edebilir ve müşteri iletişimini otomatikleştirebilirsiniz. Form verilerinizi değiştirerek kendi iş akışınıza uyarlayabilir ve müşteri deneyimini önemli ölçüde iyileştirebilirsiniz.
SMS API ile entegrasyona başlayın
Detaylı dokümantasyon ve örnek kodlarla dakikalar içinde entegre edin.
Dokümantasyona Git
28 Temmuz 2015