Sql’den SMS Göndermek için sp_OACreate ile xmlHttp kullanımı
Tüm çözümler ihtiyaçlardan doğar.
Müşterinizden yeni bir sipariş geldiğinde bazı personellerinizi uyarmak istiyorsunuz. Mail kullanmayan bir yöneciniz var günlük satış özetini sms olarak göndermek istiyorsunuz. Depoda ürün kritik stoğun altına düştüğünüzde sahada olan satınalmacının uyarılması gerekli. Programınızda iki adımlı kimlik doğrulama ihtiyacınız var ama eski bir program veya programı kodlayan siz değilsiniz. Programızda bir kayıt olduğunda, değiştiğinde veya silindiğinde yani verilerinizde olabilecek herhangi bir durumda uyarı almanız gerekli vs.
Bunun için her hangi bir yazılım yapmadan veritabanı üzerinden arka planda bu işleri çok daha hızlı (En az %30) ve daha kolay halledebilirsiniz.
Her ne kadar yazacağımız örnek kodlarda sms gönderim yaptıysakda aslında kullandığımız kodlar OLE Automation prosedürleri olan sp_OACreate vb. bu kodlar ile çok daha fazla şeyler yapabilirsiniz.
Bunun için ilk önce sql’de kullanacağımız parametreleri, değişkenleri tanımlıyoruz.
Aşağıdaki kodda parametre ve değişkenler diye ayırdım çünkü bir prosedür oluşturup göndermek isterseniz ilgili değişkenleri alıp smsGonder(‘gsm’,’mesaj’) gibi gönderim yapabilirsiniz. Test için kullandığım gsm operatörünüde gizledim reklam olmasın. Mesajla bilgi verebilirim fakat sms gönderimi için kullandığınız gsm şirketinden api dosyalarını alıp aşağıdaki kodlara göre düzenleyebilirsiniz.
Gsm operatörü url ve api’ye gönderilecek xml verisi çok fazla değişmeyeceğinden baştan onları set ediyoruz.
sp_OACreate ile Microsoft XMLHttp’yi create ediyoruz. Eğer başarılı bir şekilde oluşturuldu ise istek 0 olacaktır. Eğer işlem başarısız oldu ise sonraki işlemleri çalıştırmadan OLE Automation prosedürünü sonlandırıyoruz.
Gsm operatörünün api adresini açıyoruz. Eğer yine bir hata oluşmuş ise bu işlemde sonlandırıyoruz.
Api sayfasını açtıktan sonra gönderilecek verinin header bilgilerini set ediyoruz bir http isteğinde bulunuyoruz. Bir cookie, json web token vb. bir header set etmeniz gerekir ise buradan çoğaltabilirsiniz. Kullandığım abi sadece Content-Type isteği için benden ben sadece bunu yazdım.
Api sayfasını başarılı şekilde açtık. Başarılı bir şekilde isteğin header bilgisini set ettik artık tanımladığımız xml verisini api’ye post edebiliriz. Aşağıdaki şekilde post işlemini yapıyoruz. Yine hata oluşması durumunda sonlandırıyoruz.
Aslında buraya kadar gönderimi yaptık bundan sonraki alanlar zorunlu değil. Fakat api sayfası hatalarını yakalamak için ben genelde aşağıdaki komudu kullanıyorum. status ile api sayfası durumunu alıyoruz Eğer 200 ise başarılı bir şekilde çalıştığını gösterir. 404 ise sayfanın değiştiğini veya yanlış adrese gönderildiğini, 500 ise gsm operatöründe kaynaklı bir arıza olduğunu anlayabilirsiniz. Daha fazlası için (Http durum kodlarını araştırın)
Artık gönderimin sonucunu almaya geldi iş. Kullandığım api/gsm operatörü bana 00,70 gibi kodlar döndürdüğü için mesajı daha anlamlı hale getirmek istedim. Bu sebep ile aşağıdaki gibi bir select case..when kullandım siz direkt dönen değeri raporlayacaksınız set @sayfaMesaj ifadesi gereksizdir.
Kodlarımızı yazarken hata durumlarında kullandığımız goto bizi buraya götürüyordu. Aynı zamanda işlem başarılı olduğunda da bu kod çalışacaktır.Ole Autamation prosedürünü sonlandırmak için sp_OADestroy kullanıyoruz.
Ayrıca gönderim sonucunda bir işlem yapacaksanız yine bu bölümde yapabilirsiniz. Ben raporlamak için select cümlesi kullandım siz bu bölümde sms gönderim değerlerini bir tablodaki veriyi update etmek veya raporu bir yere insert etmek isterseniz kullanabilirsiniz.
Kodun çıktısı aşağıdaki şekilde olacaktır.
Kodların tamamını bu adresten indirebilirsiniz. http://37bilisim.com/Makaleler/sqlSmsGonderimi.txt
Bu kodların çalışabilmesi için Ole Automation prosedürlerine kullanıma açmanız yetkili bir kullanıcı ile giriş yapmış olmanız gerekmektedir. Bu prosedürleri açmak için aşağıdaki kodu kullanabilirsiniz. Kapatmak için değeri 0 atayabilirsiniz. İşlem yapmadan önce açıp işlem sonunda kapatmanızı öneririm.
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
#sqlServer #pratikSql #azKullanılanlarYazıDizisi #goto #OleAutomation #xmlHttp #sp_OACreate #sp_OAMethod #sp_OAGetProperty #sp_OADestroy