Bu makalede, Telegram Bot API kullanarak telegram mesajlarını Powershell ile otomatikleştirme ve bir mesajlaşma platformunu nasıl bir izleme ve yönetim aracına dönüştürebileceğimizden bahsedeceğim.
Telegram botları biraz incelediğimizde uygulamanın bir çok ortam ve sistem ile entegre çalışabildiğini görmekteyiz. Örneğin; kişi sistemde gerçekleştirilmesini istediği eylemi telegram botuna göndereceği bir mesajla kolaylıkla gerçekleştirebilir. Bu durumda da yalnızca sistem izlemek için değil aynı zamanda sistem yönetimi için de basit ve hızlı bir platform sağlamaktadır.
Aslında bir çoğumuz halihazırda Powershell scriptlerini, zamanlanmış görevler tanımlayarak rapor oluşturması ve bu raporları e-posta yoluyla iletmesi için kullanmaktayız. Fakat telegram bize bu rapor ve bildirimleri göndermesinin yanı sıra bizim sisteme müdahale edebilmemiz için de bir arayüz sağlamaktadır.
Bu makaleyi bir yazı dizisi şeklinde yayınlamayı tercih ettim, elimden geldiğince küçük parçalara bölüp sizlerle telegramın bot apisini powershell scriptler ile nasıl kullanılabileceğimizi aktarmak istiyorum.
Öncelikle telegramda nasıl bot oluşturalacağından bahsedip, powershell ile nasıl bağlantı kurulacağını göstereceğim. Sizlere de fikir vermesi açısından basit bir script ile Event loglardaki hata mesajlarının telegram kullanıcısına iletilmesini anlatacağım.
Telegram Bot Nasıl Oluşturulur?
Yapmanız gereken ilk şey hesabınız yoksa bir telegram hesabına sahip olmaktır. Telegramda bot oluşturmak için BotFather adı verilen başka bir bot ile mesajlaşma ekranını açmanız gerekmektedir. Bunun için arama çubuğuna BotFather yazın.
Resim- 1
Botfather ile bir mesajlaşma ekranı açtıktan sonra Start diyerek konuşmayı başlatın.
Resim- 2
- Yeni konuşma başladığında BotFather size yapabileceğiniz işlemlerle ilgili bir liste gösterecektir. Burada “/newbot” linkine tıklayarak ya da mesaj yazma kısmına “/newbot” komutunu yazarak yeni bir bot oluşturma işlemini başlatın.
Resim- 3
- Bu noktada, BotFather size botunuz için bir görünen ad tanımlamanızı isteyecektir. Görünen ad olarak istediğiniz şeyi yazmakta özgürsünüz. Bu değerin özgün olması gerekmemektedir. Örneğin ben oluşturduğum bot için “Powershell” ifadesini görünen ad olarak seçtim. Daha sonra BotFather size botunuz için bir kimlik adı seçmeniz gerektiğini söyleyecek. Bu adın özgün olması ve “_bot” ifadesi ile bitmesi gerekmektedir. Ayrıca daha sonra bu adı kullanarak botunuzu aratıp iletişimi başlatabileceksiniz.
- Bu işlemlerden sonra BotFather size işlemin bittiğini bildirecektir kısa bir açıklama ardından http API’yi kullanarak botunuza erişebilmeniz için gerekli token bilgisini gösterecektir. Token bilgisini powershell kodlarımızda kullanmamız gerekiyor bu nedenle kaydetmenizi tavsiye ederim.
Resim- 4
Bot Kullanarak İlk Mesajın Gönderilmesi
- Telegram botu kullanarak bir kişiye mesaj gönderebilmeniz için öncelikle o kişinin bu bot ile bir konuşma başlatmış olması gerekmektedir. Aksi takdirde mesaj gönderilemez.
- Botunuzun durumu ile ilgili bilgileri, başlatılmış olan konuşmaları görebilem için, aşağıdaki linkten <HTTP_API_TOKEN> yazan yere kendi token bilginizi yazarak herhangi bir tarayıcı yardımıyla erişebilirsiniz.
https://api.telegram.org/bot<HTTP_API_TOKEN>/getUpdates
Yeni oluşturulmuş bir bot için bu sayfa aşağıdaki gibi görünecektir
Resim- 5
Bot ile mesajlaşma sayfasını açın, bunun için botun kimlik adını arama çubuğuna yazabilirsiniz. Daha sonra /start komutu ile konuşmayı başlatın
Resim- 6
Bu işlemin ardından tekrar aynı sayfayı ziyaret ettiğinizde başlatılan konuşma ile ilgili bilgileri de göreceksiniz. Burada bizim için önemli olan diğer bir bilgiyi bulabilirsiniz. Bu da Chat ID bilgisidir. Bu chat idyi kullanarak ilgili kişiye mesaj göndermeyi deneyeceğiz.
Resim-7
Aşağıda yer alan Powershell komutlarını kullanarak “Merhaba Dünya” mesajı göndermeyi deneyelim. <HTTP_API_TOKEN> yazan alana BotFather’ın yeni bot oluşturduktan sonra size verdiği token değerini yazmanız ve <CHAT_ID> yazan alana da bot ile başlatmış olduğunuz konuşmanın chatId değerini yazmanız gerekmektedir.
$BotToken = "<HTTP_API_TOKEN>" $chatID = <CHAT_ID> $Message = "Merhaba Dünya" Invoke-RestMethod -Uri "https://api.telegram.org/bot$($BotToken)/sendMessage?chat_id=$($chatID)&text=$($Message)"
Komutlarımızı çalıştırdığımızda aşağıdaki gibi bir çıktı almayı bekliyoruz
Resim- 8
Telegram hesabınızda da botunuzdan gelen şu şekilde bir mesaj görmelisiniz.
Resim- 9
Event Logları Telegram aracılığıyla iletmek
Botu oluşturup, başarılı bir şekilde çalıştığını test ettikten sonra yukarıda bahsettiğim örnek çalışmaya geçebiliriz.
Bu script ile Telegram, sistem loglarında son 1 saat içinde oluşmuş hata mesajlarını bize iletecektir.
$BotToken = "<HTTP_API_TOKEN>" $chatID = <CHAT_ID> $EventLogs = Get-EventLog -List foreach ($Eventlog in $EventLogs) { $Errors = Get-EventLog -LogName $Eventlog.log -EntryType Error -After (Get-Date).AddHours(-1) foreach ($ErrorMsg in $Errors) { $Message = $ErrorMsg | Format-List * | Out-String $Response = Invoke-RestMethod -Uri "https://api.telegram.org/bot$($MyToken)/sendMessage?chat_id=$($chatID)&text=$($Message)" }}
Powershell scriptini çalıştırdıktan sonra olay kayıtları aşağıdaki gibi telegramdan iletilecektir. Bu scripti görev zamanlayıcı ile otomatikleştirebilir, kritik durumlardan anında haberdar olabilirsiniz.
Resim-10
Makalemin başında da belirttiğim gibi bunu bir makale dizisi şeklinde devam ettirmeyi planlıyorum. Bir sonraki makalemde Chat Id değerini otomatik olarak alma üzerinde durmaya çalışacağım. Basit bir tablo oluşturarak farklı Telegram kullanıcılarına farklı mesajlar göndermeyi deneyeceğim.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs: powershell, powershell script, telegram bot, telegram bot api