Реализовал выбор способа получения обновлений в настройках
- Получение обновлений теперь выполняется через long polling (если не выбран вебхук) - Периодическая проверка обновлений с помощью фонового задания - Настройки позволяют переключаться между long polling и webhook для получения обновлений
This commit is contained in:
@@ -3,20 +3,20 @@
|
||||
// Получить обновления и обработать их по расписанию
|
||||
Процедура ПроверкаОбновленийПоРасписанию() Экспорт
|
||||
|
||||
// Проверка установлен ли вебхук
|
||||
Ответ = HttpОбщегоНазначенияВызовСервера.СтрокаJsonВОбъект(ТелеграмМетодыВызовСервера.GetWebhookInfo());
|
||||
Если Ответ["ok"] И ЗначениеЗаполнено(Ответ["result"]["url"]) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Ответ = ТелеграмМетодыВызовСервера.GetUpdates();
|
||||
Если Ответ <> Неопределено Тогда
|
||||
МассивСообщенийТелеграм = ТелеграмОбщегоНазначения.ОбновленияТелеграм(Ответ);
|
||||
Для каждого СообщениеТелеграм Из МассивСообщенийТелеграм Цикл
|
||||
ТелеграмОбщегоНазначения.СохранитьСообщениеВБазу(СообщениеТелеграм);
|
||||
ТелеграмМетодыВызовСервера.SendMessage(СообщениеТелеграм.ИдЧата, СообщениеТелеграм.Сообщение.text)
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
Пока Истина Цикл
|
||||
Если ПолучитьФункциональнуюОпцию("ТелеграмИспользоватьВебХук") Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
Ответ = ТелеграмМетодыВызовСервера.GetUpdates(30);
|
||||
Если Ответ.Успех Тогда
|
||||
БотОбщегоНазначения.ОбработкаКомандыБота(Ответ.Тело);
|
||||
Иначе
|
||||
Если СтрНайти(Ответ.Описание, "can't use getUpdates method while webhook is active") <> 0 Тогда
|
||||
ТелеграмМетодыВызовСервера.DeleteWebhook();
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
Reference in New Issue
Block a user