Читання повідомлень Телеграм бота засобами 1с

Читання повідомлень Телеграм бота засобами 1с

Функція яка повертає всі повідомлення, які користувач надіслав Телеграм боту.

Функція читає повідомлення (запити від користувачів) з каналу Телеграм бота та повертає їх у вигляді таблиці значень. Найкраще розмістити у загальний модуль.

Дані які приймає:
Токен - Токен телеграм бота.
ИДСообщения - ІД останнього отриманого повідомлення, потрібно, щоб кожен раз не перечитувати всі повідомлення від користувачів. Якщо значення НЕ порожнє, то читати починає від зазначеного. Краще зберігати десь у константі.

Колонки таблиці значень:
ИмяПользователя - Перше ім'я
ФамилияПользователя - Друге ім'я
ИДПользователя - ІД користувача який написав
ИДСообщения - ІД повідомлення
ТекстСообщения - Текст самого повідомлення
ЭтоБот - Істина якщо бот написав замість користувача

Функция ЧтениеСообщенийТелеграм(Токен, ИДСообщения = "") Экспорт
    
    ИмяФайла = ПолучитьИмяВременногоФайла("txt");
    
    Подключение = Новый HTTPСоединение("api.telegram.org", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
    
    Если ЗначениеЗаполнено(ИДСообщения) Тогда
        Ограничение = "?offset=" + Формат(ИДСообщения + 1, "ЧГ=");
    КонецЕсли;
    
    Запрос = Новый HTTPЗапрос("/bot" + Токен + "/getUpdates" + Ограничение);
    Подключение.Получить(Запрос, ИмяФайла);
    
    чтение = Новый ЧтениеJSON;
    чтение.ОткрытьФайл(ИмяФайла);
    данные = ПрочитатьJSON(чтение, ложь);
    
    Если НЕ данные.ok Тогда
        Возврат Неопределено;
    КонецЕсли;
    
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки("ИмяПользователя");
    ТЗ.Колонки("ФамилияПользователя");
    ТЗ.Колонки("ИДПользователя");
    ТЗ.Колонки("ИДСообщения");
    ТЗ.Колонки("ТекстСообщения");
    ТЗ.Колонки.Добавить("ЭтоБот");
    
    Для Каждого Сообщение Из данные.result Цикл
        
        СтрТЗ = ТЗ.Добавить();
        // Если сообщение было отредактировано
        Если Сообщение.Свойство("edited_message") Тогда
            СтрТЗ.ИмяПользователя = Сообщение.edited_message.from.first_name;
            СтрТЗ.ФамилияПользователя = Сообщение.edited_message.from.last_name;
            СтрТЗ.ИДПользователя = Формат(Сообщение.edited_message.from.id, "ЧГ=");
            СтрТЗ.ИДСообщения = Сообщение.update_id;
            СтрТЗ.ТекстСообщения = Сообщение.edited_message.text;
            СтрТЗ.ЭтоБот = Сообщение.edited_message.from.is_bot;
        Иначе  // Обычное сообщение
            СтрТЗ.ИмяПользователя = Сообщение.message.from.first_name;
            СтрТЗ.ФамилияПользователя = Сообщение.message.from.last_name;
            СтрТЗ.ИДПользователя = Формат(Сообщение.message.from.id, "ЧГ=");
            СтрТЗ.ИДСообщения = Сообщение.update_id;
            СтрТЗ.ТекстСообщения = Сообщение.message.text;
            СтрТЗ.ЭтоБот = Сообщение.message.from.is_bot;
        КонецЕсли;
        
    КонецЦикла;
    
    Возврат ТЗ;
    
КонецФункции



Теги:   


2023-02-05





Вибрати мову:
-  руский
-  Українська