Имя: Пароль:
1C
1С v8
Система взаимодействия отправка сообщений в телеграм программно
0 arbate34
 
31.07.23
09:14
Вводные:
Система взаимодействия включена и работает;
Бот создан - работает;
Интеграция включена и работает.

Проблема:
Если руками, из приложения писать в обсуждение, созданное сообщением из телеги, то сообщения уходят в телегу;
Но когда генерирую сообщение в программе и отправляю туда же, то сообщение в приложении появляется, а в телеге его нету.

Код:
Процедура ОтправитьУведомление(Получатель, Тема, ТекстСообщения)
    ИДОСВ = Новый ИдентификаторОбсужденияСистемыВзаимодействия("8a907721-dc87-444d-a2f1-9642b3e941bd");    
    Обсуждение = СистемаВзаимодействия.ПолучитьОбсуждение(ИДОСВ);
    Участники = Обсуждение.Участники;
    Сообщение = СистемаВзаимодействия.СоздатьСообщение(Обсуждение.Идентификатор);
    ОтправляемыйТекст = Тема + Символы.ПС + ТекстСообщения;
    Для Каждого Участник ИЗ Участники Цикл
        Сообщение.Получатели.Добавить(Участник);
    КонецЦикла;
    Сообщение.Текст = Новый ФорматированнаяСтрока(ОтправляемыйТекст);
    Сообщение.Записать();    
КонецПроцедуры
1 Tatitutu
 
31.07.23
09:26
"Проблема:
Если руками, из приложения писать в обсуждение, созданное сообщением из телеги, то сообщения уходят в телегу;
Но когда генерирую сообщение в программе и отправляю туда же, то сообщение в приложении появляется, а в телеге его нету"

По всеобщему мнению:
Это правило _
бот не умеем читать сообщения бота.

"сколько интересных идей было разбито об данный шаблон"

Я тоже с этим столкнулся, искал помощи и решения - не нашёл.
Но, мысль покоя не давала и я нашёл решение.
Скоро презентация!
2 arbate34
 
31.07.23
13:48
Решил попробовать через api
снова проблема:
&НаСервере
Процедура ОтправитьЗапросНаСервере()
    ТокенТГ = Константы.ТокенТГ.Получить();
    
    СоединениеHTTP = Новый HTTPСоединение("api.telegram.org",443,,,,,Новый ЗащищенноеСоединениеOpenSSL(),);
    
    ЗапросHTTP = Новый HTTPЗапрос;
    ЗапросHTTP.Заголовки.Вставить("Content-type", "application/json");
    ЗапросHTTP.АдресРесурса = "bot" + ТокенТГ + "/" + "getUpdates";
    
    ОтветHTTP = СоединениеHTTP.Получить(ЗапросHTTP);
    
    Если ОтветHTTP.КодСостояния = 200 Тогда
        РезультатЗапроса = ОтветHTTP.ПолучитьТелоКакСтроку();
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ОтправитьЗапрос(Команда)
    ОтправитьЗапросНаСервере();
КонецПроцедуры

Выдаёт ошибку:
{ОбщаяФорма.ПодключениеПользователяТелеграм.Форма(12)}: Ошибка при вызове метода контекста (Получить)
    ОтветHTTP = СоединениеHTTP.Получить(ЗапросHTTP);
по причине:
Ошибка работы с Интернет:  Couldn't resolve host name

по причине:
Ошибка работы с Интернет:  Couldn't resolve host name

Делаю всё по видео инструкции, которой чуть больше месяца. Там работает, а у меня вот.
3 vova1122
 
31.07.23
15:03
Сервер = "api.telegram.org";
        Ресурс= "bot" + Токен + "/getUpdates";
    Соединение  =  Новый HTTPСоединение(Сервер,443,,,,5,Новый ЗащищенноеСоединениеOpenSSL());
    Запрос = Новый HTTPЗапрос(Ресурс);
    
    Ответ = Соединение.Получить(Запрос);
    ДвоичныеДанныеОтвета = Ответ.ПолучитьТелоКакДвоичныеДанные();
    ДвоичныеДанныеОтвета.Записать("C:\Телеграм\sss1.txt");
4 vova1122
 
31.07.23
15:08
Кстати Телеграм не понимает Символы.ПС
Поэтому нужно сделать:
ТекстСообщения=СтрЗаменить(ТекстСообщения,Символы.ПС,"%0A");
5 Tatitutu
 
31.07.23
20:52
(4) а, Телеграмм об этом знает?
6 arbate34
 
01.08.23
08:56
(3) Сервер = "api.telegram.org";
        Ресурс= "bot" + ТокенТГ + "/getUpdates";
    Соединение  =  Новый HTTPСоединение(Сервер,443,,,,5,Новый ЗащищенноеСоединениеOpenSSL());
    Запрос = Новый HTTPЗапрос(Ресурс);
    
    Ответ = Соединение.Получить(Запрос);

Тоже выдаёт ошибку:
{ОбщаяФорма.ПодключениеПользователяТелеграм.Форма(12)}: Ошибка при вызове метода контекста (Получить)
    ОтветHTTP = СоединениеHTTP.Получить(ЗапросHTTP);
по причине:
Ошибка работы с Интернет:  Couldn't resolve host name

по причине:
Ошибка работы с Интернет:  Couldn't resolve host name
7 arbate34
 
01.08.23
08:59
Может у меня с платформой что то не то?
Запрос, например. отправляется не в кодировке UTF-8

если я просто в браузере делаю запрос, ответ "Ок" = True...
8 arbate34
 
01.08.23
09:03
Может в конфигурации что-нибудь должно быть?
Конфигурация само написанная без БСП.
9 vova1122
 
01.08.23
09:17
(5) когда я писал примерно 5 лет назад - телеграм этого незнал. Теперь оказывается уже знает
(8) Ничего дополнительно не нужно. У меня на древней 8.3.11 работает (также простенькая самописка без наворотов)
10 arbate34
 
01.08.23
09:22
(9) что-же тогда может быть не так, я прямо скопировал ваш листинг из (3)
11 vova1122
 
01.08.23
09:28
(10) в коде один текст, в ошибке другой текст (6). Точно в нужном месте поменяли?
12 vova1122
 
01.08.23
09:34
Еще попробовать ТокенТГ не брать из Константы, а тупо прописать именно в этом коде
ТокенТГ="tyjtuj77777jjjjjjj7jh65h";
13 arbate34
 
01.08.23
09:35
(11) Текст ошибки с (2) взял.
Суть та же была, переменная "ОтветHTTP" стала "Ответ"
14 arsik
 
01.08.23
09:36
У него же четко пишется - на днс сервере не найдено имя api.telegram.org.
15 vova1122
 
01.08.23
09:37
(14) тут я пас
16 arbate34
 
01.08.23
09:38
(12) Тоже самое
(14) И что делать? Провайдеру вопрос задавать? типа всё ещё телега заблокирована?
17 arbate34
 
01.08.23
09:39
(14) Но я с того же компа в браузере делаю запрос, и получаю положительный ответ
18 arsik
 
01.08.23
09:39
Может и сообщения в телеграмм не уходят по этому же.
У тебя на сервере, где 1с развернута недоступен api.telegram.org или просто сервер приложения не имеет доступ наружу.
Возможно когда ручками пишем в систему взаимодействия - это через клиента уходит, а через код то все происходит в контексте сервера. Сервер взаимодействия доступен а телеграм нет.
19 arsik
 
01.08.23
09:40
(17) С какого - с того же?
20 vova1122
 
01.08.23
09:41
Попробуй ping api.telegram.org
проходит или нет?
21 arsik
 
01.08.23
09:41
(16) Да там дохуя может быть проблем:
настойки фаервола
настройки днс
может где то прокси прописан
может домен у вас криво настроен
22 arsik
 
01.08.23
09:42
(20) Так это с клиента и ни очем не скажет. Нужно от сервера взаимодействия и от сервера 1С это делать
23 arbate34
 
01.08.23
09:44
(19) с сервера где эта база
(20) Кстати да, там не проходит, а на моём локальном проходит.
Наводку понял, буду разбираться. Спасибо.
24 arbate34
 
03.08.23
09:05
ИТОГО:

Через api не работало, потому что были проблемы с настойками DNS. Устранено. И теперь через api приём и отправка сообщений работает.

Потом, в свободное время, буду экспериментировать с СВ.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.