SQL Server ile Telegram’a Bildirim Gönderin

Merhabalar,

Bugün sizlere SQL Serverı yönetirken elde ettiğiniz bildirimleri nasıl telegram’a gönderebileceğinizi anlatıyor olacağım. Geçmiş dönemde zaten bu tarz bildirimleri mail,slack gibi ortamlara gönderilmesi ile ilgili olarak içerikler hazırlamıştık.

Öncelikli olarak ilk yapmamız gereken tabi ki bir telegram hesabına sahip olmak. Telegram hakkında da temel bilgi vermek isterim. Hepimizin kullandığı WhatsApp tarzı bir mesajlaşma platformudur ve her iki ürünü birbirlerinden ayıran farklı özellikleri söz konusudur. Konu içerisinde anlatacağımız bildirim gönderimini whatsapp’den yapmak için WhatsApp business’a yada farklı ara yazılımlara ihtiyaç duyabilmekteyiz.

Telegram hakkında bilgi paylaştıktan sonra yapmamız gereken telegram içinde bildirim gönderimini yapabilmek için bir token ve bir chat_id elde edebilmek. Bunun için web.telegram.org adresine giriş yapıyoruz.

Resim-1 web.telegram.org

Search kısımına @BotFather yazıyoruz ve konuşmayı start ile başlatıyoruz.

Resim-2 @BotFather özellikleri

Yukarıdaki resimde görüldüğü gibi @BotFather ile aslında bir çok içeriğe yönelik destek alabiliyoruz. Bizim yapmak istediğimiz yeni bir bot oluşturmak. Bunun için /newbot yazıyoruz. Bizden ilk önce bot için bir isim daha sonrasında da bot için bir username bilgisi istiyor.

Resim-3 Bot Bilgileri

Resim3 özelinde dikkat edilmesi gereken kısım username bilgisinin _bot ile bitme zorunluluğunun olması ve yine aynı resimde size bu botu kullanmanız için ihtiyaç duyacağınız http API bilgisini veriyor olması, bu bilgiyi not almayı unutmayın!

Sırada Chat_id bilgisinin alınması var. Bunun için resim-2 de verdiğimiz username arayıp kendisine bir merhaba demeliyiz ki bize alınmasın. (Arayıp bulup,start diyoruz.)

Resim-4 Merhaba Bot

Oluşturduğumuz botumuza Merhaba dedikten sonra yapmamız gereken aşağıda vereceğim adresi yeni bir browser sekmesinde düzenleyip açmanız gerekiyor.

https://api.telegram.org/bot<HTTPTOKENAPI>/getUpdates

Burada <HTTPTOKENAPI> yazan kısımı Resim3 de gördüğümüz HTTPAPI bilgisi ile değiştiriyoruz. İşleme devam edince karşımıza aşağıdaki gibi bir ekran geliyor.

Resim-5 Chat_id bilgisi elde etme

Telegram üzerinden yapılması gerekenleri tamamladık, şimdi elimizde bir Token bilgisi bir de Chat_id bilgisi var. Bu iki bilgiyi kullanarak SQL Server’da http post request yapıp bildirimimizi göndereceğiz. Bu işlem için öncelikli olarak SQL Server tarafında Ole nesnelerinin kullanımı açmamız gerekmekte.  Aşağıdaki kod bloğu ile bu işlemi gerçekleştirelim.

EXEC sp_configure ‘Ole Automation Procedures’, 1;
GO
RECONFIGURE;
GO

Şimdi ise bildirimi yapacağımız sorgumuzda sıra, Sorguda değiştirilmesi gereken iki kısım mevcut. Elimizde bulunan Token ve Chat_id bilgilerini girip istediğimiz bildirimi yazıp sorguyu çalıştırıyor olacağız. (@TelegramToken ve @TelegramChatId bilgilerini doldurmalısınız!)

DECLARE @responseText NVARCHAR(2000);
DECLARE @responseXML NVARCHAR(2000);
DECLARE @ret INT;
DECLARE @status NVARCHAR(32);
DECLARE @statusText NVARCHAR(32);
DECLARE @token INT;
DECLARE @url NVARCHAR(256);
declare @TelegramToken NVARCHAR(256);
declare @TelegramChatId NVARCHAR(32)
declare @TelegramMesaj  NVARCHAR(32)

set @TelegramToken =”
set @TelegramChatId = ”
set @TelegramMesaj = ‘Çağlar Özenç – DMC Bilgi Teknolojileri ‘

SET @url = ‘https://api.telegram.org/bot’ + @TelegramToken +’/sendMessage?chat_id=’+@TelegramChatId+’&parse_mode=Markdown&text=CAGLAROZENCSQLServer-DMC’;

— Open the connection.
EXEC @ret = sp_OACreate ‘MSXML2.ServerXMLHTTP’, @token OUT;
IF @ret <> 0 RAISERROR(‘Unable to open HTTP connection.’, 10, 1);

— Send the request.
EXEC @ret = sp_OAMethod @token, ‘open’, NULL, ‘POST’, @url, ‘false’;
EXEC @ret = sp_OAMethod @token, ‘setRequestHeader’, NULL, ‘Authentication’, null;
EXEC @ret = sp_OAMethod @token, ‘setRequestHeader’, NULL, ‘Content-type’, null;
EXEC @ret = sp_OAMethod @token, ‘send’, NULL, null;

— Handle the response.
EXEC @ret = sp_OAGetProperty @token, ‘status’, @status OUT;
EXEC @ret = sp_OAGetProperty @token, ‘statusText’, @statusText OUT;
EXEC @ret = sp_OAGetProperty @token, ‘responseText’, @responseText OUT;

— Show the response.

PRINT ‘Status: ‘ + @status + ‘ (‘ + @statusText + ‘)’;
PRINT ‘Response text: ‘ + @responseText;

— Close the connection.
EXEC @ret = sp_OADestroy @token;
IF @ret <> 0 RAISERROR(‘Unable to close HTTP connection.’, 10, 1);

Sorgu çalışması sonrasında işleminiz başarılı olduysa verdiğiniz bilgilendirme telegram’a gelecektir.

Resim6 Sonuc

Bu yöntemi kullanarak yönetiminizde olan SQL Server Veritabanı Sunucularında gelişen durumlardan hızlıca bilgi sahibi olabilirsiniz. Farklı geliştirmeler ile bildirimleri telegram gruplarına gönderebilir, sizin haricinizde bir çok kişiye anlık bilgilendirme yapmış olabilirsiniz.

Bir sonraki yazıda görüşmek üzere..

Bir cevap yazın

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