Страница 5 из 6

Re: Функция-конвертер строки для отправки сообщений в Телеграмм

Добавлено: 24 дек 2021, 12:36
Sertik
Как правило, сначала составляется "итоговая" переменная, которая потом отправляется в функцию для перекодирования и отправки. Либо итоговый текст составляется конкатенацией (объединением) непосредственного текста и значений нужных переменных, в том числе результатов выполнения команд РОС.

Re: Функция-конвертер строки для отправки сообщений в Телеграмм

Добавлено: 04 мар 2023, 19:52
dimka-dh
Sertik писал(а): 24 дек 2021, 12:36 Как правило, сначала составляется "итоговая" переменная, которая потом отправляется в функцию для перекодирования и отправки. Либо итоговый текст составляется конкатенацией (объединением) непосредственного текста и значений нужных переменных, в том числе результатов выполнения команд РОС.
Подскажи, а есть рабочий вариант на ROS 7? Очень полезная функция, но не могу никак ее перенести на новую версию, не разберусь с синтаксисом никак...

Re: Функция-конвертер строки для отправки сообщений в Телеграмм

Добавлено: 04 мар 2023, 22:25
Sertik
Да и этот должен работать. Мне сейчас проверять не на чем. Сам Рос 7 не пользуюсь пока, сыровата.

Re: Функция-конвертер строки для отправки сообщений в Телеграмм

Добавлено: 05 мар 2023, 09:29
dimka-dh
Sertik писал(а): 04 мар 2023, 22:25 Да и этот должен работать. Мне сейчас проверять не на чем. Сам Рос 7 не пользуюсь пока, сыровата.
Да, заработал. При апгрейде прошивки ROS сразу не запустился, что странно, переписав скрипт заново ручками все завелось)

Re: Функция-конвертер строки для отправки сообщений в Телеграмм

Добавлено: 25 май 2023, 18:28
FalkonThincer
Прежде всего хотелось бы поблагодарить автора за выложенный код.
Продолжить бы хотелось тем, что, как уже обсуждалось выше, есть определённый сложности с использованием где-либо кроме Windows, и, столкнувшись с ними, я пришёл к следующему решению для функции преобразования строки:

Код: Выделить всё

:local RUHEXtoUTF8 do={
    :set $inputString $1;
    # Russian letters UTF8-codes
    :local HEXUTFarr [:toarray {"C0"="D090"; "C1"="D091"; "C2"="D092"; "C3"="D093"; "C4"="D094"; "C5"="D095"; "C6"="D096"; "C7"="D097"; "C8"="D098"; "C9"="D099"; "CA"="D09A"; "CB"="D09B"; "CC"="D09C"; "CD"="D09D"; "CE"="D09E"; "CF"="D09F"; "D0"="D0A0"; "D1"="D0A1"; "D2"="D0A2"; "D3"="D0A3"; "D4"="D0A4"; "D5"="D0A5"; "D6"="D0A6"; "D7"="D0A7"; "D8"="D0A8"; "D9"="D0A9"; "DA"="D0AA"; "DB"="D0AB"; "DC"="D0AC"; "DD"="D0AD"; "DE"="D0AE"; "DF"="D0AF"; "E0"="D0B0"; "E1"="D0B1"; "E2"="D0B2"; "E3"="D0B3"; "E4"="D0B4"; "E5"="D0B5"; "E6"="D0B6"; "E7"="D0B7"; "E8"="D0B8"; "E9"="D0B9"; "EA"="D0BA"; "EB"="D0BB"; "EC"="D0BC"; "ED"="D0BD"; "EE"="D0BE"; "EF"="D0BF"; "F0"="D180"; "F1"="D181"; "F2"="D182"; "F3"="D183"; "F4"="D184"; "F5"="D185"; "F6"="D186"; "F7"="D187"; "F8"="D188"; "F9"="D189"; "FA"="D18A"; "FB"="D18B"; "FC"="D18C"; "FD"="D18D"; "FE"="D18E"; "FF"="D18F"; "A8"="D081"; "B8"="D191"}]

    # Define string that we will use in the loop
    :local outString ""
    :local UTFcode ""
    # Read string as array with two character elements
    :for i from=0 to=([:len $inputString]-1) step=2 do={
        # Define array element as HEX-code
        :local HEXcode [:pick $inputString $i ($i+2)]
        # Mapping HEX-code onto UTF-key
        :local UTFkey ($HEXUTFarr->$HEXcode)
        # Set UTF-code as %XX%XX for Russian letters and %XX for others
        :if ([:len $UTFkey]!=0) do={
            :set $UTFcode ("%"."$[:pick ($HEXUTFarr->$HEXcode) 0 2]"."%"."$[:pick ($HEXUTFarr->$HEXcode) 2 4]")
        } else={
            :set $UTFcode ("%"."$HEXcode")
        }
        # Add UTF-code to output string
        :set $outString ("$outString"."$UTFcode")
    }
    :return $outString
}
В данном случае необходимо заранее преобразовать строку в набор хекс-кодов (можно онлайн, например) и уже его принимать на вход скриптом. Да, костыльно, но работает.

Re: Функция-конвертер строки для отправки сообщений в Телеграмм

Добавлено: 02 дек 2023, 16:39
uhi
Подскажите пожалуйста а этот скрипт должен работать в Netwatch?
у меня не отрабатывает...
если создаю скрипт:
:local botID "бот_ид" ;
:local myChatID "чат_ид" ;
:global FuncStrToTele;
:local string [$FuncStrToTele "тест"]
:tool fetch url=("https://api.telegram.org/$botID/sendmes ... xt=$string") keep-result=no

выполняю его то уведомление приходит на телеграмм.
а если это содержимое вставляю в Netwatch то сообщение не приходит.

Re: Функция-конвертер строки для отправки сообщений в Телеграмм

Добавлено: 02 дек 2023, 18:26
Sertik
Покажите, что и как вставляете в Нетвоч

Re: Функция-конвертер строки для отправки сообщений в Телеграмм

Добавлено: 02 дек 2023, 19:24
Perreiro
День добрый!
Что-то не хватает в моих стараниях Не взлетает перекодировщик (((
Сделал так:
1. Добавил скрипт "FuncStrToTele", содержимое скопировал из первого поста.
2. Создал скрипт "myScript". Содержимое:
:local botID "botXXXXXXXXXX:YYYYYYYYYYYYYYYYYYYYYYYY";
:local myChatID "ZZZZZZZZZZZZ";
:global FuncStrToTele;
:local string [$FuncStrToTele "Привет от Sertik ! Работает функция-конвертер Russian alfabit для Telegramm"]
/tool fetch url=("https://api.telegram.org/$botID/sendmes ... xt=$string") keep-result=no

ЧЯДНТ?

Re: Функция-конвертер строки для отправки сообщений в Телеграмм

Добавлено: 02 дек 2023, 20:57
Sertik
Всё так.
Проверьте у Вас Микротик чисто английские тексты передает в чат (без перекодироввщика) ?

Re: Функция-конвертер строки для отправки сообщений в Телеграмм

Добавлено: 02 дек 2023, 23:04
uhi
Sertik писал(а): 02 дек 2023, 18:26 Покажите, что и как вставляете в Нетвоч
то же что и в скрипте. скрипт отрабатывает....

на скрине:
Изображение