umbot
    Preparing search index...

    Класс, предназначенный для предварительной загрузки медиаресурсов (изображений, звуков) для различных платформ.

    Этот класс позволяет загрузить файлы на серверы платформ и закэшировать их токены до начала обработки пользовательских запросов, что помогает сократить время обработки пользовательского запроса при первичной отправке медиафайлов в ответе.

    // В точке входа приложения (например, index.ts)
    import { Preload } from 'umbot/preload';
    import { T_ALISA, T_VK, T_MARUSIA } from 'umbot/plugins';

    // Предположим, appContext уже инициализирован
    const preload = new Preload(appContext);

    // Загрузить изображения для Алисы и ВК
    // Для Алисы нужен skill_id навыка — API ресурсов адресуется по навыку
    const imagePromises = preload.loadImages(['/path/to/img1.jpg', '/path/to/img2.png'], [T_ALISA, T_VK], {
    alisaSkillId: 'ваш-skill-id',
    });
    // Загрузить звуки только для Маруси
    const soundPromises = preload.loadSounds(['/path/to/sound1.mp3'], [T_MARUSIA]);

    // Дождаться завершения (все операции уже запущены и выполняются параллельно)
    try {
    await Promise.all(imagePromises);
    console.log('Изображения предзагружены');
    await Promise.all(soundPromises);
    console.log('Звуки предзагружены');
    } catch (error) {
    console.error('Ошибка при предзагрузке:', error);
    }

    // Теперь приложение готово к работе, и первые вызовы с медиа будут быстрыми
    // (запуск бота выполняется вашим кодом, например bot.start('localhost', 3000))
    Index

    Constructors

    • Создает экземпляр класса Preload.

      Parameters

      • OptionalappContext: AppContext<IDatabaseInfo, unknown>

        Контекст приложения, необходимый для доступа к БД и конфигурации. Может быть установлен позже через setAppContext.

      Returns Preload

    Methods

    • Убирает Алису из списка платформ, если для неё не передан skill_id.

      Parameters

      • platforms: string[]

        Отфильтрованные платформы

      • Optionalopts: IOptions

        Опции предзагрузки

      Returns { alisaSkillId: string | null; platforms: string[] }

      Платформы для обработки и skill_id Алисы (если есть)

    • Возвращает внутренний тип изображения, используемый в ImageTokens, для указанной платформы.

      Parameters

      • platform: string

        Тип платформы.

      Returns string | undefined

      Тип изображения для ImageTokens или undefined для Viber/SmartApp (не требуют предзагрузки); для Telegram предзагрузка требует отправки файла пользователю (см. telegramUseId).

    • Возвращает список платформ, для которых в конфигурации AppContext указаны токены. Если передан массив platforms, результат фильтруется по этому списку.

      Parameters

      • Optionalplatforms: string[]

        Массив типов платформ для фильтрации.

      Returns string[]

      Массив доступных платформ.

    • Возвращает внутренний тип звука, используемый в SoundTokens, для указанной платформы.

      Parameters

      • platform: string

        Тип платформы.

      Returns string | undefined

      Тип звука для SoundTokens или undefined, если платформа не поддерживается. Для Telegram предзагрузка требует отправки файла пользователю (см. telegramUseId).

    • Проверяет, можно ли работать с ресурсами Алисы, и передаёт skill_id в контроллер предзагрузки (его читают процессоры карточек и звуков Алисы).

      Parameters

      • Optionalopts: IOptions

        Опции предзагрузки

      Returns string | null

      skill_id навыка либо null, если он не передан (с предупреждением)

    • Подготавливает промисы для загрузки и кэширования изображений для указанных платформ.

      Метод сразу запускает операции загрузки и возвращает массив уже выполняющихся промисов; вызовите Promise.all() или Promise.allSettled(), чтобы дождаться завершения и обработать ошибки.

      Parameters

      • images: string[]

        Массив путей к файлам изображений для загрузки.

      • Optionalplatforms: string[]

        Массив типов платформ для фильтрации. Если не указан, обрабатываются все доступные.

      • Optionalopts: IOptions

        Дополнительные опции для загрузки: telegramUseId — в Telegram токен не получить без отправки файла пользователю, файл уйдёт указанному пользователю; alisaSkillId — обязателен для Алисы (без него Алиса пропускается).

      Returns Promise<string | null>[]

      Массив промисов, каждый из которых разрешается токеном изображения или null в случае ошибки загрузки. Для неподдерживаемых платформ промис в массив не попадает вовсе.

    • Подготавливает промисы для загрузки и кэширования звуков для указанных платформ.

      Метод сразу запускает операции загрузки и возвращает массив уже выполняющихся промисов; вызовите Promise.all() или Promise.allSettled(), чтобы дождаться завершения и обработать ошибки.

      Parameters

      • sounds: string[]

        Массив путей к файлам звуков для загрузки.

      • Optionalplatforms: string[]

        Массив типов платформ для фильтрации. Если не указан, обрабатываются все доступные.

      • Optionalopts: IOptions

        Дополнительные опции для загрузки: telegramUseId — в Telegram токен не получить без отправки файла пользователю, файл уйдёт указанному пользователю; alisaSkillId — обязателен для Алисы (без него Алиса пропускается).

      Returns Promise<string | null>[]

      Массив промисов, каждый из которых разрешается токеном звука или null в случае ошибки загрузки. Для неподдерживаемых платформ промис в массив не попадает вовсе.

    • Подготавливает промисы для удаления изображений с серверов платформ и из базы данных.

      Метод сразу запускает операции удаления и возвращает массив уже выполняющихся промисов; вызовите Promise.all() или Promise.allSettled(), чтобы дождаться завершения и обработать ошибки.

      Parameters

      • images: string[]

        Массив путей к файлам изображений для удаления.

      • Optionalplatforms: string[]

        Массив типов платформ для фильтрации. Если не указан, обрабатываются все доступные.

      • Optionalopts: IOptions

        Дополнительные опции. Для Алисы обязателен alisaSkillId — без него Алиса пропускается.

      Returns Promise<boolean>[]

      Массив промисов. Промис разрешается true, если процедура завершилась без исключения (включая случай, когда записи нет или платформа не поддерживает удаление — удаление реализовано только для Алисы и Маруси), и false при ошибке.

      import { T_ALISA } from 'umbot/plugins';

      // Промисы уже запущены — дождаться завершения
      await Promise.all(
      preload.removeImages(['./media/old.png'], [T_ALISA], { alisaSkillId: 'xxxx-xxxx' }),
      );
    • Подготавливает промисы для удаления звуков с серверов платформ и из базы данных.

      Метод сразу запускает операции удаления и возвращает массив уже выполняющихся промисов; вызовите Promise.all() или Promise.allSettled(), чтобы дождаться завершения и обработать ошибки.

      Parameters

      • sounds: string[]

        Массив путей к файлам звуков для удаления.

      • Optionalplatforms: string[]

        Массив типов платформ для фильтрации. Если не указан, обрабатываются все доступные.

      • Optionalopts: IOptions

        Дополнительные опции. Для Алисы обязателен alisaSkillId — без него Алиса пропускается.

      Returns Promise<boolean>[]

      Массив промисов. Промис разрешается true, если процедура завершилась без исключения (включая случай, когда записи нет или платформа не поддерживает удаление — удаление реализовано только для Алисы и Маруси), и false при ошибке.