@Mitya78
Инженер АСУТП

Запрос Curl для сообщений в Телеграм — как красивее?

Имеется СКАДА WinCC V7.5, сделал отправку сообщений в телеграм-канал при возникновении событий.
Но слишком много получилось наворочено, как бы проще и красивее сделать.

В самой СКАДА по тригеру вызывается VBS-action


Option Explicit
Function action

If HMIRuntime.Tags("Error_260").Read = 1 Then

Dim obj
Set obj = CreateObject("Wscript.Shell")

obj.Run "D:\telmes00.vbs"

End If

End Function


Таким образом вызывается VBS-скрипт на диске, он нужен чтобы не выскакивало окно командной строки:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "D:\telmes00.cmd" & Chr(34), 0
Set WshShell = Nothing


Ну а там уже сам батник сообщения вида:

curl -s -o /dev/null -X POST -H "Content-Type: application/json" -d "{\"chat_id\": \"-100XXXXXXXXXX\", \"text\": \"test_message\", \"disable_notification\": false}" https://api.telegram.org/bot{API_TOKEN}/sendMessage


Можно ли всё это как-то свести к одному скрипту, да ещё желательно чтобы текст сообщения можно было подставлять?
  • Вопрос задан
  • 546 просмотров
Решения вопроса 1
@Mitya78 Автор вопроса
Инженер АСУТП
Как ни смешно, но спросил у GptChat и он выдал мне работающее решение:
Dim http, url, message

' URL API Телеграма для отправки сообщения в канал
url = "https://api.telegram.org/bot{YOUR_BOT_TOKEN}/sendMessage"

' Сообщение, которое нужно отправить в канал
message = "Привет, это тестовое сообщение из WinCC v7.5!"

' Создание объекта HTTP-запроса
Set http = CreateObject("MSXML2.XMLHTTP")

' Формирование данных запроса
http.Open "POST", url, False
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

' Формирование параметров запроса
http.Send "chat_id=@your_channel_username_or_id&text=" & message

' Проверка статуса ответа
If http.Status = 200 Then
    MsgBox "Сообщение успешно отправлено в Телеграм-канал!"
Else
    MsgBox "Ошибка при отправке сообщения в Телеграм-канал."
End If

' Освобождение ресурсов
Set http = Nothing
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
NeiroNx
@NeiroNx
Программист
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
Set text = "test_message"
objHTTP.Open "POST", "https://api.telegram.org/bot{API_TOKEN}/sendMessage", False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.send "{""chat_id"": ""-100XXXXXXXXXX"", ""text"": """ & text & """, ""disable_notification"": false}"

Еще есть такие варианты объекта:
"MSXML2.XMLHTTP", "MSXML2.ServerXMLHTTP60"
Можно еще чистить text от двойных кавычек
Ответ написан
Комментировать
Montix
@Montix
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
Set text = "test_message"
objHTTP.Open "POST", "https://api.telegram.org/bot{API_TOKEN}/sendMessage", False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.send "{""chat_id"": ""-100XXXXXXXXXX"", ""text"": """ & text & """, ""disable_notification"": false}"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы