Отправка ссылок в ТГ

1. Evgen13 01.12.23 10:36 Сейчас в теме
Добрый день. Подскажите пожалуйста, есть тч, в ней 2 колонки "ИмяСсылки" и "СсылкаНаСайт", как отправить из тг данные ссылки, чтобы сообщение пришло "ИмяССылки" (ссылка на сайт). Делаю все через "sendMessage"

	ИначеЕсли ТекстЗапроса = "/фотографии" Тогда
		СсылкаНаФото = Справочники.ПользовательскиеПоля.НайтиПоКоду("000000001");
		Ссылка = СсылкаНаФото.СсылкиНаФотографии;
		Длина2 = 0; 
		МассивURL = Новый Массив;
		МаасивСсылок = Новый Массив;
			Для каждого Элемент из Ссылка Цикл
			
			МаасивСсылок.Добавить(Элемент.ИмяСсылки);
			ДлинаСтр = СтрДлина(Элемент.ИмяСсылки);
		Длина2 = Длина2+ДлинаСтр;
			СтруктураURL = Новый Структура("url", Элемент.СсылкаНаСайт);
			СтруктураURL.Вставить("type","text_link");
			СтруктураURL.Вставить("offset",0);
			СтруктураURL.Вставить("length",ДлинаСТр);
			//
			////МассивURL = Новый Массив;
			МассивURL.Добавить(СтруктураURL);
		КонецЦикла;
	
	       	СтруктураСообщения.Вставить("text",МаасивСсылок); 

			СтруктураСообщения.Вставить("entities",МассивURL);
Показать




но так не работает. Выводит сообщение в виде

"ИмяСсылки1" но тут есть ссылка и то как то наполовину
"ИмяСсылки2" - тут просто текст и дальше тоже пошел текст
По теме из базы знаний
Найденные решения
35. yispepotri 01.12.23 14:08 Сейчас в теме
Нашел возможно способ более удобный, не через HTML, ставите
parse_mode=markdown

а ссылки в таком виде

      СсылкиТекст = "";
        Для каждого Элемент из Ссылка Цикл 
            СсылкиТекст = СсылкиТекст + "[" + Элемент.ИмяСсылки + "]" + "("+Элемент.СсылкаНаСайт + ")" + Символы.ПС; 
        КонецЦикла;
        
        СтруктураСообщения.Вставить("text",    СсылкиТекст);


[ИмяСсылки](Ссылка)

также Элемент.СсылкаНаСайт и Элемент.СсылкаНаСайт должны быть с типом Строка
37. yispepotri 01.12.23 14:20 Сейчас в теме
(36)
СсылкиТекст = СсылкиТекст + "[" + Элемент.ИмяСсылки + "]" + "("+Элемент.СсылкаНаСайт + ")" + Символы.ПС; 


порядок не верный, сначало имя, потом ссылка, возможно я ввел в заблуждение)
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. yispepotri 01.12.23 10:48 Сейчас в теме
(1)
	
         Ресурс = "bot" + Token + "/sendMessage?chat_id=" + Формат(ЧатID, "ЧДЦ = 0;  ЧГ = ") + "&text= " + Сообщение + "&parse_mode=markdown";
		Соединение = Новый  HTTPСоединение(Сервер,443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
		Запрос = Новый HTTPЗапрос(Ресурс); 
		
		Попытка
			Ответ = Соединение.Получить(Запрос);
		Исключение
		 Сообщить(ОписаниеОшибки());
		КонецПопытки; 
Показать



я в таком варианте отправляю, в текст для отправки просто передается ссылка и она корректно отображается
https://forum.infostart.ru/
3. Evgen13 01.12.23 10:49 Сейчас в теме
(2)
если в текст ссылку вставлять, то я не заморачивался с этим бы. А нужно вот именно, каждой ссылке давать наименование.
4. yispepotri 01.12.23 10:51 Сейчас в теме
(3)parse_mode ставить HTML и указываете ссылку как для HTML, код не совсем корректно передал, форум не дает, но думаю сможете посмотреть как в HTML ссылки добавляются
a href="Наименование ссылки">...
 
5. Evgen13 01.12.23 10:56 Сейчас в теме
(4)
Ресурс = "bot"+Настройка.КлючАПИ+"/"+Команда + "&parse_mode=HTML"; 
так подключение не идет.

Где, ключАПИ - Токен, Команда - sendmessage
6. yispepotri 01.12.23 10:59 Сейчас в теме
(5) токен у вас тот, который выдал BotFather? формата 1111:wieewieiwks?
7. Evgen13 01.12.23 11:00 Сейчас в теме
8. yispepotri 01.12.23 11:03 Сейчас в теме
(7) можете прислать код как вы пытаетесь отправлять? без рабочего токена и id естественно
24. Evgen13 01.12.23 12:49 Сейчас в теме
(2)
/sendMessage?chat_id=" + Формат(ЧатID, "ЧДЦ = 0; ЧГ = ") + "&text= " + Сообщение + "&parse_mode=markdown"


СПАСИБОО!!!! децйствитель, не передавались параметра ид

Помогите, пожалуйста, расставить кавычки правильно в тексте

СтруктураСообщения.Вставить("text","|<a hrеf=" "https://infostart.ru/" " >Ссылка на Infostart</a >");

вместо
https://infostart.ru/" - Элементы.Ссылка

Ссылка на Infostart - Элементы.ИмяСсылки
15. Westonline82 01.12.23 11:38 Сейчас в теме
(1) не могу вставить код, вставляется как ссылка, на прикрепленном файле как формировать ссылку к тексту
Прикрепленные файлы:
yispepotri; +1 Ответить
9. Evgen13 01.12.23 11:06 Сейчас в теме
(6)
Процедура ОтправитьСообщение (СтруктураСообщения,ok,ИмяФайлаОтправки="",ЗаголовокФайла="",Настройка) Экспорт
	
	Сервер = "api.telegram.org";
	//Прокси = ПолучитьПрокси();
	Соединение = Новый HTTPСоединение(Сервер,,,,,,Новый ЗащищенноеСоединениеOpenSSL);
	Запрос = Новый HTTPЗапрос(); 
	
	Если ЗначениеЗаполнено(ИмяФайлаОтправки) Тогда
		
		//АдресФайла = СтруктураСообщения.text;
		//СтруктураСообщения.удалить("text");
		Команда = "sendDocument";
		
		Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()),"-","");
		
		Запрос.Заголовки.Вставить("Content-Type","multipart/form-data; boundary="+Boundary);
		//Запрос.Заголовки.Вставить("Connection", "keep-alive"); 
		
		//ИмяФайлаДляЗапроса  = ПолучитьТектсФайлаОтправки(Boundary,ИмяФайлаОтправки,СтруктураСообщения,ЗаголовокФайла);
		
		//Запрос.Заголовки.Вставить("Content-Length", Формат(СтрДлина(ТелоОтправки),"ЧГ=0"));
		
		//Запрос.УстановитьИмяФайлаТела(ИмяФайлаДляЗапроса);
		
		
	Иначе 
		
		Команда = "sendMessage";
		СтрокаПоПараметрам = ПолучитьСтрокуТелаЗапроса(СтруктураСообщения);
		//СтрокаПоПараметрам = ПолучитьСтрокуПоПараметрамЖСОН(СтруктураСообщения);
		Запрос.Заголовки.Вставить("Content-Type","application/json");
		
		//Запрос.УстановитьТелоИзСтроки(СтрокаПоПараметрам,,ИспользованиеByteOrderMark.НеИспользовать);
		Запрос.УстановитьТелоИзСтроки(СтрокаПоПараметрам,"CESU-8");	
		
	КонецЕсли;
	
	Ресурс = "bot"+Настройка.КлючАПИ+"/"+Команда + "&parse_mode=HTML"; 
	Запрос.АдресРесурса = Ресурс; 
	
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);
	Запрос = Неопределено;
	Соединение= Неопределено;
	Если ЗначениеЗаполнено(ИмяФайлаОтправки) Тогда
		УдалитьФайлы(ИмяФайлаОтправки);
	КонецЕсли;
	
	ОтветСоотв = ПолучитьСтруктуруИзJSON(Ответ.ПолучитьТелоКакСтроку());

	ok = ?(ОтветСоотв.Свойство("ok"),ОтветСоотв["ok"],неопределено);
	
	Если ok = Ложь Тогда
		Сообщить(ОтветСоотв["description"]);
	КонецЕсли;
	
	Соединение = Неопределено;
	
КонецПроцедуры
Показать
10. yispepotri 01.12.23 11:17 Сейчас в теме
(9)в вашей команде, вы не передаете Chat_id и text, они являются обязательными для sendMessage
Chat_id - id пользователя, которому вы отправляете сообщение
11. Evgen13 01.12.23 11:21 Сейчас в теме
Передаю. В структуре сообщения, уже в процедуре ОтправитьЗапрос.
12. yispepotri 01.12.23 11:30 Сейчас в теме
(11) пришлите пожалуйста что сформировано в Ресурсе (без личных данных)
13. Evgen13 01.12.23 11:33 Сейчас в теме
(12)
botИД7:Токен/sendMessage&parse_mode=HTML
14. yispepotri 01.12.23 11:37 Сейчас в теме
(13)ну получается chat_id и text там нет, или вы убрали вместе со значениями?
16. пользователь 01.12.23 11:38
Сообщение было скрыто модератором.
...
17. пользователь 01.12.23 11:41
Сообщение было скрыто модератором.
...
20. пользователь 01.12.23 11:43
Сообщение было скрыто модератором.
...
21. yispepotri 01.12.23 11:44 Сейчас в теме
(20)контакты личные лучше не оставляйте на общем форуме, всякие люди бывают...
18. пользователь 01.12.23 11:41
Сообщение было скрыто модератором.
...
19. yispepotri 01.12.23 11:43 Сейчас в теме
(18)извините, я не готов переходить в другие соц сети для помощи, все в рамках форума
22. yispepotri 01.12.23 11:47 Сейчас в теме
Попробуйте для отправки сообщения использовать мой вариант выше, возможно вам не придется использовать тот способ, которым вы пробуете отправить сообщение и тем самым код сократится
23. yispepotri 01.12.23 12:00 Сейчас в теме
(22) ну и в 15 ответе, вам показали, в каком виде будет запрос
25. Evgen13 01.12.23 12:57 Сейчас в теме
(23)

			Для каждого Элемент из Ссылка Цикл
			СтруктураСообщения.Вставить("text","<a hrеf=""" + Элемент.СсылкаНаСайт + """>" + Элемент.ИмяСсылки + "</a>"); 
			КонецЦикла


Все равно, с ТЧ работать не хочет
26. yispepotri 01.12.23 13:21 Сейчас в теме
(25) вы попробовали сформировать для начала по одной ссылке без ТЧ и цикла?
28. Evgen13 01.12.23 13:32 Сейчас в теме
(26)

по одной ссылке все работает. то есть как показано выше, где все текстом.
27. Evgen13 01.12.23 13:30 Сейчас в теме
(26)

ИначеЕсли ТекстЗапроса = "/фотографии" Тогда
		СсылкаНаФото = Справочники.ПользовательскиеПоля.НайтиПоКоду("000000001");
		Ссылка = СсылкаНаФото.СсылкиНаФотографии;
		//Длина2 = 0;
		МассивСсылок = Новый Массив;
		МассивИмен = Новый Массив;
		
		//МассивURL = Новый Массив;
		//МаасивСсылок = Новый Массив;
		Для каждого Элемент из Ссылка Цикл 
		МассивИмен.Добавить(Элемент.ИмяСсылки);
		МассивСсылок.Добавить(Элемент.СсылкаНаСайт);
		КонецЦикла;
		
			СтруктураСообщения.Вставить("text","<a hrеf="""  + МассивСсылок + """>" + МассивИмен + "</a>");
Показать


В итоге переделал так. Но на печать выводит "Массив". Без ссылки и всего прочего
29. yispepotri 01.12.23 13:37 Сейчас в теме
(27)тогда попробуйте с таким вариантом
СсылкаНаФото = Справочники.ПользовательскиеПоля.НайтиПоКоду("000000001");
        Ссылка = СсылкаНаФото.СсылкиНаФотографии;
		
		СсылкиТекст = "";
        Для каждого Элемент из Ссылка Цикл 
			СсылкиТекст = СсылкиТекст + "<a hrеf="""  +Элемент.СсылкаНаСайт + """>" + Элемент.ИмяСсылки + "</a>" + Символы.ПС);	
		КонецЦикла;
        
        СтруктураСообщения.Вставить("text",	СсылкиТекст);
Показать
30. Evgen13 01.12.23 13:42 Сейчас в теме
(29)

botИдБота:AТокен/sendMessage?chat_id=Ид&text= <a hrеf="//disk.yandex.ru/i/q0oPy-OB79VyuA/">Камень 1</a>&parse_mode=HTML


Вот в таком виде я отправляю сообщение

но в ответ приходит камень, без ссылки
31. yispepotri 01.12.23 13:42 Сейчас в теме
(30)личный id советую убрать, на форуме не стоит это писать
33. Evgen13 01.12.23 13:52 Сейчас в теме
(31)
может я ссылки не в том формате вставляю?
34. Evgen13 01.12.23 14:08 Сейчас в теме
(31)

Все форматы ссылок попробовал и: /, //, https:// . все
32. Evgen13 01.12.23 13:49 Сейчас в теме
(29)

Выводит 2 сообщения, по всей ТЧ. Но ссылок нет:(
35. yispepotri 01.12.23 14:08 Сейчас в теме
Нашел возможно способ более удобный, не через HTML, ставите
parse_mode=markdown

а ссылки в таком виде

      СсылкиТекст = "";
        Для каждого Элемент из Ссылка Цикл 
            СсылкиТекст = СсылкиТекст + "[" + Элемент.ИмяСсылки + "]" + "("+Элемент.СсылкаНаСайт + ")" + Символы.ПС; 
        КонецЦикла;
        
        СтруктураСообщения.Вставить("text",    СсылкиТекст);


[ИмяСсылки](Ссылка)

также Элемент.СсылкаНаСайт и Элемент.СсылкаНаСайт должны быть с типом Строка
36. Evgen13 01.12.23 14:17 Сейчас в теме
(35)
СсылкиТекст + "[" + Элемент.СсылкаНаСайт "]" + "("+Элемент.СсылкаНаСайт + ")";


Тип строка. Ссылки пришли) только сами ссылки , без имен(

ИначеЕсли ТекстЗапроса = "/фотографии" Тогда
		СсылкаНаФото = Справочники.ПользовательскиеПоля.НайтиПоКоду("000000001");
		Ссылка = СсылкаНаФото.СсылкиНаФотографии;
       	СсылкиТекст = "";
		Для каждого Элемент из Ссылка Цикл 
			СсылкиТекст = СсылкиТекст + "[" + Элемент.СсылкаНаСайт  + "]" + "("+Элемент.ИмяСсылки + ")" + Символы.ПС; 
            //СсылкиТекст = СсылкиТекст + "<a hrеf="""  +Элемент.СсылкаНаСайт + """>" + Элемент.ИмяСсылки + "</a>" + Символы.ПС;    
        КонецЦикла;
        
        СтруктураСообщения.Вставить("text",    СсылкиТекст);
Показать
37. yispepotri 01.12.23 14:20 Сейчас в теме
(36)
СсылкиТекст = СсылкиТекст + "[" + Элемент.ИмяСсылки + "]" + "("+Элемент.СсылкаНаСайт + ")" + Символы.ПС; 


порядок не верный, сначало имя, потом ссылка, возможно я ввел в заблуждение)
38. Evgen13 01.12.23 14:24 Сейчас в теме
(37)
Да!!!
Спасибо!! огромнейшее
yispepotri; +1 Ответить
39. Evgen13 01.12.23 14:49 Сейчас в теме
(37)

только теперь другая ссылка не отпраляется(

ИначеЕсли ТекстЗапроса = "/написать в телеграмм менеджеру головной щелково" Тогда

		Контакты1 = Справочники.ПользовательскиеПоля.НайтиПоКоду("000000001");			 
                СтруктураСообщения.Вставить("text", "Напишите нам в бот в Щелково");
			СтруктураURL = Новый Структура("url",Контакты1.ТГЩелково);
			СтруктураURL.Вставить("type","text_link");
			СтруктураURL.Вставить("offset",0);
			СтруктураURL.Вставить("length",28);
			МассивURL = Новый Массив;
			МассивURL.Добавить(СтруктураURL);
			СтруктураСообщения.Вставить("entities",МассивURL);
Показать
40. yispepotri 01.12.23 14:53 Сейчас в теме
(39)скорее всего значения моего способа пересекаются с этим кодом, выполнять это разными процедурами и удобнее для читаемости кода, ну или пришлите полный код))
41. Evgen13 01.12.23 14:56 Сейчас в теме
там в полном коде я уже с трудом разбираюсь))
а это нельзя как нибудь вывести?)
42. yispepotri 01.12.23 14:58 Сейчас в теме
(41) а почему нельзя, просто добавляете две процедуры например, в одной выполняются добавление ссылок по текущей задачей, а в другой то что вы делаете по коду выше
43. yispepotri 01.12.23 15:00 Сейчас в теме
(41)я сам не так долго в 1С, но как показывает опыт, код нужно писать в таком виде, чтобы вы через время смогли его понять и другой человек с опытом работы также смог разобраться
45. Evgen13 01.12.23 15:16 Сейчас в теме
(43)

а раз Вы так разбираетесь в ТГ, не подскажите, как добавить кнопку меню и чтобы в ней были все мои команды?)
47. yispepotri 01.12.23 15:30 Сейчас в теме
(45) а вообще есть в интернете Конструктор бота телеграм, там есть необходимый функционал, чтобы не изобретать колесо
44. Evgen13 01.12.23 15:09 Сейчас в теме
(43)
Все починил)

		    Строка = "Напишите нам в бот в Щелково";
			СтруктураСообщения.Вставить("text","[" + Строка + "]" + "(" + Контакты1.ТГЩелково + ")");
yispepotri; +1 Ответить
46. yispepotri 01.12.23 15:25 Сейчас в теме
(45)"&reply_markup=" + ТекстКнопок к общему запросу

ТекстКнопок = "
	|{
	|  ""inline_keyboard"": [
	|    [
	|      {
	|        ""text"": ""Нажми кнопку"",
	|        ""callback_data"": ""ОбработкаНажатияКнопки"",
	|        ""url"": ""Ссылка на какой-нибудь сайт""
	|      }
	|    ]
	|  ]
	|}
	|";	
Показать



и тут можно добавлять нужное количество кнопок
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот