Имя: Пароль:
1C
 
Отправка сообщения в телеграмм
0 vladnet
 
21.03.20
12:28
Подскажите в интернете полно кода для отправки в телеграмм:

&НаСервере
Процедура ОправитьНаСервере(ID, Token, ТекстСообщения, ПроксиСервер, ПроксиПорт, ПроксиПользователь, ПроксиПароль)
    Если НЕ ЗначениеЗаполнено(ТекстСообщения) Тогда Возврат; КонецЕсли;
    
    ИнтернетПрокси = Новый ИнтернетПрокси;
    ИнтернетПрокси.Установить("https", ПроксиСервер, ПроксиПорт, ПроксиПользователь, ПроксиПароль);
    
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(); //Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
    
    Соединение  =  Новый HTTPСоединение("api.telegram.org",443,,,ИнтернетПрокси,,ЗащищенноеСоединение, Ложь);
    
    Ресурс = "bot" + Token + "/sendMessage?chat_id=" + СтрЗаменить(Формат(ID, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text= " + ТекстСообщения;
    Запрос = Новый HTTPЗапрос(Ресурс);
    Ответ = Соединение.Получить(Запрос);    
    
    КодСостояния     = Ответ.КодСостояния;
    СтрокаОтвета     = Ответ.ПолучитьТелоКакСтроку();
    
    Если КодСостояния=200 тогда
        ЧтениеОтвета = Новый ЧтениеJSON;
        ЧтениеОтвета.УстановитьСтроку(СтрокаОтвета);
        РезультатСтруктура = ПрочитатьJSON(ЧтениеОтвета);
        Если РезультатСтруктура.ok = Истина Тогда
            СтруктураMessage = РезультатСтруктура.result;
        КонецЕсли;
    Иначе
        Сообщить("КодСостояния "+КодСостояния);
        Сообщить(СтрокаОтвета);
    КонецЕсли;
КонецПроцедуры

Но все время пишет:
Ошибка работы с Интернет:  Не могу установить соединение

Я уже и платный прокси купил. И проверил его - если подставлять в телегу на том же компьютере все работает прекрасно.

Что делаю не так?

пробовал и через

socks5://87.247.143.208

и через https просто
1 palsergeich
 
21.03.20
12:30
1C не умеет в носки.
2 palsergeich
 
21.03.20
12:30
"платный прокси купил" - в браузере просто телеграмм работает без плагинов?
3 palsergeich
 
21.03.20
12:34
Я уже после блокировки баловался - бесплатный ВПН и все работало
4 NorthWind
 
21.03.20
15:15
(3) +1. Или прова сменить на более пофигистичного.
5 GedKo
 
21.03.20
16:31
ИнтернетПрокси = Новый ИнтернетПрокси;
ИнтернетПрокси.Установить("https", "socks5://" + ПараметрыБота.АдресПрокси, ПараметрыБота.ПортПрокси, ПараметрыБота.ПользовательПрокси, ПараметрыБота.ПарольПрокси, Ложь);
        
Соединение  =  Новый HTTPСоединение(ПараметрыБота.Сервер, 443, , , ИнтернетПрокси, , Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос(Ресурс);
Запрос.УстановитьТелоИзСтроки(Ресурс);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
6 Garykom
 
гуру
21.03.20
18:31
(0) >Ресурс = "bot" + Token + "/sendMessage?chat_id=" +

Тут у тя явная ошибка

Ресурс должен начинаться с "/"

Ага https://tlgrm.ru/docs/bots/api

Ресурс = "/bot" + Token + "/sendMessage?chat_id=" +
7 palsergeich
 
21.03.20
19:58
(6) на сколько я помню там это не надо, движок сам разделитель пути воткнет.
Да и была бы ошибка 404, если дело было бы в этом
8 palsergeich
 
21.03.20
19:59
(5) 1с не умеет работать через socks5
9 GedKo
 
21.03.20
20:05
(8) это кусок кода из работающего проекта.
10 palsergeich
 
21.03.20
20:53
(9)  интересненько, надо будет попробовать
11 vladnet
 
23.03.20
12:30
Сегодня еще раз покопался во всем. Оказалось я неправильный chatid использовал, неправильно понимал что такое токен.
У меня получилось отправлять запросы через хром, используя прокси (через расширение хрома).

Но вот отправить через 1с так и не получилось ((

Кому интересно чат id получается так:
https://api.telegram.org/bot500232729:AAAwCACQ1ZXcF7SGcaG1WnhPMC1Wc6Ajd1o/getUpdates
Отдает строку, там можно выковырять

https://api.telegram.org/bot500232729:AAAwCACQ1ZXcF7SGcaG1WnhPMC1Wc6Ajd1o/sendMessage?chat_id=-1001138713717&text=testtexttesttexttesttext
А это строка с отправкой сообщения

Идентификатор чата и токен изменил (оставил чтобы было понятен формат)

(5) (6) Попробовал не получается. Что все таки не так делаю (

(9) Можно кусок побольше, я тут уже попробовал все что мог, не получается (((
12 vladnet
 
23.03.20
12:44
В общем получилось. Хз почему не получалось.
13 GedKo
 
23.03.20
12:44
//пример вызова: Обновления = ВыполнитьЗапрос("getUpdates");
Функция ВыполнитьЗапрос(Знач Ресурс)
   ПараметрыБота = ТелеграммБот_ПовтИсп.ПараметрыПодключения();

   Ресурс = СтрШаблон("bot%1/%2", ПараметрыБота.Токен, Ресурс);
   Ресурс = СтрЗаменить(Ресурс, Символы.ПС, "%0a");

   ИнтернетПрокси = Новый ИнтернетПрокси;
   ИнтернетПрокси.Установить("https", "socks5://" + ПараметрыБота.АдресПрокси, ПараметрыБота.ПортПрокси, ПараметрыБота.ПользовательПрокси, ПараметрыБота.ПарольПрокси, Ложь);
        
   Соединение  =  Новый HTTPСоединение(ПараметрыБота.Сервер, 443, , , ИнтернетПрокси, , Новый ЗащищенноеСоединениеOpenSSL());
   Запрос = Новый HTTPЗапрос(Ресурс);
   Запрос.УстановитьТелоИзСтроки(Ресурс);
   Ответ = Соединение.ОтправитьДляОбработки(Запрос);

   ЧтениеJSON = Новый ЧтениеJSON;
   ЧтениеJSON.ОткрытьПоток(Ответ.ПолучитьТелоКакПоток());
   ОбъектXDTO = ФабрикаXDTO.ПрочитатьJSON(ЧтениеJSON);

   Если Не ОбъектXDTO.ok Тогда
      ТекстСообщения = СтрШаблон("Код ошибки: %1.
         |Описание: %2.", ОбъектXDTO.error_code, ОбъектXDTO.description);
      ЗаписьЖурналаРегистрации("ТелеграммБотAPI.Выполнение запроса", УровеньЖурналаРегистрации.Ошибка, , , ТекстСообщения);
   КонецЕсли;
    
   Возврат ОбъектXDTO;
    
КонецФункции
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.