Главное, что нужно понимать, - перехватить сообщение обсуждения системы взаимодействия 1С можно только с помощью обработчика, который ожидает событие отправки сообщения:
СистемаВзаимодействия.ПодключитьОбработчикПослеОтправкиСообщения(ОписаниеОповещения)
В данном примере делаем на форме документа "Заказ клиента".
Предварительно создаём реквизит "расш_TelegramID" у справочника "Пользователи". Его нужно вывести на форме элемента справочника "Пользователи".
По-хорошему, процедуру, отправляющую сообщения в Telegram, нужно разместить в общем модуле.
А токен Telegram бота организации хранить в регистре сведений.
Я сделал всё прямо на форме документа, потому что моя конкретная задача вряд ли когда-нибудь будет масштабироваться.
На форме документа создаём следующий код:
&НаКлиенте
Процедура расш_ПриОткрытииПосле(Отказ)
расш_ПерехватитьСообщениеОбсуждения();
КонецПроцедуры
&НаКлиенте
Процедура расш_ПерехватитьСообщениеОбсуждения() Экспорт
расш_оп_ОбработкаОтправкиСообщения = Новый ОписаниеОповещения("расш_ОбработкаОтправкиСообщения", ЭтотОбъект);
СистемаВзаимодействия.ПодключитьОбработчикПослеОтправкиСообщения(расш_оп_ОбработкаОтправкиСообщения);
КонецПроцедуры
&НаКлиенте
Процедура расш_ОбработкаОтправкиСообщения(расш_Сообщение, расш_Обсуждение, расш_ДопПараметры) Экспорт
СписокПолучателей = Новый СписокЗначений;
Для каждого ТекПолучатель Из расш_Сообщение.Получатели Цикл
СписокПолучателей.Добавить(ТекПолучатель);
КонецЦикла;
расш_ОтправитьСообщениеTelegram(расш_Обсуждение.Заголовок, расш_Сообщение.Текст, СписокПолучателей);
КонецПроцедуры
&НаСервере
Процедура расш_ОтправитьСообщениеTelegram(Заголовок, ТекстСообщения, СписокПолучателей) Экспорт
ТекстДляОтправки = Заголовок + Символы.ПС + ТекстСообщения;
Для каждого ТекПолучатель Из СписокПолучателей Цикл
ИдентификаторПользователяИБ = СистемаВзаимодействия.ПолучитьИдентификаторПользователяИнформационнойБазы(ТекПолучатель.Значение);
UserTelegramID = расш_ПолучитьTelegramID(ИдентификаторПользователяИБ);
Если ЗначениеЗаполнено(UserTelegramID) Тогда
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
TokenTelegram = "9999999999:F4OMATVxAAEB4WC_GTaPsBqcHGPH40T0bQk";
ТекстЗапросаHTTP = "bot" + TokenTelegram + "/sendMessage?chat_id=" + СтрЗаменить(Формат(UserTelegramID, "ЧДЦ=; ЧС=; ЧРГ=."), ".", "") + "&text=" + ТекстДляОтправки;
Соединение = Новый HTTPСоединение("api.telegram.org",443,,,,,ЗащищенноеСоединение);
ЗапросHTTP = Новый HTTPЗапрос(ТекстЗапросаHTTP);
ОтветHTTP = Соединение.Получить(ЗапросHTTP);
Если ОтветHTTP.КодСостояния = 200 Тогда
Тест = 1;
Иначе
Тест = 2;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция расш_ПолучитьTelegramID(ИдентификаторПользователяИБ)
TelegramID = "";
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Пользователи.Ссылка КАК Ссылка,
| Пользователи.ИдентификаторПользователяИБ КАК ИдентификаторПользователяИБ,
| Пользователи.расш_TelegramID КАК TelegramID
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.ИдентификаторПользователяИБ = &ИдентификаторПользователяИБ";
Запрос.УстановитьПараметр("ИдентификаторПользователяИБ", ИдентификаторПользователяИБ);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
TelegramID = Выборка.TelegramID;
КонецЕсли;
Возврат TelegramID;
КонецФункции