Публикации

БСП
Разработки

Найдено публикаций: 4

stawen 53 3 1

Отправка сообщений от имени бота Telegram

Отправка сообщений от имени бота Telegram
stawen 53 3 1
Перем ТекстСообщения;
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
	КонецЕсли;
Иначе
	Сообщить("КодСостояния "+КодСостояния);
	Сообщить(СтрокаОтвета);
КонецЕсли;

Получение сообщений для бота Telegram

Получение сообщений для бота Telegram
stawen 53 3 1
Запрос=Новый 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
		КонецЦикла;
	КонецЕсли;
Иначе
	Сообщить("КодСостояния "+КодСостояния);
	Сообщить(СтрокаОтвета);
КонецЕсли;

POST-запрос к HTTP-серверу

POST-запрос к HTTP-серверу
stawen 53 3 1
ЗаписьXML=Новый ЗаписьXML(); 
ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();
Фабрика.ЗаписатьXML(ЗаписьXML, КонтрагентXDTO);//объект XDTO создан и заполнен ранее 

Заголовки=Новый Соответствие();
Заголовки.Вставить("Content-Type","application/xml");
Заголовки.Вставить("Accept","application/xml");

Запрос=Новый HTTPЗапрос();
Запрос.АдресРесурса="clients/add";
Запрос.Заголовки=Заголовки;
Запрос.УстановитьТелоИзСтроки(ЗаписьXML.Закрыть());

Соединение=Новый HTTPСоединение("api.yourserver.ru");//таким образом полный URL запроса http://api.yourserver.ru/clients/add
Ответ=Соединение.ОтправитьДляОбработки(Запрос);
КодСостояния=Ответ.КодСостояния;
СтрокаОтвета=Ответ.ПолучитьТелоКакСтроку();
Если КодСостояния=201 тогда
	ЧтениеXML=Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(СтрокаОтвета);
	Попытка
		СтатусРаботыXDTO=Фабрика.ПрочитатьXML(ЧтениеXML,ФабрикаXDTO.Тип("http://api.yourserver.ru/xdto","Status"));
	Исключение
		Сообщить(СформироватьСообщениеОбОшибке(ИнформацияОбОшибке()));
		Предупреждение("Сервер прислал плохие данные!");
		Возврат;
	КонецПопытки;
	//обработка объекта XDTO
Иначе
	//обработка ошибочных кодов
КонецЕсли;

GET-запрос к HTTP-серверу

GET-запрос к HTTP-серверу
stawen 53 3 1
Заголовки=Новый Соответствие();
Заголовки.Вставить("Content-Type","application/xml");
Заголовки.Вставить("Accept","application/xml");

Запрос=Новый HTTPЗапрос();
Запрос.АдресРесурса="clients/list";
Запрос.Заголовки=Заголовки;

Соединение=Новый HTTPСоединение("api.yourserver.ru");//таким образом полный URL запроса http://api.yourserver.ru/clients/list
Ответ=Соединение.Получить(Запрос);
КодСостояния=Ответ.КодСостояния;
СтрокаОтвета=Ответ.ПолучитьТелоКакСтроку();	

Если КодСостояния=200 тогда
	ЧтениеXML=Новый ЧтениеXML;
	ЧтениеXML.УстановитьСтроку(СтрокаОтвета);
	Попытка
		КонтрагентыСписокXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ФабрикаXDTO.Тип("http://api.yourserver.ru/xdto","ClientList"));
	Исключение
		Сообщить(СформироватьСообщениеОбОшибке(ИнформацияОбОшибке()));
		Предупреждение("Сервер прислал плохие данные!");
		Возврат;
	КонецПопытки;
	//обработка объекта XDTO	
Иначе
	//обработка ошибочных кодов
КонецЕсли;