1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-01-04 03:48:40 +02:00

Правка отправки текста и MA Telegram

This commit is contained in:
Anton 2024-09-14 22:12:42 +03:00
parent c320635f4c
commit 0d7123263c
9 changed files with 2571 additions and 2372 deletions

File diff suppressed because it is too large Load Diff

View File

@ -179,11 +179,25 @@ Function ProcessTMAData(Val DataString, Val Token) Export
OPI_TypeConversion.GetLine(Token);
OPI_TypeConversion.GetLine(DataString);
DataString = DecodeString(DataString, StringEncodingMethod.URLencoding);
DataStructure = OPI_Tools.RequestParametersToMap(DataString);
KeyString = "WebAppData";
Hash = "";
BinaryKey = GetBinaryDataFromString(KeyString);
If StrStartsWith(DataString, "?") Then
DataString = Right(DataString, StrLen(DataString) - 1);
EndIf;
EncodingString = OPI_Tools.RequestParametersToMap(DataString);
DataStructure = New Map;
For Each DataElement In EncodingString Do
CurrentKey = DecodeString(DataElement.Key, StringEncodingMethod.URLencoding);
CurrentValue = DecodeString(DataElement.Value, StringEncodingMethod.URLencoding);
DataStructure.Insert(CurrentKey, CurrentValue);
EndDo;
KeyString = "WebAppData";
Hash = "";
BinaryKey = GetBinaryDataFromString(KeyString);
Result = OPI_Cryptography.HMACSHA256(BinaryKey, GetBinaryDataFromString(Token));
@ -206,7 +220,7 @@ Function ProcessTMAData(Val DataString, Val Token) Export
For Each DataString In TValue Do
If DataString.Key <> "hash" Then
If DataString.Key <> "hash" And DataString.Key <> "cookie" Then
DCS = DCS + DataString.Key + "=" + DataString.Value + Chars.LF;
ReturnMapping.Insert(DataString.Key, DataString.Value);
Else
@ -257,10 +271,13 @@ Function SendTextMessage(Val Token
, Val RepliedID = 0) Export
OPI_TypeConversion.GetLine(Token);
OPI_TypeConversion.GetLine(Text);
OPI_Tools.ReplaceSpecialCharacters(Text, Markup);
String_ = "String";
Text = DecodeString(Text, StringEncodingMethod.URLInURLEncoding);
Parameters = New Structure;
OPI_Tools.AddField("parse_mode" , Markup , String_ , Parameters);
OPI_Tools.AddField("text" , Text , String_ , Parameters);
@ -270,7 +287,7 @@ Function SendTextMessage(Val Token
AddChatIdentifier(ChatID, Parameters);
URL = "api.telegram.org/bot" + Token + "/sendMessage";
Response = OPI_Tools.Get(URL, Parameters);
Response = OPI_Tools.Post(URL, Parameters);
Return Response;

View File

@ -3423,6 +3423,13 @@ Procedure Check_TelegramNumber(Val Result)
EndProcedure
Procedure Check_TelegramOk(Val Result)
OPI_TestDataRetrieval.ExpectsThat(Result).ИмеетТип("Map").Заполнено();
OPI_TestDataRetrieval.ExpectsThat(Result["ok"]).Равно(True);
EndProcedure
Procedure Check_TelegramCreateTopic(Val Result, Val Name, Icon)
OPI_TestDataRetrieval.ExpectsThat(Result).ИмеетТип("Map").Заполнено();
@ -4225,6 +4232,30 @@ Procedure Telegram_SendTextMessage(FunctionParameters)
MessageID = OPI_Tools.NumberToString(Result["result"]["message_id"]);
OPI_TestDataRetrieval.WriteParameter("Telegram_ChannelMessageID", MessageID);
Text = "<b>Text html %F0%9F%93%9E 10%</b>";
Result = OPI_Telegram.SendTextMessage(Token, ChannelID, Text, , "HTML");
OPI_TestDataRetrieval.WriteLog(Result, "SendTextMessage (HTML)");
Check_TelegramOk(Result);
Text = "%F0%9F%A4%BC";
Result = OPI_Telegram.SendTextMessage(Token, ChatID, Text);
OPI_TestDataRetrieval.WriteLog(Result, "SendTextMessage (emoji)");
Check_TelegramOk(Result);
Text = "Text %F0%9F%A5%9D and emoji \(10%\)";
Result = OPI_Telegram.SendTextMessage(Token, ChannelID, Text, , "MarkdownV2");
OPI_TestDataRetrieval.WriteLog(Result, "SendTextMessage (text and emoji)");
Check_TelegramOk(Result);
OPI_Tools.Pause(5);
EndProcedure

View File

@ -179,11 +179,25 @@ Function ProcessTMAData(Val DataString, Val Token) Export
OPI_TypeConversion.GetLine(Token);
OPI_TypeConversion.GetLine(DataString);
DataString = DecodeString(DataString, StringEncodingMethod.URLencoding);
DataStructure = OPI_Tools.RequestParametersToMap(DataString);
KeyString = "WebAppData";
Hash = "";
BinaryKey = GetBinaryDataFromString(KeyString);
If StrStartsWith(DataString, "?") Then
DataString = Right(DataString, StrLen(DataString) - 1);
EndIf;
EncodingString = OPI_Tools.RequestParametersToMap(DataString);
DataStructure = New Map;
For Each DataElement In EncodingString Do
CurrentKey = DecodeString(DataElement.Key, StringEncodingMethod.URLencoding);
CurrentValue = DecodeString(DataElement.Value, StringEncodingMethod.URLencoding);
DataStructure.Insert(CurrentKey, CurrentValue);
EndDo;
KeyString = "WebAppData";
Hash = "";
BinaryKey = GetBinaryDataFromString(KeyString);
Result = OPI_Cryptography.HMACSHA256(BinaryKey, GetBinaryDataFromString(Token));
@ -206,7 +220,7 @@ Function ProcessTMAData(Val DataString, Val Token) Export
For Each DataString In TValue Do
If DataString.Key <> "hash" Then
If DataString.Key <> "hash" And DataString.Key <> "cookie" Then
DCS = DCS + DataString.Key + "=" + DataString.Value + Chars.LF;
ReturnMapping.Insert(DataString.Key, DataString.Value);
Else
@ -257,10 +271,13 @@ Function SendTextMessage(Val Token
, Val RepliedID = 0) Export
OPI_TypeConversion.GetLine(Token);
OPI_TypeConversion.GetLine(Text);
OPI_Tools.ReplaceSpecialCharacters(Text, Markup);
String_ = "String";
Text = DecodeString(Text, StringEncodingMethod.URLInURLEncoding);
Parameters = New Structure;
OPI_Tools.AddField("parse_mode" , Markup , String_ , Parameters);
OPI_Tools.AddField("text" , Text , String_ , Parameters);
@ -270,7 +287,7 @@ Function SendTextMessage(Val Token
AddChatIdentifier(ChatID, Parameters);
URL = "api.telegram.org/bot" + Token + "/sendMessage";
Response = OPI_Tools.Get(URL, Parameters);
Response = OPI_Tools.Post(URL, Parameters);
Return Response;

View File

@ -3423,6 +3423,13 @@ Procedure Check_TelegramNumber(Val Result)
EndProcedure
Procedure Check_TelegramOk(Val Result)
OPI_TestDataRetrieval.ExpectsThat(Result).ИмеетТип("Map").Заполнено();
OPI_TestDataRetrieval.ExpectsThat(Result["ok"]).Равно(True);
EndProcedure
Procedure Check_TelegramCreateTopic(Val Result, Val Name, Icon)
OPI_TestDataRetrieval.ExpectsThat(Result).ИмеетТип("Map").Заполнено();
@ -4225,6 +4232,30 @@ Procedure Telegram_SendTextMessage(FunctionParameters)
MessageID = OPI_Tools.NumberToString(Result["result"]["message_id"]);
OPI_TestDataRetrieval.WriteParameter("Telegram_ChannelMessageID", MessageID);
Text = "<b>Text html %F0%9F%93%9E 10%</b>";
Result = OPI_Telegram.SendTextMessage(Token, ChannelID, Text, , "HTML");
OPI_TestDataRetrieval.WriteLog(Result, "SendTextMessage (HTML)");
Check_TelegramOk(Result);
Text = "%F0%9F%A4%BC";
Result = OPI_Telegram.SendTextMessage(Token, ChatID, Text);
OPI_TestDataRetrieval.WriteLog(Result, "SendTextMessage (emoji)");
Check_TelegramOk(Result);
Text = "Text %F0%9F%A5%9D and emoji \(10%\)";
Result = OPI_Telegram.SendTextMessage(Token, ChannelID, Text, , "MarkdownV2");
OPI_TestDataRetrieval.WriteLog(Result, "SendTextMessage (text and emoji)");
Check_TelegramOk(Result);
OPI_Tools.Pause(5);
EndProcedure

View File

@ -179,8 +179,22 @@
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьСтроку(СтрокаДанных);
СтрокаДанных = РаскодироватьСтроку(СтрокаДанных, СпособКодированияСтроки.КодировкаURL);
СтруктураДанных = OPI_Инструменты.ПараметрыЗапросаВСоответствие(СтрокаДанных);
Если СтрНачинаетсяС(СтрокаДанных, "?") Тогда
СтрокаДанных = Прав(СтрокаДанных, СтрДлина(СтрокаДанных) - 1);
КонецЕсли;
КодированныеДанные = OPI_Инструменты.ПараметрыЗапросаВСоответствие(СтрокаДанных);
СтруктураДанных = Новый Соответствие;
Для Каждого ЭлементДанных Из КодированныеДанные Цикл
ТекущийКлюч = РаскодироватьСтроку(ЭлементДанных.Ключ, СпособКодированияСтроки.КодировкаURL);
ТекущееЗначение = РаскодироватьСтроку(ЭлементДанных.Значение, СпособКодированияСтроки.КодировкаURL);
СтруктураДанных.Вставить(ТекущийКлюч, ТекущееЗначение);
КонецЦикла;
КлючСтрокой = "WebAppData";
Хэш = "";
КлючДвоичные = ПолучитьДвоичныеДанныеИзСтроки(КлючСтрокой);
@ -206,7 +220,7 @@
Для Каждого СтрокаТЗ Из ТЗнач Цикл
Если СтрокаТЗ.Ключ <> "hash" Тогда
Если СтрокаТЗ.Ключ <> "hash" И СтрокаТЗ.Ключ <> "cookie" Тогда
DCS = DCS + СтрокаТЗ.Ключ + "=" + СтрокаТЗ.Значение + Символы.ПС;
СоответствиеВозврата.Вставить(СтрокаТЗ.Ключ, СтрокаТЗ.Значение);
Иначе
@ -257,10 +271,13 @@
, Знач IDВходящего = 0) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
OPI_Инструменты.ЗаменитьСпецСимволы(Текст, Разметка);
Строка_ = "Строка";
Текст = РаскодироватьСтроку(Текст, СпособКодированияСтроки.URLВКодировкеURL);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("parse_mode" , Разметка , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст , Строка_ , Параметры);
@ -270,7 +287,7 @@
ДобавитьИдентификаторЧата(IDЧата, Параметры);
URL = "api.telegram.org/bot" + Токен + "/sendMessage";
Ответ = OPI_Инструменты.Get(URL, Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;

View File

@ -3423,6 +3423,13 @@
КонецПроцедуры
Процедура Проверка_ТелеграмОк(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
КонецПроцедуры
Процедура Проверка_ТелеграмСозданиеТемы(Знач Результат, Знач Имя, Иконка)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
@ -4225,6 +4232,30 @@
IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]);
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_ChannelMessageID", IDСообщения);
Текст = "<b>Текст html %F0%9F%93%9E 10%</b>";
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст, , "HTML");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (HTML)");
Проверка_ТелеграмОк(Результат);
Текст = "%F0%9F%A4%BC";
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (emoji)");
Проверка_ТелеграмОк(Результат);
Текст = "Текст %F0%9F%A5%9D и emoji \(10%\)";
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст, , "MarkdownV2");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (текст и emoji)");
Проверка_ТелеграмОк(Результат);
OPI_Инструменты.Пауза(5);
КонецПроцедуры

View File

@ -179,8 +179,22 @@
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьСтроку(СтрокаДанных);
СтрокаДанных = РаскодироватьСтроку(СтрокаДанных, СпособКодированияСтроки.КодировкаURL);
СтруктураДанных = OPI_Инструменты.ПараметрыЗапросаВСоответствие(СтрокаДанных);
Если СтрНачинаетсяС(СтрокаДанных, "?") Тогда
СтрокаДанных = Прав(СтрокаДанных, СтрДлина(СтрокаДанных) - 1);
КонецЕсли;
КодированныеДанные = OPI_Инструменты.ПараметрыЗапросаВСоответствие(СтрокаДанных);
СтруктураДанных = Новый Соответствие;
Для Каждого ЭлементДанных Из КодированныеДанные Цикл
ТекущийКлюч = РаскодироватьСтроку(ЭлементДанных.Ключ, СпособКодированияСтроки.КодировкаURL);
ТекущееЗначение = РаскодироватьСтроку(ЭлементДанных.Значение, СпособКодированияСтроки.КодировкаURL);
СтруктураДанных.Вставить(ТекущийКлюч, ТекущееЗначение);
КонецЦикла;
КлючСтрокой = "WebAppData";
Хэш = "";
КлючДвоичные = ПолучитьДвоичныеДанныеИзСтроки(КлючСтрокой);
@ -206,7 +220,7 @@
Для Каждого СтрокаТЗ Из ТЗнач Цикл
Если СтрокаТЗ.Ключ <> "hash" Тогда
Если СтрокаТЗ.Ключ <> "hash" И СтрокаТЗ.Ключ <> "cookie" Тогда
DCS = DCS + СтрокаТЗ.Ключ + "=" + СтрокаТЗ.Значение + Символы.ПС;
СоответствиеВозврата.Вставить(СтрокаТЗ.Ключ, СтрокаТЗ.Значение);
Иначе
@ -257,10 +271,13 @@
, Знач IDВходящего = 0) Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(Токен);
OPI_ПреобразованиеТипов.ПолучитьСтроку(Текст);
OPI_Инструменты.ЗаменитьСпецСимволы(Текст, Разметка);
Строка_ = "Строка";
Текст = РаскодироватьСтроку(Текст, СпособКодированияСтроки.URLВКодировкеURL);
Параметры = Новый Структура;
OPI_Инструменты.ДобавитьПоле("parse_mode" , Разметка , Строка_ , Параметры);
OPI_Инструменты.ДобавитьПоле("text" , Текст , Строка_ , Параметры);
@ -270,7 +287,7 @@
ДобавитьИдентификаторЧата(IDЧата, Параметры);
URL = "api.telegram.org/bot" + Токен + "/sendMessage";
Ответ = OPI_Инструменты.Get(URL, Параметры);
Ответ = OPI_Инструменты.Post(URL, Параметры);
Возврат Ответ;

View File

@ -3423,6 +3423,13 @@
КонецПроцедуры
Процедура Проверка_ТелеграмОк(Знач Результат)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат["ok"]).Равно(Истина);
КонецПроцедуры
Процедура Проверка_ТелеграмСозданиеТемы(Знач Результат, Знач Имя, Иконка)
OPI_ПолучениеДанныхТестов.ОжидаетЧто(Результат).ИмеетТип("Соответствие").Заполнено();
@ -4225,6 +4232,30 @@
IDСообщения = OPI_Инструменты.ЧислоВСтроку(Результат["result"]["message_id"]);
OPI_ПолучениеДанныхТестов.ЗаписатьПараметр("Telegram_ChannelMessageID", IDСообщения);
Текст = "<b>Текст html %F0%9F%93%9E 10%</b>";
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст, , "HTML");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (HTML)");
Проверка_ТелеграмОк(Результат);
Текст = "%F0%9F%A4%BC";
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDЧата, Текст);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (emoji)");
Проверка_ТелеграмОк(Результат);
Текст = "Текст %F0%9F%A5%9D и emoji \(10%\)";
Результат = OPI_Telegram.ОтправитьТекстовоеСообщение(Токен, IDКанала, Текст, , "MarkdownV2");
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОтправитьТекстовоеСообщение (текст и emoji)");
Проверка_ТелеграмОк(Результат);
OPI_Инструменты.Пауза(5);
КонецПроцедуры