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
Search kısımına @BotFather yazıyoruz ve konuşmayı start ile başlatıyoruz.
Resim-2
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
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
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
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.
Resim-6
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.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs: sql, SQL Server, sql server notification send telegram, sql telegram
Merhaba;
Öncelikle bu bilgi için çok teşekkürler. Benim sorum şu yönde;
SQL tabanlı bir depo ve rapor yazılımı kullanıyoruz. Buradaki raporları anlık olarak telegram grubuna aktarmak istiyoruz. Bir yede görmüştüm telegram grubuna “raporver” şeklinde bir mesaj atıyor ve detaylı olarak hazırlanan rapor telegram grubuna mesaj olarak geliyor. Bunu nasıl sağlayabiliriz?