Цей розділ знаходиться на стадії тестування!

Читання повідомлень Телеграм бота засобами 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




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