Получение сообщений для бота Telegram (Источник)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | Запрос=Новый HTTPЗапрос(); Запрос.АдресРесурса=Константы.token.Получить()+"/getUpdates"; Запрос.Заголовки=Новый Соответствие(); Соединение=Новый HTTPСоединение("api.telegram.org",,,,,5,Новый ЗащищенноеСоединениеOpenSSL); update_id=Константы.update_id.Получить(); Если ЗначениеЗаполнено(update_id) тогда ТекстЗапроса="&offset="+Формат(update_id+1,"ЧГ="); Запрос.Заголовки.Вставить("Content-Type","application/x-www-form-urlencoded"); Запрос.УстановитьТелоИзСтроки(ТекстЗапроса); Ответ=Соединение.ОтправитьДляОбработки(Запрос);//POST //то же самое GET-запросом //Запрос.АдресРесурса=Запрос.АдресРесурса+"?offset="+Формат(update_id+1,"ЧГ="); //Ответ=Соединение.Получить(Запрос);//GET Иначе Ответ=Соединение.Получить(Запрос);//GET КонецЕсли; КодСостояния=Ответ.КодСостояния; СтрокаОтвета=Ответ.ПолучитьТелоКакСтроку(); Если КодСостояния=200 тогда ЧтениеОтвета=Новый ЧтениеJSON; ЧтениеОтвета.УстановитьСтроку(СтрокаОтвета); РезультатСтруктура=ПрочитатьJSON(ЧтениеОтвета); Если РезультатСтруктура.ok=Истина тогда Для сч=1 по РезультатСтруктура.result.Количество() цикл ОбъектUpdate=РезультатСтруктура.result[сч-1]; Константы.update_id.Установить(ОбъектUpdate.update_id); СтруктураMessage=ОбъектUpdate.message; //СтруктураMessage это обычная Структура //описание объекта Message тут https://core.telegram.org/bots/api#message КонецЦикла; КонецЕсли; Иначе Сообщить("КодСостояния "+КодСостояния); Сообщить(СтрокаОтвета); КонецЕсли; |
Отправка сообщений от имени бота Telegram (Источник)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | Перем ТекстСообщения; chat_id=ЭлементыФормы.СправочникСписок.ТекущиеДанные.chat.id; //chat_id это идентификатор диалога, //в переменной хранится id пользователя (объект User) с которым ведётся диалог //https://core.telegram.org/bots/api#user ВвестиСтроку(ТекстСообщения); Если НЕ ЗначениеЗаполнено(ТекстСообщения) тогда возврат конецесли; Запрос=Новый HTTPЗапрос(); Запрос.АдресРесурса=Константы.token.Получить()+"/sendMessage"; Запрос.Заголовки=Новый Соответствие(); Соединение = Новый HTTPСоединение("api.telegram.org",,,,,5,Новый ЗащищенноеСоединениеOpenSSL); ТекстЗапроса=""; ТекстЗапроса=ТекстЗапроса+"&chat_id="+Формат(chat_id,"ЧГ="); ТекстЗапроса=ТекстЗапроса+"&text="+КодироватьСтроку(ТекстСообщения,СпособКодированияСтроки.КодировкаURL); //КодироватьСтроку() отсутствует в 8.2 ищите сами как сделать url encode Запрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded"); Запрос.УстановитьТелоИзСтроки(ТекстЗапроса); Ответ=Соединение.ОтправитьДляОбработки(Запрос);//POST КодСостояния=Ответ.КодСостояния; СтрокаОтвета=Ответ.ПолучитьТелоКакСтроку(); Если КодСостояния=200 тогда ЧтениеОтвета=Новый ЧтениеJSON; ЧтениеОтвета.УстановитьСтроку(СтрокаОтвета); РезультатСтруктура=ПрочитатьJSON(ЧтениеОтвета); Если РезультатСтруктура.ok=Истина тогда СтруктураMessage=РезультатСтруктура.result; //СтруктураMessage это обычная Структура //сервер возвращает нам наше сообщение упакованое в объект Message //описание объекта Message тут https://core.telegram.org/bots/api#message КонецЕсли; Иначе Сообщить("КодСостояния "+КодСостояния); Сообщить(СтрокаОтвета); КонецЕсли; |