SMPP Protokolü ve SubmitSm Komutu

Batuhan Düzgün tarafından yayınlanmıştır 29. May 2012 08:08

Merhaba arkadaşlar SMPP Protokolü ile ilgili temel yazıların devamı niteliğinde olan bir konu ile karşınızdayım. Bu yazıda toplu SMS gönderimi için çok önemli olan bir SMPP komutundan bahsedeceğim. SubmitSm komutu toplu SMS gönderimi için bel kemiği niteliğinde bir komuttur. Çünkü, SMS istekleri bu komut ile ifade edilir ve SMSC’ ye (Short Message Service Center) gönderilir.

SubmitSm Komutu ve Yapısı ...

SubmitSm komutu diğer SMPP komutları gibi standart başlık (Header) yapısını barındırır. Buna ek olarak gövde (Body) ve TLV parametreleri eklenir.  Gövde  (Body) alanı eklenmesi zorunludur. TLV parametreleri isteğe bağlı olarak eklenebilir. Ama unutmayalım ki her TLV paketinin bir işlvei ve SMPP Protokolünde bir karşlığı vardır.

 

Yukarıdaki başlık bilgisi eklendikten sonra SMS gönderiminde, SMS’i tanımlayacak olan parametreleri barındıran gövde paketi eklenir. Gövde (Body) paketine yazılacak olan bilgiler SMS ile ilgili bir çok özelliğin SMSC tarafından yorumlanmasını ve ona göre işlevler gerçekleştirmesi beklenir. Biliyorum ki bu kelimler fazlaca soyut. Aşağıda Gövde (Body) paketini açıkladıktan sonra bir örnekle herşey daha net anlaşılacaktır.

SubmitSm Gövde Yapısı 
 

Yukarıdaki Gövde yapısı aslında ilk bakışta devasa gelebilir. Fakat, SMPP protokolde SMS’e dair bir çok parametre yer almaktadır. Bu nedenle gövde yapısı oldukça büyüyebilir. Tabi bu komutlar için geçerlidir. Mesela UnBind komutunda gövde yapısı başlık yapısından ibaretti. SubmitSm için hazırlanmış olan gövde yapısı temel olarak, protokol, iletim tipleri, kaynak ve hedef telefon numaralarına dair bilgiler, karakter seti, dil bilgisi, karakter kodlama bilgileri ve SMS’e ait bazı önemli parametreler yer alır. Aslında bu paket yapısında SMS ile ilgili en önemli özellikler sırayla aşağıda detaylıca anlatılmıştır.

Kaynak ve Hedef Telefon Numaraları

Bu alan SMS gönderimi yapacak olan telefon numarasına dair TON, NPI ve numara bilgisini tutar. Ton ve Npi için aşağıda SMPP protokolü standart değerleri verilmiştir. 
 

Yukarıda yer alan bilgileri örnekleyecek olursak, şöyle bir senaryo yapalım. Hepiniz bilirsinizki, bir çok reklam SMS’inde cep telefonunuza geldiğinde, numara bilgisi yerine “XYZ Market” şeklinde bir alfanumerik değerler yazar. İşte bu tarzda değişikliklerin yapıldığı kısım, TON ve NPI bilgilerinin değiştirilmesi ve uygun değerlerin atanmasıyla olacaktır. Şirkete ait SMS başlık bilgisi :

“BATUX YAZILIM“

SMS metni :

“BATUX Yazılım A.Ş. bünyesinde çalışmak üzere kıdemli yazılımcılar alınacaktır. CV’niz ile başvurup sıra dışı bir iş fırsatını yakalayabilirsiniz.”

Hedef Numara :

905085227273

Türünde bir SMS atmak istenildiğinde, kaynak numara (SMS’i gönderen numara) için TON ve NPI değerleri aşağıdadır.

TON : 0x05 (AlphaNumeric  Format) ,   NPI : 0x01 (ISDN Formatı)   Numara : “BATUX YAZILIM”

Hedef numara için gerekli olan TON ve NPI bilgileri aşağıdaki gibidir.

TON : 0x01 (International Format) (Hedef numara numerik olduğu için yapıldı.)

NPI : 0x01 (ISDN Formatı) Numara : 905085227273

Şeklinde bir örnek verilebilir.

ESM Class Değeri

ESM Class değeri 8 bit’ten oluşur. Bu 8 bit SMS için 3 işlevi gerçekleştirmek için 3’e ayrılmıştır. Aşağıda bitsel ayrıştırma örneği verilmiştir.

İlk 2 bit Messaging Mode içindir.

Sonraki 4 bit Message Type içindir.

Son 2 bit ise GSM Network Specific  Features içindir.

Message Mode

Message Mode SMS iletim yönteminin nasıl olacağını belirtir.Aşağıda belirtildiği kadar iletim modu bulunmaktadır. 8 bitlik Esm Class parametresinin ilk iki bitiyle temsil edilir.

x x x x x x    0 0   ilk iki bit 00 ise Default SMSC Mode’u ifade eder. Yani SMSC’deki iletim modu ne ise ESME’de bunu kabul eder.

x x x x x x   0  1  ilk iki bit 01 ise  Datagram Mode’ u ifade eder. İletim modunun Datagram Mode olarak ayarlanır.

x x x x x x   1  0  ilk iki bit 10 ise Forward Mode’u  ifade eder. İletim modunun Forward Mode olarak ayarlanır.

x x x x x x   1  1  ilk iki bit 11 ise  Store and Forward Mode’u ifade eder. İletim modunun Store and Forward olarak ayarlanır. En sık kullanılan iletim modudur.

Message Type

SMS tipinin ne olacağını belirtir. Örneğin : Deliver Report olarak belirtip gelecek olan SMS’in iletildi raporu olarak verilmesini sağlar. Esm Class değerinin ilk iki bitinden sonra gelen 4 bit ile temsil edilir.

x x  0 0 0 0 x x   değeri  Default Message Type ifade eder.

x x  0 0 1 0 x x   değeri  ESME Delivery Acknowledgement  eder. İletildi raporu tipinde SMS’i ifade eder

x x  0 1 0 0 x x   değeri  ESME  Manual / User Acknowledgement  ifade eder. Mobil telefonlardan kullanıcının gönderdiği SMS tipidir. Buna en güzel örnek 8080’e yaz gönder kampanyalarıdır. Telefonunuzdan 8080’e veya başka kampanya numarasına gönderdiğiniz SMS tipidir.

GSM Specific Network Features

Özellikle parçalı SMS gönderiminde önemli bir alandır. Çünkü, parçalı SMS’lerde UDH bilgisi eklenir. Böylece, cep telefonlarına gelen parçalı SMS’ler bu UDH başlıklarına bakılarak birleştirilir ve SMS bütün olarak görülür.

0 0 x x x x x x   UDH paketi olmayacağını belirtir.

0 1 x x x x x x  UDHI paketi olacağını belirtir.

1 0 x x x x x x 

1 1 x x x x x x

Yukarıdaki alanlar birleştirilerek Esm Class değeri oluşturulur.

Data Coding Alanı

Data coding alanı SMS için dil ayarları, karakter seti,  karakter kodlaması gibi işlevleri belirler. Aşağıda detaylıca verilmiştir.

İlk 2 bit MessageClass değerlerini verir.

Sonraki 2 bit Dil seçeneğini verir. Unicode, Gsm 7 Bit gibi dil ayarları.

Sonraki  bit (5. Bit) Message Class içerip içermeyeceğini belirtir.

Sonraki bit (6. Bit)  verinin sıkıştırılmış olup olmadığını belirtir.

Örnek Data Coding aşağıdaki gibidir.

0 0 0 1 0 0 0 1  

İlk iki bit  01 MessageClass1 değerini ifade eder. MessageClass1 SMS’in inbox’a düşeceğini belirtir.

Sonraki iki bit 00 değerindedir. GSM 7 Bit ifade eder genelde. Ama 00 değeri varsayılan SMSC alfabesini temsil eder.

5. bit ise MessageClass bilgisi içereceğini belirtir ki bizde MessageClass1 kullandık.

Şimdide bunca teorik bilgiyi biraz Java koduyla pekiştirelim. Kullanılacak olan API OPENSMPP ‘dir. Aşağıda kodlar verilmiştir. 
 
 
 

Umarım yararlı bir makale olmuştur. Bir sonraki makalemde görüşmek dileğiyle …

Batuhan Düzgün

Bilgisayar Mühendisi

Endüstri Mühendisi 

Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

SMPP Protokolü

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  July 2018  >>
MoTuWeThFrSaSu
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

Yazıları geniş takvimde göster