BBC
26.Апрель.2025 15:05:44
1
Здравствуйте.
У WB7 подключены 2 сетевых интерфейса, которые дают доступ к интернет: модем и проводной интерфейс. Проводной интернет “ходит” только через прокси вышестоящего провайдера.
Суть проблемы в следующем.
Через модем сообщения из правил в ТГ отправляются без проблем, однако, когда WB использует для подключения проводной интерфейс, то сообщения не отправляются вот с такой ошибкой:
ERROR: command '/bin/sh -c curl -s -X POST https://api.telegram.org/bot123:ABC/sendMessage -d chat_id=-123 -d text="Текст сообщения"' **failed with exit status 60**
Понять, из-за чего это происходит, сложно, поскольку, если я пишу команду для отправки сообщения в консоли, то оно отправляется без ошибок.
Подскажите, пожалуйста, в чем может быть проблема?
Думаю стоит приложить код, который отправляет через wb-rules.
BBC
27.Апрель.2025 11:59:07
3
function send_message_telegram(text_message){
var token = "123:ABC";
var chat_id = -123;
var command = 'curl -s -X POST https://api.telegram.org/bot{}/sendMessage -d chat_id={} -d text="{}"'.format(token, chat_id, text_message);
runShellCommand(command);
}
Добрый день!
Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации .
А что в stdout, stderr возвращается?
BBC
28.Апрель.2025 15:20:25
7
BBC
28.Апрель.2025 15:23:38
9
В stdout , по-моему, в случае удачи запрос ТГ в формате JSON, но, да, мне было интереснее, что возвращает stderr в случае ошибки, но там, почему-то, пусто.
В нем нет вывода, к сожалению.
BBC:
В stdout , по-моему, в случае удачи запрос ТГ в формате JSON, но, да, мне было интереснее, что возвращает stderr в случае ошибки, но там, почему-то, пусто.
Точно пусто? Покажите пожалуйста.
BBC
29.Апрель.2025 08:39:17
11
Вот функция, которая вызывается для отправки сообщения в ТГ:
function send_message_telegram(text_message){
var token = "123:ABC";
var chat_id = -123;
var command = 'curl -s -X POST https://api.telegram.org/bot{}/sendMessage -d chat_id={} -d text="{}"'.format(token, chat_id, text_message);
"https://api.telegram.org/bot7604256657:AAFBIR11-vb6NJDS7C7mRtcKnma3p3Cx3pQ/sendMessage";
runShellCommand(command, {
captureOutput: true,
captureErrorOutput: true,
exitCallback: function (exitCode, capturedOutput, capturedErrorOutput)
{
log("cmd output: " + capturedOutput);
log("cmd Erroroutput: " + capturedErrorOutput);
if (exitCode === 0){
log("Сообщение '" + text_message + "' отправлено успешно");
}else{
log("Сообщение '" + text_message + "' отправить не удалось");
}
}
});
}
А вот и логи
Apr 29 13:20:30 wirenboard-AGO*** wb-rules[1937]: INFO: [rule info] Right door is open
Apr 29 13:20:30 wirenboard-AGO*** wb-rules[1937]: INFO: [rule info] cmd output:
Apr 29 13:20:30 wirenboard-AGO*** wb-rules[1937]: INFO: [rule info] cmd Erroroutput:
Apr 29 13:20:30 wirenboard-AGO*** wb-rules[1937]: INFO: [rule info] Сообщение 'Правая дверь открыта' отправить не удалось
Apr 29 13:20:41 wirenboard-AGO*** wb-rules[1937]: INFO: [rule info] Right door is closed
Apr 29 13:20:42 wirenboard-AGO*** wb-rules[1937]: INFO: [rule info] cmd output:
Apr 29 13:20:42 wirenboard-AGO*** wb-rules[1937]: INFO: [rule info] cmd Erroroutput:
Apr 29 13:20:42 wirenboard-AGO*** wb-rules[1937]: INFO: [rule info] Сообщение 'Правая дверь закрыта' отправить не удалось
Добрый день!
Попробую у себя воспроизвести ситуацию и сообщу о результате.
Ну неправда ж:
//04_29_test_02.js
function send_message_telegram(text_message){
var token = "123:ABC";
var chat_id = -123;
var command = 'curl -s -X POST https://api.telegram.org/bot{}/sendMessage -d chat_id={} -d text="{}"'.format(token, chat_id, text_message);
//command = 'ls -l';
log.info("before start command=", command);
runShellCommand(command,{
captureOutput: true,
exitCallback: function (exitCode, capturedOutput) {
log.info("exitCode:", exitCode, "cmd output: " + capturedOutput);
}
})
}
send_message_telegram("XXX")
BBC
29.Апрель.2025 10:55:48
14
Хорошо, попробую ваш использовать
Это довольно однобокое решение.
Сам пользуюсь таким решением, сторонним, но удивительно хорошо написанным: GitHub - aadegtyarev/telegram2wb: Телеграм-бот на wb-rules
1 лайк
BBC
29.Апрель.2025 12:45:45
16
Взял код из вашего сообщения
function send_message_telegram(text_message){
var token = "123:ABC";
var chat_id = -1234;
var command = 'curl -s -X POST https://api.telegram.org/bot{}/sendMessage -d chat_id={} -d text="{}"'.format(token, chat_id, text_message);
log.info("before start command=", command);
runShellCommand(command,{
captureOutput: true,
exitCallback: function (exitCode, capturedOutput) {
log.info("exitCode:", exitCode, "cmd output: " + capturedOutput);
}
});
}
Лог немного изменился:
Apr 29 19:32:23 wirenboard-AGO*** wb-rules[1937]: INFO: [rule info] before start command= curl -s -X POST https://api.telegram.org/bot123:ABC/sendMessage -d chat_id=-1234 -d text="Тестовое сообщение"
Apr 29 19:32:23 wirenboard-AGOAGO*** wb-rules[1937]: INFO: [rule info] exitCode: 60 cmd output:
Видно, что консоль возвращает код ошибки 60 – то есть сообщение не отправляется даже. Причём тут же пишу команду в консоли и мне она возвращает:
{"ok":true,"result":{"message_id":875,"from":{"id":123,"is_bot":true,"first_name":"ABC","username":"abc_bot"},"author_signature":"ABC","chat":{"id":-1234,"title":"ABC","type":"channel"},"date":1745930422,"text":"\u0422\u0435\u0441\u0442\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435"}}
Почему так? Мне кажется, что Телеграм-бот тоже не сможет отправить сообщение – он, ведь, тоже использует runShellCommand() или нет?.
Посмотрите в stderr - 60 как следует из документации ошибка сертификата.
BBC
30.Апрель.2025 03:21:01
18
Да, возможно проблема в этом, но всё равно не понятно, почему из консоли сообщение отправляется, а из скрипта – нет.
Добрый день!
Рекомендую проверить текущее время на ПК и на контроллере — важно, чтобы они совпадали и были верные.
1 лайк